Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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
TensorFlow:损耗和公制是否应该相同?_Tensorflow - Fatal编程技术网

TensorFlow:损耗和公制是否应该相同?

TensorFlow:损耗和公制是否应该相同?,tensorflow,Tensorflow,我用二元交叉熵作为损失函数和度量 但是,我看到损失和度量的值不同。它们非常相似,但又不同 为什么会这样?我使用的是tf.keras.loss.binary\u交叉熵(y\u true,y\u pred) 两者都有 损耗:0.1506,度量值为0.1525,这是不同的如果使用与损耗和度量相同的函数,通常在深度网络中会看到不同的结果。这通常是由于浮点精度错误造成的:尽管数学方程是等价的,但运算的顺序不同,这可能会导致微小的差异。 这正是你的情况 但是,如果使用任何正则化器,损失和度量的差异将更大,

我用二元交叉熵作为损失函数和度量

但是,我看到损失和度量的值不同。它们非常相似,但又不同

为什么会这样?我使用的是
tf.keras.loss.binary\u交叉熵(y\u true,y\u pred)
两者都有


损耗:0.1506,度量值为0.1525,这是不同的

如果使用与损耗和度量相同的函数,通常在深度网络中会看到不同的结果。这通常是由于
浮点精度错误造成的:尽管数学方程是等价的,但运算的顺序不同,这可能会导致微小的差异。
这正是你的情况

但是,如果使用任何
正则化器
,损失和度量的差异将更大,因为
正则化器
会惩罚损失函数以避免过度拟合

理想情况下,metric和loss的工作方式相同,让我们看看文档中的示例并进行比较

二进制交叉熵作为度量标准:

m.update_state([[0, 1], [0, 0]], [[0.6, 0.4], [0.4, 0.6]])
m.result().numpy() 
0.81492424

作为损失的二进制交叉熵:

y_true = [[0., 1.], [0., 0.]]
y_pred = [[0.6, 0.4], [0.4, 0.6]]
bce = tf.keras.losses.BinaryCrossentropy()
bce(y_true, y_pred).numpy() 
0.81492424

希望这能回答你的问题,学习愉快