2015-11-21 23 views

cevap

5

(1) Buna ihtiyacınız olduğuna emin misiniz? l2 loss'u en aza indirgemek, RMSE hatasını en aza indirmekle aynı sonucu verecektir. (Matematikte yürüyün: Karekök almanıza gerek yoktur, çünkü x^2'yi en aza indirgemek x için x'i minimize eder, ve bir demet karenin toplamının pozitif olduğunu biliyorsunuz x * n minimize eder x minimize eder x sabit için n). Eğer RMSE hatasının sayısal değerini bilmek gerekiyorsa

(2), daha sonra definition of RMSE doğrudan uygulamak:

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

(Biliyorsun ya n hesaplamak gerekir - öğe sayısını toplamı ve küçültme eksenini redüksiyon kaydına göre uygun şekilde ayarlayın). root mean square error için

+1

@dga tf.sqrt (tf.reduce_mean (...)) '' daha iyi bir seçenek olabilir mi? – goelakash

+1

@goelakash - muhtemelen! Bağladığım tipik RMSE formülünün en açık transliterasyonunu denemek için uğraşıyordum, ama pratikte 'tf.reduce_mean' daha iyi bir seçim. – dga

+0

Kayıp hesaplamasına oldukça girdiğinizden, bu soruyla bana yardımcı olabilirsiniz: [soru] (https://stackoverflow.com/questions/44717224/when-using-rmse-loss-in-tensorflow-i -rece-çok-küçük-kayıp-değerler-smalerl-than) @dga – thigi

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

en azından cevabı kabul edin: D –

8

formül geçerli:

enter image description here

TF bunu uygulamak için bir yol tf.sqrt(tf.reduce_mean(tf.squared_difference(Y1, Y2))) olduğunu.

Hatırlanması gereken en önemli nokta, RMSE kaybını en iyileştirici ile en aza indirmeye gerek olmamasıdır. Aynı sonuç ile sadece tf.reduce_mean(tf.squared_difference(Y1, Y2)) veya hatta tf.reduce_sum(tf.squared_difference(Y1, Y2))'u en aza indirebilir, ancak daha küçük bir işlem grafiğine sahip oldukları için daha hızlı optimize edilirler.

Bu işlevi yalnızca RMSE'nin değerini değiştirmek istiyorsanız kullanabilirsiniz.

İlgili konular