Cor*_*let 4 python mean-square-error theano deep-learning keras
我目前正在实现自定义丢失层,在此过程中,我偶然发现了objectives.py文件[1]中均方误差的实现.我知道我在理解这种损失计算时遗漏了一些东西,因为我一直认为平均值是在每个小批量(张量的轴0)的每个输出的样本中单独进行的,但看起来平均值实际上是在最后一个轴上完成,在一个向量中,意味着它在输出中完成.我在自定义损失层工作时偶然发现了这个问题,因为它需要对特定位置的训练输出中的一些输出的丢失进行折扣.无论如何,我对均方误差的理解是不正确的?为什么Keras会使用最后一个轴,从而将1xn输出向量转换为1x1输出向量?
谢谢.
[1] https://github.com/fchollet/keras/blob/master/keras/objectives.py#L7
有关MSE损失的问题是:
def mean_squared_error(y_true, y_pred):
return K.mean(K.square(y_pred - y_true), axis=-1)
Run Code Online (Sandbox Code Playgroud)
这里首先减去y_pred和y_true,然后将结果传递给K.square,如预期的那样,返回其参数的平方,然后将结果赋予K.mean,它计算平均值.
所以代码显然正在做它应该做的事情.关于为什么操作最后一个轴,这与类无关,它只是一个约定.请注意,通常,MSE定义中没有类.
| 归档时间: |
|
| 查看次数: |
10964 次 |
| 最近记录: |