簡體   English   中英

如何用合適的輸入形狀訓練 CNN?

[英]how to fit train CNN with the appropriate input shape?

我正在嘗試使用 S&P 500 數據集訓練 CNN 和 LSTM.network。 這是我的火車數據集的形狀:

xtrain 形狀:(6445, 16) ytrain 形狀:(6445,)

這是我給 CNN 的輸入形狀:

model.add(TimeDistributed(Conv1D(filters=64, kernel_size=1, activation='relu'), input_shape=(None,16)))

使用代碼中顯示的輸入形狀參數,我收到此錯誤:

ValueError:層 conv1d_8 的輸入 0 與層不兼容::預期 min_ndim=3,發現 ndim=2。 收到完整形狀:[無,16]

expected min_ndim=3, found ndim=2.

Keras 在使用 Conv1D 時期望三維 arrays:期望的形狀是[batch_size, sequence_length, feature_dimension] 在你的情況下,你只有一個特征維度,我懷疑價格,但假設你還想傳遞交易量數據,你會有xtrain.shape == (6445,16,2) 最后一個維度將包含有關價格和數量的信息。

要解決您的問題,您需要將xtrain重塑為

(batch_size, sequence_length, feature_dimension=(6445,16,1)

為此,您可以使用 tensorflow:

xtrain = tf.expand_dims(xtrain, axis=-1) # -1 means expand the LAST axis

或使用 numpy:

xtrain = np.expand_dims(xtrain, axis=-1) # -1 means expand the LAST axis

這個 function 顧名思義:它在 axis 指定的 position 中添加了一個新axis 這導致xtrain具有我們想要的形狀,現在您可以繼續使用 model,例如:

model = keras.models.Sequential()
model.add(keras.layers.TimeDistributed(keras.layers.Conv1D(filters=64, kernel_size=1, activation='relu'), input_shape=(None,16,1)))

暫無
暫無

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

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