chainerメモ6 float64 != float32 エラー
chainer使ってて遭遇したエラー文をwebに上げて同じように遭遇した人がすぐ解決出来るようにしたいのでどんどん書いていく。
chainer.utils.type_check.InvalidType: Expect: in_types[0].dtype == in_types[1].dtype
Actual: float64 != float32
よく遭遇する型エラー。
chainerはfloat32しか扱わないけどfloat64が紛れ込んでますよ、ということだと思う。
実例
accum_loss = Variable(np.zeros(())) #loss値を0で初期化 loss_i = model.forward(~~ ) #学習してloss_iが返って来る accum_loss += loss_i
ここで上記のエラーが出る。
この場合accum_lossがfloat64でloss_iはfloat32になってしまっている。
なのでこうする。
accum_loss = Variable(np.zeros(())) #これじゃダメfloat64になってしまう accum_loss = Variable(np.zeros(()).astype(np.float32)) #明示的にfloat32を指定