当使用model.compile()中的loss='mean_squared_error'来训练我的网络时,我会使用Keras中的model.fit()。
model.compile(loss='mean_squared_error', optimizer=optimizers.Adam(decay=0.00001), metrics=['accuracy'])
hist=model.fit(X, Y, epochs=200, batch_size=2000, verbose=2, shuffle="batch", validation_data=(Xval,Yval))
训练结束时,输出结果如下:
Epoch 200/200 23s - loss: 1.2060 - acc: 0.5168 - val_loss: 1.5213 - val_acc: 0.5294
如果我手动检查验证集上的损失值,则为:
pre=model.predict(Xval)
print(np.mean(np.square(pre-Yval)))
我得到的是1.4587而不是1.5213。
为什么会有差异?我为什么没有得到model.fit()计算出的1.5213?我是否漏掉了一些东西?model.fit()难道不是遍历整个验证集吗?
model.fit()
报告的val_loss
不应该与我手动计算的损失相匹配吗? - samjk