繁体   English   中英

为什么conv2d层需要ndim = 4输入?

[英]Why is the conv2d layer requiring a ndim=4 input?

我想在我的网络中使用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]*

这是卷积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”。 你可以在这里找到更多。 以下代码显示具有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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM