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。以我的答案为例。 –