[英]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.