簡體   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