私は時系列データを扱い、60予測日を先に出力しています。私は加重平均を実装したいケラスで重み付けされたmseカスタム損失関数
私は現在、私の損失関数としての平均二乗誤差を使用していますし、結果は
悪いですが、早期の出力がはるかに重要以降のものよりもあるよう二乗誤差。
加重平均平方根の式:
だから私は、インデックスと、テンソルの要素を反復処理するためにいくつかの方法が必要です(私が予測と真値の両方を反復処理する必要があるため同時に、1つの要素でテンソルに結果を書いてください。両方とも(?、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つのテンソルの要素をループしていません私は他のテンソルの対応する要素にアクセスすることができないので、うまくいきません。
任意の提案は、あなたがこのアプローチを使用することができます
これを理解するのに何時間も費やしました。ありがとうございました! –
'(1/idx)* K.square(yTrue-yPred)'では、要素演算またはベクトル行列乗算演算は '*'ですか?ありがとう! – username123
要素的です。行列の乗算には 'K.dot()'と 'K.batch_dot()'があります。 –