tensorflow學習:tf.nn.conv2d 和 tf.layers.conv2d
看了很多tensorflow卷積的例子,有的用了tf.nn.conv2d,有的用了tf.layers.conv2d,那麼這兩個究竟有啥不同呢?
tf.layers.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=init_ops.zeros_initializer(),
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None, trainable=True,
name=None, reuse=None)
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)
對於卷積來說,作用是一樣的。tf.layers.conv2d 使用tf.nn.convolution作為後端。
一個引數要注意一下:
filter: 是一個4維張量,其type必須和輸入一樣,
[filter_height, filter_width, in_channels, out_channels
] filters:一個整數,輸出空間的維度,也就是卷積核的數量。 tf.layers.conv2d引數豐富,一般用於從頭訓練一個模型。 tf.nn.conv2d,一般在下載預訓練好的模型時使用。 所以,喜歡哪個就用哪個咯。