Python ';减少';tf.keras.loss中的参数
根据参数,减少参数有3个值-Python ';减少';tf.keras.loss中的参数,python,tensorflow,keras,tensorflow2.0,Python,Tensorflow,Keras,Tensorflow2.0,根据参数,减少参数有3个值-SUM\u OVER\u BATCH\u SIZE、SUM和NONE y_true = [[0., 2.], [0., 0.]] y_pred = [[3., 1.], [2., 5.]] mae = tf.keras.losses.MeanAbsoluteError(reduction=tf.keras.losses.Reduction.SUM) mae(y_true, y_pred).numpy() > 5.5 mae = tf.keras.losses
SUM\u OVER\u BATCH\u SIZE
、SUM
和NONE
y_true = [[0., 2.], [0., 0.]]
y_pred = [[3., 1.], [2., 5.]]
mae = tf.keras.losses.MeanAbsoluteError(reduction=tf.keras.losses.Reduction.SUM)
mae(y_true, y_pred).numpy()
> 5.5
mae = tf.keras.losses.MeanAbsoluteError()
mae(y_true, y_pred).numpy()
> 2.75
经过多次试验,我可以推断出计算结果如下:-
- 当
减少=总和时
Loss=Sum over all samples{(每个样本的y_pred和y_目标向量之间的差值之和/样本的y_目标中元素的数量)}={(abs(3-0)+abs(1-2))/2}+{(abs(2-0)+abs(5-0))/2}={4/2}+{7/2}=5.5
- 当
时reduce=SUM\u OVER\u BATCH\u SIZE
Loss=[Sum over all samples{(每个样本的y_pred和y_目标向量之间的差值之和/样本的y_目标中的元素数量)}]/Batch_大小或样本数量=[{(abs(3-0)}+abs(1-2))/2}+{(abs(2-0)+abs(5-0))/2}]/2=[{4/2}+{7/2}]/2=[5.5]/2=2.75
SUM\u OVER\u BATCH\u SIZE
只不过是SUM/BATCH\u SIZE
。那么,当SUM
实际计算整个批次的损失时,为什么称之为SUM\u OVER\u BATCH\u SIZE
,而SUM\u OVER\u BATCH\u SIZE
计算该批次的平均损失
我关于
SUM\u超过批处理大小和SUM
的假设是否正确?你的问题到底是什么?很抱歉我没有说得更清楚。我的问题是,如果我的假设“总和大于批次大小”计算的是整个批次的平均值,而不是总和,那么这一假设是否完全正确?因为,查看文档以及PyTorch L1损失(),似乎SUM\u OVER\u BATCH\u SIZE
对应于Torch中的mean
,而SUM
对应于SUM
?