该Keras损失页说,如果我们有一个自定义的损失函数,则“实际的优化目标是平均在所有数据点的输出数组的。” 有什么方法可以优化所有数据点(而不是平均值)的输出数组的中值?
在 Keras 中使用 model.fit() 训练我的网络,在 model.compile() 中使用 loss='mean_squared_error':
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))
Run Code Online (Sandbox Code Playgroud)
我最后得到了这个:
纪元 200/200 23s - 损失:1.2060 - acc:0.5168 - val_loss:1.5213 - val_acc:0.5294
现在,如果我手动检查验证集的损失
pre=model.predict(Xval)
print(np.mean(np.square(pre-Yval)))
Run Code Online (Sandbox Code Playgroud)
我得到 1.4587 而不是 1.5213。
他们为什么不同?为什么我没有得到由 model.fit() 计算的 1.5213?我在这里错过了什么吗?model.fit() 不通过整个验证集吗?