Keras的evaluate
函數讓我非常困惑。所有我想要計算我的測試集的MSE損失:Keras model.evaluate不正確的形狀
def iterate_and_store(optimizer, nepochs=10):
model = Sequential()
model.add(Dense(output_dim=8, input_dim=3, init="glorot_normal"))
model.add(Activation("softplus"))
model.add(Dense(output_dim=16, init="glorot_normal"))
model.add(Activation("softplus"))
model.add(Dense(output_dim=32, init="glorot_normal"))
model.add(Activation("softplus"))
model.add(Dense(output_dim=32, init="glorot_normal"))
model.add(Activation("softplus"))
model.add(Dense(output_dim=16, init="glorot_normal"))
model.add(Activation("softplus"))
model.add(Dense(output_dim=1))
model.add(Activation("softplus"))
model.compile(loss='MSE', optimizer=optimizer)
training_loss = pd.DataFrame(model.fit(input_train, output_train, nb_epoch=nepochs, batch_size=32, verbose=2).history)
self_pred = pd.DataFrame(model.predict(input_train), columns=['estimated'])
test_pred = pd.DataFrame(model.predict(input_test), columns=['y_hat'])
test_loss = pd.DataFrame(model.evaluate(output_test, test_pred, verbose=2))
然而,線test_loss = pd.DataFrame(model.evaluate(output_test, test_pred, verbose=2))
引發此錯誤: ValueError: Error when checking model input: expected dense_input_40 to have shape (None, 3) but got array with shape (10000, 1)
不應該evaluate
方法計算預測之間的MSE誤差和測試集的實際輸出?
這些是我的訓練&測試輸入和輸出看起來像在形狀方面:
input_test.shape
Out[152]: (10000, 3)
output_test.shape
Out[153]: (10000, 1)
input_train.shape
Out[154]: (10000, 3)
output_train.shape
Out[155]: (10000, 1)
我試着喂model.evaluate
方法的輸入和輸出,但沒有工作的每一個組合。我所有的數據都是10,000行,輸入是3個變量,1個輸出是連續的。
我只想來比較去訓練更低的損耗和更低的測試損失,應該是有點凹這樣的:
號'評價)的參數()'是一樣的'擬合(',也就是'model.evaluate(input_test,output_test)'。閱讀[doc](https://keras.io/models/model/#evaluate)。 –
使用你的建議給出了下面的熊貓錯誤:'PandasError:DataFrame構造函數沒有正確調用!'儘管我不知道爲什麼,因爲所有的數據都是numpy數組 – guy
'model.evaluate()'返回一個標量,如果沒有'metrics'選項在編譯模型時給出。一個'pandas.DataFrame'不能由標量構造。順便說一句,解決這個問題並沒有幫助,因爲它在每個紀元只給出最終的MSE而不是MSE。以我的答案爲例。 –