我偶然在Keras中看到了mse
的定义,但找不到解释。
def mean_squared_error(y_true, y_pred):
return K.mean(K.square(y_pred - y_true), axis=-1)
我原本期待的是按批次进行均值计算,即
axis=0
,但实际上它是axis=-1
。我还尝试了一下,看看
K.mean
是否真的像numpy.mean
那样行为良好。我一定是理解错了什么。请有人可以澄清一下吗?我无法在运行时查看代价函数内部,对吧?据我所知,函数在编译时被调用,这样就阻止了我评估具体值。
我的意思是...想象一下做回归,并且只有一个输出神经元并使用批量大小为10来训练。
>>> import numpy as np
>>> a = np.ones((10, 1))
>>> a
array([[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.]])
>>> np.mean(a, axis=-1)
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
它所做的只是将数组压平,而不是对所有预测取平均值。