Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';减少';tf.keras.loss中的参数_Python_Tensorflow_Keras_Tensorflow2.0 - Fatal编程技术网

Python ';减少';tf.keras.loss中的参数

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

根据参数,减少参数有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.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