tf.nn.conv2d 与tf.layers.conv2d的区别
1. tf.nn.conv2d
tf.nn.conv2d(input, # 張量輸入filter, # 卷積核參數(shù)strides, # 步長參數(shù)padding, # 卷積方式use_cudnn_on_gpu=None, # 是否是gpu加速data_format=None, # 數(shù)據(jù)格式,與步長參數(shù)配合,決定移動方式name=None): # 名字,用于tensorboard圖形顯示時使用關鍵參數(shù)如下
input.shape=[batch, in_height, in_width, in_channels]
filter.shape= [filter_height, filter_width, in_channels, out_channels ]
strides = [1, stride, stride, 1].
必須滿足strides[0] = strides[3] = 1.
在大多數(shù)情況下 strides = [1, stride, stride, 1].
2. tf.layers.conv2d
這是tensorflow 更高一級的api,和keras.layer類似
conv2d(inputs, filters, kernel_size, strides=(1, 1), padding='valid', data_format='channels_last', dilation_rate=(1, 1),activation=None, use_bias=True, kernel_initializer=None,bias_initializer=<tensorflow.python.ops.init_ops.Zeros object at 0x000002596A1FD898>, kernel_regularizer=None,bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None, trainable=True, name=None,reuse=None)- input 和tf.nn.conv2d 一樣,必須是4維張量,input.shape=[batch, in_height, in_width, in_channels]
- filters:整數(shù),表示輸出空間的維數(shù)(即卷積過濾器的數(shù)量),對應于tf.nn.conv2d中的out_channels
- kernel_size:一個整數(shù),或者包含了兩個整數(shù)的元組/隊列,表示卷積窗的高和寬。如果是一個整數(shù),則寬高相等。 對應于tf.nn.conv2d中的(filter_height, filter_width)
2. keras.layers.conv2d
keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)filters:卷積核的數(shù)目(即輸出的維度)
kernel_size:單個整數(shù)或由兩個整數(shù)構成的list/tuple,卷積核的寬度和長度。如為單個整數(shù),則表示在各個空間維度的相同長度。
strides:單個整數(shù)或由兩個整數(shù)構成的list/tuple,為卷積的步長。如為單個整數(shù),則表示在各個空間維度的相同步長。任何不為1的strides均與任何不為1的dilation_rate均不兼容
padding:補0策略,為“valid”, “same” 。“valid”代表只進行有效的卷積,即對邊界數(shù)據(jù)不處理。“same”代表保留邊界處的卷積結果,通常會導致輸出shape與輸入shape相同。
activation:激活函數(shù),為預定義的激活函數(shù)名(參考激活函數(shù)),或逐元素(element-wise)的Theano函數(shù)。如果不指定該參數(shù),將不會使用任何激活函數(shù)(即使用線性激活函數(shù):a(x)=x)
dilation_rate:單個整數(shù)或由兩個個整數(shù)構成的list/tuple,指定dilated convolution中的膨脹比例。任何不為1的dilation_rate均與任何不為1的strides均不兼容。
data_format:字符串,“channels_first”或“channels_last”之一,代表圖像的通道維的位置。該參數(shù)是Keras 1.x中的image_dim_ordering,“channels_last”對應原本的“tf”,“channels_first”對應原本的“th”。以128x128的RGB圖像為例,“channels_first”應將數(shù)據(jù)組織為(3,128,128),而“channels_last”應將數(shù)據(jù)組織為(128,128,3)。該參數(shù)的默認值是~/.keras/keras.json中設置的值,若從未設置過,則為“channels_last”。
use_bias:布爾值,是否使用偏置項
kernel_initializer:權值初始化方法,為預定義初始化方法名的字符串,或用于初始化權重的初始化器。參考initializers
bias_initializer:權值初始化方法,為預定義初始化方法名的字符串,或用于初始化權重的初始化器。參考initializers
kernel_regularizer:施加在權重上的正則項,為Regularizer對象
bias_regularizer:施加在偏置向量上的正則項,為Regularizer對象
activity_regularizer:施加在輸出上的正則項,為Regularizer對象
kernel_constraints:施加在權重上的約束項,為Constraints對象
bias_constraints:施加在偏置上的約束項,為Constraints對象
總結
以上是生活随笔為你收集整理的tf.nn.conv2d 与tf.layers.conv2d的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tf.layers
- 下一篇: sklearn onehot