我想在我的网络中使用2D卷积层,并希望输入图片。所以我有一批图片,表示ndim = 3矩阵, 例如:
我输入的尺寸:
[10, 6, 7]
10
的值是batch size
,另外两个值是图像大小。那么conv 2d层需要的第四个维度是什么?
这是有趣的代码行:
self.state_size = [6, 7]
self.inputs_ = tf.placeholder(tf.float32, shape=[None, *self.state_size], name="inputs_")
# Conv2D layer 1
self.conv1 = tf.layers.conv2d(inputs = self.inputs_,
filters = 4,
kernel_size = [4, 4],
strides = [1, 1],
kernel_initializer=tf.contrib.layers.xavier_initializer_conv2d())
这是我得到的错误:
Input 0 of layer conv2d_1 is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: [None, 6, 7]*
答案 0 :(得分:2)
以下是卷积2D层输入张量的尺寸的简短说明。
tensor_shape = (BATCH_SIZE, WIDTH, HEIGHT, CHANNELS).
第四个维度是“通道(颜色)”维度。
好的答案是:
卷积2D层期望输入具有四个维度。张量流中有两种图像张量格式。
1。 channels_last(NHWC)-尺寸按(BATCH_SIZE, HEIGHT, WIDTH, CHANNEL)
排序。
2。 channels_first(NCHW)-尺寸按BATCH_SIZE, CHANNELS, HEIGHT, WIDTH)
排序。
在tensorflow(可能在其他机器学习库中)中,一旦定义了模型,就有两个选项可以将数据输入模型。第一种选择是一次馈送数据点。第二个选项是一次向模型提供N
个数据点。这可能是由于批次大小尺寸
此尺寸指定图像的宽度。
此尺寸指定图像的高度
RGB图像中的通道尺寸是RGB值尺寸。
要指定输入图像的数据格式,张量conv2d层接受data_format参数。默认值为“ channels_last”。您可以找到更多here。 以下代码显示了具有channals_last数据格式的输入
inputs_ = tf.placeholder(tf.float32, [None, 32, 32, 3])
conv1 = tf.layers.conv2d(inputs_,32, (3, 3), data_format="channals_last")
首先进入渠道
conv1 = tf.layers.conv2d(inputs_,32, (3, 3), data_format="channels_first")