我想在Keras中嘗試一個簡單的模型,我想將其作爲輸入大小爲5x3的矩陣。在下面的示例中,在添加第一個緻密層時,通過使用input_shape=(5, 3)
來指定。Keras錯誤:期望dense_input_1有3個維度
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import Adam
import numpy as np
model = Sequential()
model.add(Dense(32, input_shape=(5, 3)))
model.add(Activation('relu'))
model.add(Dense(32))
model.add(Activation('relu'))
model.add(Dense(4))
adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss='mean_squared_error', optimizer=adam)
x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]])
y = model.predict(x)
然而,當我運行的代碼中,model.predict()
功能提供了以下錯誤:
ValueError: Error when checking : expected dense_input_1 to have 3 dimensions, but got array with shape (5, 3)
但我不理解的錯誤。 x
的形狀是(5,3),這正是我告訴第一個密集層期望的輸入。爲什麼因此期待三個維度?看起來這可能與批量大小有關,但我認爲input_shape
只是指網絡的形狀,與批量大小無關......
感謝您的建議。我嘗試過使用'input_shape =(3,)',但是網絡'y'的輸出已經變形了(5,4)。因此,這表明它將'x'視爲一個大小爲5的批次,每個條目的大小爲3.然後,輸出'y'也是一個大小爲5的批次,每個輸出的大小爲4。我想要的是。我希望輸入是形狀(5,3),這樣當我運行'model.predict()'時,它會給出形狀輸出(1,4)。 – Karnivaurus