我对Keras的evaluate
功能感到非常困惑。我想要计算的是我的测试集的MSE损失:
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个输出是连续的。
答案 0 :(得分:3)
如果您想生成这样的图表,请尝试在validation_data
中提供model.fit()
,以便将每个纪元的测试集MSE 保存到{{} 1}}对象。
例如,
History
应该给你这样的东西:
history_obj = model.fit(input_train, output_train, validation_data=(input_test, output_test))
print(pd.DataFrame(history_obj.history))