簡體   English   中英

ValueError:層“順序”的輸入0與層不兼容:預期形狀=(無,90),發現形狀=(無,2,90)

[英]ValueError: Input 0 of layer "sequential" is incompatible with the layer: expected shape=(None, 90), found shape=(None, 2, 90)

使用 Keras 預測 function 時,任何人都可以幫助解決以下問題嗎?預測數據集的輸入形狀似乎正在改變(預測似乎在第一維中添加了“無”)。

scaler = MinMaxScaler()
scaler2 = MinMaxScaler()

normalized_data = scaler.fit_transform(dataset)
normalized_predict_data = scaler2.fit_transform(predict_dataset)

x = normalized_data[:, 0:90]
y = normalized_data[:, 90]

z = normalized_predict_data[:, 0:90]
print(z.shape)

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=10)
print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)

model = Sequential()
model.add(Dense(4, input_dim=90, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

history = model.fit(x_train, y_train, validation_split=0.33, epochs=50, batch_size=100, verbose=0)

loss, accuracy = model.evaluate(x_test, y_test, verbose=0)
print("Model loss: %.2f, Accuracy: %.2f" % ((loss * 100), (accuracy * 100)))

Xnew = z
ynew = model.predict(array([Xnew]))

for item in Xnew:
    print("X=%s, Predicted=%s" % (item, ynew[0]))

當調用 print function 來顯示預測數據集的形狀時,它會按預期打印出 (2, 90)(2 行數據和 90 個輸入)

當嘗試使用預測 function 時,它會打印以下錯誤:

ValueError: Input 0 of layer "sequential" is incompatible with the layer: expected shape=(None, 90), found shape=(None, 2, 90)

該錯誤是由此代碼行ynew = model.predict(array([Xnew]))引起的。

請從此行中刪除數組並使用: ynew = model.predict(Xnew)

我已經用鮑魚數據集復制了類似的代碼,並附上了這個要點供您參考。

以下任一項對我有用(我的 model 被訓練接受 2D 輸入):

X_new = [[-1.0, -1.0]]
model.predict(X_new)

或者

X_new = [-1.0, -1.0]
model.predict([X_new])

希望有幫助!

暫無
暫無

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

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