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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

646閲覧

chainerのtrainer.run()がうまく実行できない

thino

総合スコア7

Chainer

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/10/30 12:08

編集2022/10/30 12:10

前提

http://lovedata.main.jp/2019/06/15/startdeeplearning/
を参考にニューラルネットによる予測モデルを作成しています

実現したいこと

trainerをrunさせたい

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

Exception in main training loop: 'NN' object has no attribute 'forward' Traceback (most recent call last): File "/usr/local/lib/python3.7/dist-packages/chainer/training/trainer.py", line 343, in run update() File "/usr/local/lib/python3.7/dist-packages/chainer/training/updaters/standard_updater.py", line 240, in update self.update_core() File "/usr/local/lib/python3.7/dist-packages/chainer/training/updaters/standard_updater.py", line 253, in update_core optimizer.update(loss_func, *in_arrays) File "/usr/local/lib/python3.7/dist-packages/chainer/optimizer.py", line 874, in update loss = lossfun(*args, **kwds) File "/usr/local/lib/python3.7/dist-packages/chainer/link.py", line 286, in __call__ forward = self.forward # type: ignore Will finalize trainer extensions and updater before reraising the exception.

該当のソースコード

python

1#ニューラルネットワークのクラスを作成 2class NN(chainer.Chain): 3 4 #モデルの構造 5 def __init__(self,n_mid_units,n_out=1): 6 super().__init__() 7 8 #パラメータを持つ層の登録 9 with self.init_scope(): 10 self.fc1=L.Linear(None,n_mid_units) 11 self.fc2=L.Linear(None,n_out) 12 self.bn=L.BatchNormalization(x_num) 13 14 15 #損失関数の計算 16 def __call__(self,x,t): 17 y=self.predictor(x) 18 loss=F.mean_squared_error(t,y) 19 chainer.report({'loss':loss},self) 20 return loss 21 22 #順伝搬 23 def predictor(self,x): 24 h=self.bn(x) 25 h=self.fc1(h) 26 h=F.relu(h) 27 h=self.fc2(h) 28 return h 29 30#中間層のノード数、バッチサイズを変化させながら誤差の変化を確認 31for i in [1,3,5,10,20]: 32 print('n_mid_units={}'.format(i)) 33 34 #中間層の数を変える 35 model =NN(n_mid_units=i) 36 37 optimizer=chainer.optimizers.Adam() 38 optimizer.setup(model) 39 40 batchsize=10 41 train_iter=chainer.iterators.SerialIterator(train,batchsize) 42 test_iter=chainer.iterators.SerialIterator(train,batchsize,repeat=False,shuffle=False) 43 44 from chainer import training 45 updater=training.StandardUpdater(train_iter,optimizer,device=-1) 46 47 epoch=20 48 trainer=training.Trainer(updater,(20,'epoch'),out='result/electricpower_n_mid_units{}'.format(i)) 49 from chainer.training import extensions 50 51 trainer.extend(extensions.Evaluator(test_iter,model,device=-1)) 52 trainer.extend(extensions.LogReport(trigger=(1,'epoch'))) 53 trainer.extend(extensions.PrintReport(['epoch','main/loss','validation/main/loss','elapsed_time']),trigger=(1,'epoch')) 54

試したこと

上記コードまではうまく行っており、trainer.run()をその次に行うとエラーが出てしまいます。コード自体はurlの通りだと思います。
他の方の質問にあったself._done=Falseを試しに行いましたがうまく行きませんでした。

補足情報(FW/ツールのバージョンなど)

Googleコラボ使用中

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

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

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

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

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

guest

回答2

0

自己解決

インデントがずれていました

投稿2022/11/01 00:08

thino

総合スコア7

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

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

0

chainerはすでにメンテナンスされていないので、使わないほうが良いでしょう

投稿2022/10/31 08:29

dark-eater-kei

総合スコア1248

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問