为什么 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]*
这里是关于卷积二维层的输入张量维度的简短解释。
tensor_shape = (BATCH_SIZE, WIDTH, HEIGHT, CHANNELS).
第四个维度是通道(颜色)维度。
长答案是:
卷积 2D 层期望输入具有四个维度。 tensorflow 中有两种图像张量格式。
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 argument.The 默认值为“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")
我想在我的网络中使用 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]*
这里是关于卷积二维层的输入张量维度的简短解释。
tensor_shape = (BATCH_SIZE, WIDTH, HEIGHT, CHANNELS).
第四个维度是通道(颜色)维度。
长答案是:
卷积 2D 层期望输入具有四个维度。 tensorflow 中有两种图像张量格式。
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 argument.The 默认值为“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")