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

时间:2017-04-24 11:39:29

标签: filter tensorflow deep-learning convolution

在用于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)
  • 我不确定差异?
  • 我知道如果我想使用特殊过滤器,我应该使用第一个,对吧?但还有什么?特别是关于产出?

谢谢

2 个答案:

答案 0 :(得分:15)

tf.contrib.layers.conv2d(...)是TensorFlow提供的核心低级卷积功能。 tf.layers.conv2d是围绕核心TensorFlow的更高级API构建的一部分。

请注意,在当前的TensorFlow版本中,部分图层现在也处于核心状态,例如tf.nn.conv2d

差别很简单,tf.layers.conv2d是一个op,它会进行卷积,而不是其他任何东西。 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) 做得更多,例如它还为内核和偏见创建变量。

查看使用Tensorflow核心(here)的CNN上的Tensorflow教程。使用低级API,卷积层的创建方式如下:

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

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

tf.layers.conv2d

不知道您的使用案例:您很可能想要使用hosts:

答案 1 :(得分:0)

在 Tensorflow 2.x 中 tf.keras.layers.Conv2Dtf.keras.layers.Convolution2D 之间没有区别。 Here's the link for the illustration

在 tensorflow 2.x 中,kerastensorflow 中的 API