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

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

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

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

620閲覧

chainerでconvolution_2d関連のエラーが出てしまう

shinww

総合スコア4

Chainer

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2022/10/27 04:59

編集2022/10/29 10:30

前提

chainerで画像分類のための機械学習をしていたところエラーが発生した

実現したいこと

  • エラーを修正

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

Traceback (most recent call last):

File "train_imagenet.py", line 352, in <module>
train_loop()

File "train_imagenet.py", line 327, in train_loop
optimizer.update(model, x, t)

File "C:\Users\user01\AppData\Local\Programs\Python\Python37\lib\site-packages\chainer\optimizer.py", line 864, in update
loss = lossfun(*args, **kwds)

File "C:\Users\user01\Desktop\実験データ\20201114\nin.py", line 35, in call
h = F.max_pooling_2d(F.relu(self.mlpconv1(x)), 3, stride=2)

File "C:\Users\user01\AppData\Local\Programs\Python\Python37\lib\site-packages\chainer\link.py", line 294, in call
out = forward(*args, **kwargs)

File "C:\Users\user01\AppData\Local\Programs\Python\Python37\lib\site-packages\chainer\links\connection\mlp_convolution_2d.py", line 107, in forward
x = f(l(x))

File "C:\Users\user01\AppData\Local\Programs\Python\Python37\lib\site-packages\chainer\link.py", line 294, in call
out = forward(*args, **kwargs)

File "C:\Users\user01\AppData\Local\Programs\Python\Python37\lib\site-packages\chainer\links\connection\convolution_2d.py", line 184, in forward
groups=self.groups)

File "C:\Users\user01\AppData\Local\Programs\Python\Python37\lib\site-packages\chainer\functions\connection\convolution_2d.py", line 589, in convolution_2d
y, = fnode.apply(args)

File "C:\Users\user01\AppData\Local\Programs\Python\Python37\lib\site-packages\chainer\function_node.py", line 289, in apply
utils._check_arrays_forward_compatible(in_data, self.label)

File "C:\Users\user01\AppData\Local\Programs\Python\Python37\lib\site-packages\chainer\utils_init_.py", line 93, in _check_arrays_forward_compatible
', '.join(str(type(a)) for a in arrays)))

TypeError: incompatible array types are mixed in the forward input (Convolution2DFunction).
Actual: <class 'numpy.ndarray'>, <class 'cupy.core.core.ndarray'>, <class 'cupy.core.core.ndarray'>

該当のソースコード

python

1 def __init__(self): 2 w = math.sqrt(2) # MSRA scaling 3 super(NIN, self).__init__( 4 mlpconv1=L.MLPConvolution2D( 5 3, (96, 96, 96), 11, stride=4), 6 mlpconv2=L.MLPConvolution2D( 7 96, (256, 256, 256), 5, pad=2), #wscale=w削除 8 mlpconv3=L.MLPConvolution2D( 9 256, (384, 384, 384), 3, pad=1), 10 mlpconv4=L.MLPConvolution2D( 11 384, (1024, 1024, 1000), 3, pad=2), 12 ) 13 self.train = True 14 15 def clear(self): 16 self.loss = None 17 self.accuracy = None 18 19 def __call__(self, x, t): 20 self.clear() 21 22 h = F.max_pooling_2d(F.relu(self.mlpconv1(x)), 3, stride=2) 23 h = F.max_pooling_2d(F.relu(self.mlpconv2(h)), 3, stride=2) 24 h = F.max_pooling_2d(F.relu(self.mlpconv3(h)), 3, stride=2) 25 h = self.mlpconv4(F.dropout(h)) 26 h = F.reshape(F.average_pooling_2d(h, 6), (x.data.shape[0], 1000)) 27 28 self.loss = F.softmax_cross_entropy(h, t) 29 self.accuracy = F.accuracy(h, t) 30 return self.loss 31 32train_imagenet.py 33 34def train_loop(): 35 # Trainer 36 graph_generated = False 37 while True: 38 while data_q.empty(): 39 time.sleep(0.1) 40 inp = data_q.get() 41 if inp == 'end': # quit 42 res_q.put('end') 43 break 44 elif inp == 'train': # restart training 45 res_q.put('train') 46 model.train = True 47 continue 48 elif inp == 'val': # start validation 49 res_q.put('val') 50 #serializers.save_npz(args.out, model) 51 #model.to_cpu() 52 pickle.dump(model, open(args.out, 'wb'), -1) 53 serializers.save_npz(args.outstate, optimizer) 54 model.train = False 55 continue 56 57 volatile = 'off'if model.train else 'on' 58 #x = chainer.Variable(xp.asarray(inp[0]), volatile=volatile) 59 x = chainer.Variable(xp.asarray(inp[0])) 60 with chainer.no_backprop_mode(): 61 #t = chainer.Variable(xp.asarray(inp[1]),volatile=volatile) 62 t = chainer.Variable(xp.asarray(inp[1])) 63 with chainer.no_backprop_mode(): 64 65 #if model.train: 66 if model: #← 67 x = chainer.Variable(np.asarray(inp[0])) 68 t = chainer.Variable(np.asarray(inp[1])) 69 optimizer.update(model, x, t) 70 #print(f"acc: {model.accuracy.data}, loss: {model.loss.data}") #追加 71 if not graph_generated: 72 with open('graph.dot', 'w') as o: 73 o.write(computational_graph.build_computational_graph( 74 (model.loss,)).dump()) 75 print('generated graph', file=sys.stderr) 76 graph_generated = True 77 else: 78 with chainer.no_backprop_mode(): 79 80 model(x, t) 81 82 res_q.put((float(model.loss.data), float(model.accuracy.data))) 83 del x, t 84 85### 試したこと 86以前の質問で解決したのですが、PCが故障してしまいPCを変えたところ動かなくなってしまいました。 87実行環境に関して覚えがなく、様々な環境で行ってみましたがうまいくいきませんでした。 88いろいろと調査したところchainerv4においてNumPy/CuPy 配列を引数に混在させた関数の呼び出しが機能しないというのは分かりましたが解決法が分からないという状態です。 89↑の場合にincompatible array types are mixed in the forward input のエラーが出ることが分かりました。 90

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

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

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

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

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

jbpb0

2022/10/27 06:59

質問に記載のエラーメッセージよりも上に「Traceback」と書かれてたら、そこから下をできるだけ省略せずに質問に記載してください (ここに書くのではなく、質問を編集して追記する) ユーザー名等の個人情報は伏せ字でいいですが、それ以外はできるだけそのまま記載してください
jbpb0

2022/10/27 08:58 編集

エラーメッセージによると、「train_imagenet.py」の「train_loop()」の「optimizer.update(model, x, t)」でエラーになってるので、その行までの情報も無いと、よく分りません どんなデータを使って、何をしてるのか 参考にしてる(同じコードが記載されてる)Webページや、書籍とかありませんでしょうか? もしあるなら、Webページのurlとか、書籍名とページ数とか、質問に追記してください (ここに書くのではなく、質問を編集して追記する) 【追記】 https://teratail.com/questions/l6qzsx59ibul6y の質問のコードに、回答の修正を適用したものでしょうか?
shinww

2022/10/27 09:01

おっしゃるとおりです。以前のものから環境を変えたらできなくなってしまいました。
jbpb0

2022/10/27 10:57

https://teratail.com/questions/l6qzsx59ibul6y の時は、回答のコメントで「コードの修正したところ学習がうまくいくようになりました。」と書いてたのだから、ちゃんと実行できてたのですよね そこからの変化点は何でしょうか? 使ってるデータを変えたのでしょうか? 当時と全く同じデータとコードで実行しても、この質問のエラーが出るのでしょうか?
shinww

2022/10/27 14:59

使っていたPCが故障してしまい、別のPCで行ってみたところ不具合が出てしまったという感じです。
guest

回答1

0

自己解決

gpu.~を追加することで解決しました。

投稿2022/11/17 08:53

shinww

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問