根据ussage,在tensorflow中卷积2d和conv2d之间的差异

Ses*_*oin 5 filter convolution deep-learning tensorflow

在用于2D卷积的TensorFlow中,我们有:

tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None,
             data_format=None, name=None) 
Run Code Online (Sandbox Code Playgroud)

tf.contrib.layers.convolution2d(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
  • 我不确定差异?
  • 我知道如果我想使用特殊的过滤器,我应该使用第一个,对吗?但还有什么?特别是关于产出?

谢谢

the*_*eck 15

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)
Run Code Online (Sandbox Code Playgroud)

将其与CNN的TF层教程(此处)进行比较.使用TF图层卷积层创建如下:

conv1 = tf.layers.conv2d(
  inputs=input_layer,
  filters=32,
  kernel_size=[5, 5],
  padding="same",
  activation=tf.nn.relu)
Run Code Online (Sandbox Code Playgroud)

不知道你的用例:你很可能想要使用tf.layers.conv2d.