4
我正在處理時間序列數據,輸出60個預測的日子。keras中的加權mse自定義丟失函數
我目前使用的均方誤差爲我的損失函數,結果是壞
我想要實現的加權均方誤差,例如,早期的產出比後來者更重要。
加權均方根公式:
所以我需要一些方法來遍歷一個張量元素,與索引(因爲我需要通過迭代都在預測和真實值然後把結果寫成只有一個元素的張量,他們都是(?,60),但是真的是(1,60)個列表。代碼爲破碎版本
def weighted_mse(y_true,y_pred):
wmse = K.cast(0.0,'float')
size = K.shape(y_true)[0]
for i in range(0,K.eval(size)):
wmse += 1/(i+1)*K.square((y_true[i]-y_pred)[i])
wmse /= K.eval(size)
return wmse
我目前得到這個錯誤的結果:
InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'dense_2_target' with dtype float
[[Node: dense_2_target = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
讀了答覆類似的帖子,我不認爲口罩能完成任務,並在一個張量遍歷元素也無法工作,因爲我無法訪問其他張量中的相應元素。
任何建議,將不勝感激
我花了數小時試圖弄清楚這一點。謝謝! –
在'(1/idx)* K.square(yTrue-yPred)'中是'*'元運算還是向量 - 矩陣乘法運算?謝謝! – username123
它是元素。對於矩陣乘法,有'K.dot()'和'K.batch_dot()'。 –