如何在tensorflow中设置rmse代价函数

juzqafwq  于 2023-08-06  发布在  其他
关注(0)|答案(5)|浏览(140)

我在TensorFlow中有代价函数。

activation = tf.add(tf.mul(X, W), b)
cost = (tf.pow(Y-y_model, 2)) # use sqr error for cost function

字符串
我正在试用this example。如何将其转换为rmse成本函数?

mzmfm0qo

mzmfm0qo1#

tf.sqrt(tf.reduce_mean(tf.square(tf.subtract(targets, outputs))))

字符串
稍微简化一下(TensorFlow重载了最重要的运算符):

tf.sqrt(tf.reduce_mean((targets - outputs)**2))

9o685dep

9o685dep2#

root mean square error的公式为:


的数据
在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的值,你可以使用这个函数。

brccelvz

brccelvz3#

现在我们有tf.losses.mean_squared_error
因此,我们认为,

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

字符串

9rygscc1

9rygscc14#

(1)你确定你需要这个吗?将l2 loss最小化与将RMSE误差最小化的结果相同。(通过数学计算:你不需要求平方根,因为当x>0时,最小化x^2仍然会最小化x,而且你知道一组平方的和是正数。最小化x*n最小化x(对于常数n)。
(2)如果需要知道RMSE误差的数值,则直接从definition of RMSE

tf.sqrt(tf.reduce_sum(...)/n)

字符串
(You需要知道或计算n -总和中的元素数,并在对reduce_sum的调用中适当地设置缩减轴)。

ffscu2ro

ffscu2ro5#

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

rmse = tf.keras.metrics.RootMeanSquaredError()

字符串
如何使用它的示例

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

相关问题