2015-11-21 3 views
6

У меня есть функция стоимости в тензорном потоке.как установить функцию стоимости rmse в тензорном потоке

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

Я стараюсь this example. Как я могу изменить его на функцию rmse cost?

+0

Привет @Viki, вы можете принять мой ответ! –

ответ

5

(1) Вы уверены, что это необходимо? Минимизация l2 loss даст вам тот же результат, что и минимизация ошибки RMSE. (Пройдите по математике: вам не нужно принимать квадратный корень, так как минимизация x^2 все еще минимизирует x при x> 0, и вы знаете, что сумма кучки квадратов положительна. Минимизация x * n минимизирует x для константы n).

(2) Если вам необходимо знать численное значение ошибки RMSE, а затем реализовать его непосредственно из definition of RMSE:

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

(Вы должны знать, или вычислить п - число элементов в суммой и соответствующим образом установите ось редукции в вызове reduce_sum).

+1

@dga Не мог бы 'tf.sqrt (tf.reduce_mean (...))' быть лучшим вариантом здесь? – goelakash

+1

@goelakash - возможно! Я пытался максимально четко транслировать типичную формулу RMSE, которую я связывал, но на практике «tf.reduce_mean» - лучший выбор. – dga

+0

Поскольку вы, скорее всего, попали в расчёт потерь, вы можете помочь мне решить этот вопрос: [вопрос] (https://stackoverflow.com/questions/44717224/when-using-rmse-loss-in-tensorflow-i -receive-very-small-loss-values-smalerl-than) @dga – thigi

27
tf.sqrt(tf.reduce_mean(tf.square(tf.subtract(targets, outputs)))) 
+0

хотя бы, пожалуйста, ответьте: D –

8

Формула root mean square error является:

enter image description here

Путь реализовать его в 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.

 Смежные вопросы

  • Нет связанных вопросов^_^