質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

3355閲覧

Chainer ValueError: Out shape is mismatched

YukiSato

総合スコア10

Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/05/13 15:25

https://github.com/cocon-ai-group/turf-tipster
上記のtrain.pyを動かした際にOut shape is mismatchedのエラーが出ます
なんどもググって見ましたが発生原因が検討もつきません。

環境はUbuntu16.04 chainer3.5.0 です
エラー発生箇所はソースコードの"#ゲート分のデータを作る"の部分です。
勉強不足ですいませんが、エラーの正体を教えていただけると大変助かります
よろしくお願いいたします。

発生している問題・エラーメッセージ

Exception in main training loop: Out shape is mismatched
Traceback (most recent call last):
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/training/trainer.py", line 299, in run
update()
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/training/updater.py", line 223, in update
self.update_core()
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/training/updater.py", line 234, in update_core
optimizer.update(loss_func, *in_arrays)
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/optimizer.py", line 541, in update
loss = lossfun(*args, **kwds)
File "train.py", line 305, in call
r = super(An_Classifier, self).call(*args, **kwargs)
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/links/model/classifier.py", line 114, in call
self.y = self.predictor(*args, **kwargs)
File "/home/gutsmans/works/turf-tipster/rnn_network.py", line 67, in call
l_h1[i] = l
File "cupy/core/core.pyx", line 1553, in cupy.core.core.ndarray.setitem
File "cupy/core/core.pyx", line 3207, in cupy.core.core._scatter_op
File "cupy/core/elementwise.pxi", line 807, in cupy.core.core.ufunc.call
File "cupy/core/elementwise.pxi", line 391, in cupy.core.core._get_out_args
Will finalize trainer extensions and updater before reraising the exception.
Traceback (most recent call last):
File "train.py", line 399, in <module>
main()
File "train.py", line 391, in main
trainer.run()
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/training/trainer.py", line 313, in run
six.reraise(*sys.exc_info())
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/six.py", line 693, in reraise
raise value
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/training/trainer.py", line 299, in run
update()
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/training/updater.py", line 223, in update
self.update_core()
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/training/updater.py", line 234, in update_core
optimizer.update(loss_func, *in_arrays)
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/optimizer.py", line 541, in update
loss = lossfun(*args, **kwds)
File "train.py", line 305, in call
r = super(An_Classifier, self).call(*args, **kwargs)
File "/home/gutsmans/.pyenv/versions/3.6.5/lib/python3.6/site-packages/chainer/links/model/classifier.py", line 114, in call
self.y = self.predictor(*args, **kwargs)
File "/home/gutsmans/works/turf-tipster/rnn_network.py", line 67, in call
l_h1[i] = l
File "cupy/core/core.pyx", line 1553, in cupy.core.core.ndarray.setitem
File "cupy/core/core.pyx", line 3207, in cupy.core.core._scatter_op
File "cupy/core/elementwise.pxi", line 807, in cupy.core.core.ufunc.call
File "cupy/core/elementwise.pxi", line 391, in cupy.core.core._get_out_args
ValueError: Out shape is mismatched

該当のソースコード

python

1# -*- coding: utf-8 -*- 2import chainer 3import chainer.functions as F 4import chainer.links as L 5from chainer import training, datasets, iterators, optimizers 6from chainer.training import extensions 7from chainer.functions.evaluation import accuracy 8from chainer.links import caffe as C 9from chainer import reporter 10import numpy as np 11 12nn_nodes = (1500, 350, 45, 300, 150) 13 14# ニューラルネットワークの定義をするクラス 15class Turf_Tipster_NN(chainer.Chain): 16 17 def __init__(self, n_horses, n_jockeys): 18 n_units_h, n_units_v, n_units_j, n_units_r, n_units_d = nn_nodes 19 super(Turf_Tipster_NN, self).__init__() 20 with self.init_scope(): 21 # 馬モデルのステータス(モデルを保存できるようにParameterで保持しておく) 22 self.vc = chainer.Parameter(np.zeros((n_horses, n_units_v), dtype=np.float32)) 23 self.vh = chainer.Parameter(np.zeros((n_horses, n_units_v), dtype=np.float32)) 24 # 馬モデルのレイヤー 25 self.le = L.EmbedID(n_horses, n_horses) 26 self.l1 = L.Linear(n_horses, n_units_h) 27 self.l2 = L.LSTM(n_units_h, n_units_v) 28 # 騎手モデルのレイヤー 29 self.re = L.EmbedID(n_jockeys, n_jockeys) 30 self.r1 = L.Linear(n_jockeys, n_units_j) 31 # レースモデルのレイヤー 32 self.m1 = L.EmbedID(11, 11) 33 self.m2 = L.EmbedID(8, 8) 34 self.m3 = L.EmbedID(4, 4) 35 self.m4 = L.EmbedID(4, 4) 36 self.j1 = L.Linear(n_units_v + n_units_j + 11 + 8 + 4 + 4, n_units_r) 37 self.j2 = L.Linear(n_units_r, n_units_r) 38 self.j3 = L.Linear(n_units_r, n_units_d) 39 40 # 引数は(レースメタ情報, グリッド情報)で着順になっている 41 def __call__(self, t, train=True): 42 grid = t[0] 43 num_gates = len(grid) 44 cp = self.xp 45 # 馬モデルのステータス 46 l_vc = cp.zeros((num_gates, self.vc.data.shape[1]), dtype=cp.float32) 47 l_vh = cp.zeros((num_gates, self.vh.data.shape[1]), dtype=cp.float32) 48 # ゲート分のステータスを作る 49 for i in range(num_gates): 50 l, r, m1, m2, m3, m4 = grid[i] # l, rは(馬番号, 騎手番号) 51 _l = l 52 if cp != np: 53 l = chainer.cuda.to_cpu(l) 54 l = int(l[0]) 55 l_vc[i][:] = self.vc.data[l] 56 l_vh[i][:] = self.vh.data[l] 57 l_h1 = cp.zeros((num_gates), dtype=cp.int32) 58 r_h1 = cp.zeros((num_gates), dtype=cp.int32) 59 t_m1 = cp.zeros((num_gates), dtype=cp.int32) 60 t_m2 = cp.zeros((num_gates), dtype=cp.int32) 61 t_m3 = cp.zeros((num_gates), dtype=cp.int32) 62 t_m4 = cp.zeros((num_gates), dtype=cp.int32) 63 # ゲート分のデータを作る 64 for i in range(num_gates): 65 l, r, m1, m2, m3, m4 = grid[i] 66 l_h1[i] = l 67 r_h1[i] = r 68 t_m1[i] = m1 69 t_m2[i] = m2 70 t_m3[i] = m3 71 t_m4[i] = m4 72 # 馬モデルを計算 73 self.l2.set_state(chainer.Variable(l_vc), chainer.Variable(l_vh)) 74 l_l1 = F.tanh(self.le(l_h1)) 75 l_l2 = F.tanh(self.l1(l_l1)) 76 l_l3 = F.tanh(self.l2(l_l2)) 77 # 馬モデルのステータスを保存 78 if train == True: 79 l_wc = cp.copy(self.vc.data) 80 l_wh = cp.copy(self.vh.data) 81 for i in range(num_gates): 82 l, r, m1, m2, m3, m4 = grid[i] # l, rは(馬番号, 騎手番号) 83 if cp != np: 84 l = chainer.cuda.to_cpu(l) 85 l = int(l[0]) 86 l_wc[l][:] = self.l2.c.data[i] 87 l_wh[l][:] = self.l2.h.data[i] 88 self.vc.copydata(chainer.Variable(l_wc)) 89 self.vh.copydata(chainer.Variable(l_wh)) 90 # レースモデルを計算 91 r_h1 = F.tanh(self.re(r_h1)) 92 r_h2 = F.tanh(self.r1(r_h1)) 93 j_m1 = self.m1(t_m1) 94 j_m2 = self.m2(t_m2) 95 j_m3 = self.m3(t_m3) 96 j_m4 = self.m4(t_m4) 97 j_h1 = F.concat([l_l3, r_h2, j_m1, j_m2, j_m3, j_m4], axis=1) 98 j_h2 = F.dropout(F.sigmoid(self.j1(j_h1))) 99 j_h3 = F.sigmoid(self.j2(j_h2)) 100 return F.sigmoid(j_h3) 101 102 def reset_state(self): 103 self.l2.reset_state() 104 self.vc.copydata(chainer.Variable(cp.zeros(self.vc.data.shape, dtype=cp.float32))) 105 self.vh.copydata(chainer.Variable(cp.zeros(self.vh.data.shape, dtype=cp.float32)))

試したこと

ipythonでembed()を入れ試して見ましたがどうもなりませんでした

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Ubuntu16.04 chainer4.1で同様のエラーが出ましたが、chainerを3.1までダウングレードしたところ解消しました。

pip install chainer==3.1.0

cupyもダウングレードされ、2.1.0.1が入りました。

投稿2018/06/01 07:30

Takuya_Ando

総合スコア63

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YukiSato

2018/06/01 08:08

ありがとうございます。 おっしゃる通り、chainerとcupyのバージョンの問題でした。 chainerのバージョンを3.5.0に下げcupyもpip install cupy==2.4.0 --no-cache-dir で入れ直したところエラー解消しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問