Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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/2/tensorflow/5.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 如何在tensorflow中设置rmse成本函数_Python_Tensorflow - Fatal编程技术网

Python 如何在tensorflow中设置rmse成本函数

Python 如何在tensorflow中设置rmse成本函数,python,tensorflow,Python,Tensorflow,我在tensorflow中有代价函数 activation = tf.add(tf.mul(X, W), b) cost = (tf.pow(Y-y_model, 2)) # use sqr error for cost function 我正在尝试。如何将其更改为rmse成本函数?(1)您确定需要此功能吗?最小化RMSE错误将得到与最小化RMSE错误相同的结果。(走一遍数学:你不需要求平方根,因为当x>0时,最小化x^2仍然会最小化x,并且你知道一组平方的和是正的。最小化x*n会最小化常数n

我在tensorflow中有代价函数

activation = tf.add(tf.mul(X, W), b)
cost = (tf.pow(Y-y_model, 2)) # use sqr error for cost function
我正在尝试。如何将其更改为rmse成本函数?

(1)您确定需要此功能吗?最小化RMSE错误将得到与最小化RMSE错误相同的结果。(走一遍数学:你不需要求平方根,因为当x>0时,最小化x^2仍然会最小化x,并且你知道一组平方的和是正的。最小化x*n会最小化常数n的x)

(2) 如果您需要知道RMSE误差的数值,则直接从以下步骤执行:

(您需要知道或计算n-总和中元素的数量,并在调用reduce_sum时适当设置reduce轴)

稍微简化(TensorFlow重载最重要的运算符):

计算公式为:

在TF中实现它的方法是
TF.sqrt(TF.reduce_-mean(TF.squared_-difference(Y1,Y2))


需要记住的重要一点是,没有必要使用优化器最小化RMSE损失。使用相同的结果,您可以最小化tf.reduce_mean(tf.squared_difference(Y1,Y2))甚至
tf.reduce_sum(tf.squared_difference(Y1,Y2))
,但由于它们的运算图较小,因此优化速度更快


但是如果您只想跟踪RMSE的值,可以使用此函数。

现在我们有了
tf.loss.mean\u squared\u error

所以,

RMSE = tf.sqrt(tf.losses.mean_squared_error(label, prediction))

对于希望将RMSE作为度量标准实施的用户

rmse = tf.keras.metrics.RootMeanSquaredError()
如何使用它的例子

model.compile(optimizer=optimizer, loss='mean_squared_error',
              metrics=[rmse,'mae'])

@dga不会是一个更好的选择吗?@goelakash-可能!我一直在尝试我链接的典型RMSE公式的最清晰的音译,但在实践中,
tf.reduce\u mean
是一个更好的选择。由于您似乎非常热衷于损失计算,您可能可以帮助我解决这个问题:@dga@dga关于第(1)点:我有一个例子,当MSE的行为是理想的,但它的值太小,如0.001,结果它的导数太小。这导致了很少的学习。这是RMSE用于培训目的的有效用例吗?嗨@Viki,你能接受我的答案吗!完成了,事实上我有两个账户是错误的,所以我不得不合并它只是因为你要求接受才被合并的。因此,感谢您的回答和提醒:)
RMSE = tf.sqrt(tf.losses.mean_squared_error(label, prediction))
rmse = tf.keras.metrics.RootMeanSquaredError()
model.compile(optimizer=optimizer, loss='mean_squared_error',
              metrics=[rmse,'mae'])