[Chainer 1.3.0] ValueError: Cannot find a common data type.

Chainerで連続時間のRNNを実装中に以下のようなエラーが出た。

Traceback (most recent call last):
File "mtrnn.py", line 182, in <module>
u_io, u_fh, u_sh, y= forward_one_step(model, x_batch[:,28*j:28*(j+1)],u_io, u_fh, Csc0, args.tau_io, args.tau_fh, args.tau_sh)
File "mtrnn.py", line 141, in forward_one_step
u_io2 = (1-1/tau_io)*u_io+(model.fh_to_y(fh))/tau_io
File "/home/is/seitaro-s/.virtualenvs/chainer/local/lib/python2.7/site-packages/chainer/function.py", line 174, in __call__
outputs = self.forward(in_data)
File "/home/is/seitaro-s/.virtualenvs/chainer/local/lib/python2.7/site-packages/chainer/functions/connection/linear.py", line 111, in forward
Wx = x.dot(self.W.T)

ValueError: Cannot find a common data type.

 

 

荷重値Wと入力fhの内積計算でエラーが出ているのでタイプを確認。

(fh,Wはエラーの該当部分を取った W=model.parameters[-2])

>>> type(fh)

<type 'numpy.ndarray'>

>>> type(W)

<class 'cupy.ndarray'>

 

隠れ層の変数をcupyに変換していなかったのが原因だった。

うっかりよく起こしそうな落ち度だったので備忘録として残しておく。