1. ホーム
  2. Machine Learning

Kerasを使ったテンソルの乗算と和算

2022-02-16 20:46:52
<パス

前文

私は最近、2つのネットワークの融合を伴う行動認識のコードを書いています。この融合は、ネットワークの結果に重み付けをして融合するものなので、ネットワークの結果に重み付け(掛け合わせ)をして融合(足し算)する必要があります。

最初の考え

当初はKeras.lays.AddとKeras.lays.Multiplyを使って行うことを考えていましたが、これではエラーが報告されることが判明しました。

rate_rgb = k.variable(np.ones((1024,),dtype='float32')*0.8)
rate_esti = k.variable(np.ones((1024,),dtype='float32')*0.2)
weight_gru1 = Multiply()([rate_rgb,gru1])
weight_gru2 = Multiply()([rate_esti,gru2])
last = Add()([weight_gru1,weight_gru2])

このように書くと、次のようにエラーが報告されます。

AttributeError: 'Variable' object has no attribute '_keras_history'

正しいアプローチ

その後、ネット上の神々のブログを参考に、以下のように変更された。

weight_1 = Lambda(lambda x:x*0.8)
weight_2 = Lambda(lambda x:x*0.2)
weight_gru1 = weight_1(gru1)
weight_gru2 = weight_2(gru2)
last = Add()([weight_gru1,weight_gru2])

これでいいのです。