如何在tensorflow中设置rmse成本函数
how to set rmse cost function in tensorflow
我在 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 成本函数?
(1) 你确定你需要这个吗?最小化 l2 loss 将得到与最小化 RMSE 误差相同的结果。 (走一遍数学:你不需要取平方根,因为对于 x>0 最小化 x^2 仍然最小化 x,并且你知道一堆平方和是正的。最小化 x*n 最小化 x对于常量 n).
(2)如果需要知道RMSE误差的数值,那么直接从definition of RMSE实现:
tf.sqrt(tf.reduce_sum(...)/n)
(您需要知道或计算 n - 总和中的元素数,并在对 reduce_sum 的调用中适当设置缩减轴)。
tf.sqrt(tf.reduce_mean(tf.square(tf.subtract(targets, outputs))))
并稍微简化(TensorFlow 重载了最重要的运算符):
tf.sqrt(tf.reduce_mean((targets - outputs)**2))
在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.losses.mean_squared_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'])
我在 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 成本函数?
(1) 你确定你需要这个吗?最小化 l2 loss 将得到与最小化 RMSE 误差相同的结果。 (走一遍数学:你不需要取平方根,因为对于 x>0 最小化 x^2 仍然最小化 x,并且你知道一堆平方和是正的。最小化 x*n 最小化 x对于常量 n).
(2)如果需要知道RMSE误差的数值,那么直接从definition of RMSE实现:
tf.sqrt(tf.reduce_sum(...)/n)
(您需要知道或计算 n - 总和中的元素数,并在对 reduce_sum 的调用中适当设置缩减轴)。
tf.sqrt(tf.reduce_mean(tf.square(tf.subtract(targets, outputs))))
并稍微简化(TensorFlow 重载了最重要的运算符):
tf.sqrt(tf.reduce_mean((targets - outputs)**2))
在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.losses.mean_squared_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'])