tf.nn.conv2d(...) 是 TensorFlow 提供的核心低级卷积功能。 tf.contrib.layers.conv2d(...) 是围绕 core-TensorFlow 构建的更高级别 API 的一部分。
请注意,在当前的 TensorFlow 版本中,部分层现在也在核心中,例如tf.layers.conv2d.
区别很简单,tf.nn.conv2d 是一个运算,只做卷积,没有别的。 tf.layers.conv2d 做得更多,例如它还为内核和偏差创建变量。
查看使用 Tensorflow 核心 (here) 的 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 层教程 (here) 进行比较。使用 TF 层,卷积层的创建方式如下:
conv1 = tf.layers.conv2d(
inputs=input_layer,
filters=32,
kernel_size=[5, 5],
padding="same",
activation=tf.nn.relu)
在不知道您的用例的情况下:您很可能想使用tf.layers.conv2d。