我正在處理非常嘈雜的數據,偶爾會出現異常值,所以我主要依靠相關性來衡量NN中的準確性。可以使用Rank Correlation作爲TensorFlow中的成本函數嗎?
是否有可能明確使用像秩相關(斯皮爾曼相關係數)作爲我的成本函數?到目前爲止,我主要依靠MSE作爲相關性的代理。
我現在所擁有的三大絆腳石:
1)排名的概念變成了迷你批次,更加模糊。
2)您如何動態執行排名? TensorFlow是否沒有梯度誤差/無法追蹤重量/偏差的變化如何影響成本?
3)如何確定運行期間張量的大小?
例如,下面的代碼是我想粗略地做的,如果我只是使用相關性。實際上,長度需要通過而不是在運行時確定。
length = tf.shape(x)[1] ## Example code. This line not meant to work.
original_loss = -1 * length * tf.reduce_sum(tf.mul(x, y)) - (tf.reduce_sum(x) * tf.reduce_sum(y))
divisor = tf.sqrt(
(length * tf.reduce_sum(tf.square(x)) - tf.square(tf.reduce_sum(x))) *
(length * tf.reduce_sum(tf.square(y)) - tf.square(tf.reduce_sum(y)))
)
original_loss = tf.truediv(original_loss, divisor)
我在嘗試複製使用Spearman Correlations作爲評估指標的圖像評估網絡。針對小批量運行Spearman相關性有意義嗎?如果是這樣,你如何彙總結果以獲得最終數字? – michael
@michael從小批量到完整的數據集,我得到了非常不同的結果。它可能會給你一些關於趨勢的見解,但不能告訴你最終的價值。你不能聚合小批量的結果來計算最終的結果,你必須使用整個數據集(我使用普通的Python代碼)。 – jorgemf
這是我的猜測,但我不是這個話題的專家。謝謝。 – michael