簡體   English   中英

基於 2D CNN 的網絡的合適輸入形狀是什么?

[英]What is the appropriate input shape for a 2D CNN-based network?

我無法將適當的輸入形狀傳遞給具有 Conv2D 層的基於 CNN 的網絡。 最初,這些是我的火車形狀。 我的火車數據被重塑為 windows:

X_train: (7,100,5185)= (number of features, window size, number of windows)

y_train= (5185, 100 ) = one labeled column that is also windowed

然后我根據這些數據計算一些遞歸圖,然后我將有這些形狀:

X_train_rp= (5185, 100,100, 7), 100 * 100 referring to my images

y_train = (5185, 100 ), remains unchanged

我將這兩個傳遞給基於 conv2D 的 CNN:

model.add(layers.Conv2D(64, kernel_size=3, activation='relu', input_shape=(100, 100, 7)))

我收到此錯誤: Data cardinality is ambiguous: x sizes: 100, 100, 100......... y sizes: 5185 Make sure all arrays contain the same number of samples.

我嘗試了許多形狀組合但徒勞無功? 我究竟做錯了什么??

從使用的模塊別名來看,我假設您使用 tensorflow keras package 和順序 Z20F35E630DAF49DFCCFA4 定義。 您對輸入形狀的假設實際上是正確的,此代碼片段改編自 keras 文檔

import tensorflow as tf

input_shape = (10, 100, 100, 7)
x = tf.random.normal(input_shape)
y = tf.keras.layers.Conv2D(filters=64, kernel_size=3, activation='relu', input_shape=input_shape[1:])(x)
print(y.shape)
>>> (10, 98, 98, 64)

這意味着問題出在您的順序 model 定義中。 請更新您的問題並包含必要的代碼。

編輯
使用 OP 提供的 model 定義並稍作修改即可產生有效的訓練過程。 問題在於密集層的定義,它將output節點作為第一個位置參數,而不是輸入維度。

為了計算成本,我將訓練示例的數量從(5185)減少到(10)......

import tensorflow as tf

X_train_rp = tf.zeros((10, 100,100, 7))
y_train =  tf.zeros((10, 100))

#create model 
model = tf.keras.Sequential() #add model layers    
model.add(tf.keras.layers.Conv2D(64, kernel_size=3, activation='relu',
                                 data_format='channels_last', input_shape=(100, 100, 7))) 
model.add(tf.keras.layers.Conv2D(32, kernel_size=3, activation='relu')) 
model.add(tf.keras.layers.Flatten()) 

# Here comes the fix:
model.add(tf.keras.layers.Dense(100, activation='softmax')) 

#compile model using accuracy to measure model performance 
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train_rp, y_train, epochs=3)


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM