簡體   English   中英

如何使Keras CNN在正確的尺寸下工作?

[英]How can I get Keras CNN to work with the right number of dimensions?

我得到錯誤:
“檢查輸入時出錯:預期conv1d_41_input具有3維,但數組的形狀為(1920,5000)”
嘗試在Keras中編譯CNN模型時。

我的輸入數據是1920個具有5000個功能的樣本。

我嘗試在第一個Dense層之前添加Flatten層。

# Parameters 
BATCH_SIZE = 16
DROP_OUT = 0.25
N_EPOCHS = 100
N_FILTERS = 128
TRAINABLE = False
LEARNING_RATE = 0.001
N_DIM = 32
KERNEL_SIZE = 7

# Create model
model = Sequential()
model.add(Conv1D(N_FILTERS, KERNEL_SIZE, activation='relu', padding='same',input_shape=(5000,1)))
model.add(MaxPooling1D(2))
model.add(Conv1D(N_FILTERS, KERNEL_SIZE, activation='relu', padding='same'))
model.add(GlobalMaxPooling1D())
model.add(Dropout(DROP_OUT))
model.add(Dense(N_DIM, activation='relu', kernel_regularizer=regularizers.l2(1e-4)))
model.add(Dense(N_LABELS, activation='sigmoid'))  
adam = optimizers.Adam(lr=LEARNING_RATE, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss='binary_crossentropy', optimizer=adam, metrics=['accuracy'])
model.summary()

如果將輸入形狀聲明為input_shape=(5000,1) ,則數據應具有形狀(None, 5000,1) ,其中第一維對應於樣本,因此在這種情況下,您只需要添加帶有通過重塑獲得值為1的值:

X_train = X_train.reshape((-1, 5000, 1))

並對所有測試或驗證數據執行相同的操作。

暫無
暫無

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

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