作者:小哥 | 来源:互联网 | 2023-02-05 18:48
在用于2D卷积的TensorFlow中,我们有:
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None,
data_format=None, name=None)
和
tf.contrib.layers.convolution2d(*args, **kwargs)
我不确定差异?
我知道如果我想使用特殊的过滤器,我应该使用第一个,对吗?但还有什么?特别是关于产出?
谢谢
1> thertweck..:
tf.nn.conv2d(...)
是TensorFlow提供的核心低级卷积功能.tf.contrib.layers.conv2d(...)
是围绕core-TensorFlow的更高级API构建的一部分.
请注意,在当前的TensorFlow版本中,部分图层现在也处于核心状态,例如tf.layers.conv2d
.
差别很简单,那tf.nn.conv2d
就是一个操作卷积的操作,没有别的.tf.layers.conv2d
做得更多,例如,它还为内核创建变量,并为其他事物创建偏差.
查看使用Tensorflow核心的CNN上的Tensorflow教程(此处).使用低级API,卷积层的创建方式如下:
def conv2d(x, W):
return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
W_conv1 = weight_variable([5, 5, 1, 32])
b_conv1 = bias_variable([32])
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
将其与CNN的TF层教程(此处)进行比较.使用TF图层卷积层创建如下:
conv1 = tf.layers.conv2d(
inputs=input_layer,
filters=32,
kernel_size=[5, 5],
padding="same",
activation=tf.nn.relu)
不知道你的用例:你很可能想要使用tf.layers.conv2d
.