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

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

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

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

Python

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

Q&A

解決済

1回答

966閲覧

StopIterationについて

k.nirasawa

総合スコア8

Chainer

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

Python

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

0グッド

0クリップ

投稿2021/09/05 03:20

編集2021/09/05 08:12
while train_iterator.epoch<MAX_EPOCH: #学習データセットを反復子から取り出す train_dataset=train_iterator.next() #学習データを学習データと教師ラベルデータにアンパック train_data,teacher_labels=concat_examples(train_dataset) #モデルにかけて、予測値の計算 prediction_train=model(train_data) #得られた予測値と教師ラベルデータと比較して、学習誤差の計算をする loss=F.softmax_cross_entropy(prediction_train,teacher_labels) #ニューラルネットワークの中の勾配を計算します model.cleargrads() #誤差を逆伝播する loss.backward() #誤差を反映して、パラメータを更新する optimizer.update() #一回学習(epoch)が終わったら検証データに対する予測精度を計ります if train_iterator.is_new_epoch: testEpoch(train_iterator,loss)

学習回数:01-->学習誤差:0.50検証誤差:0.5114検証精度:0.88
検証誤差:0.4885検証精度:0.90
検証誤差:0.4978検証精度:0.89
検証誤差:0.5168検証精度:0.88
検証誤差:0.5342検証精度:0.87
検証誤差:0.5556検証精度:0.85
検証誤差:0.5611検証精度:0.85
検証誤差:0.5474検証精度:0.86
検証誤差:0.5362検証精度:0.86
検証誤差:0.5414検証精度:0.86
検証誤差:0.5422検証精度:0.86
検証誤差:0.5513検証精度:0.86
検証誤差:0.5761検証精度:0.85
検証誤差:0.5753検証精度:0.85
検証誤差:0.5760検証精度:0.85
検証誤差:0.5803検証精度:0.85
検証誤差:0.5814検証精度:0.85
検証誤差:0.5903検証精度:0.85
検証誤差:0.5872検証精度:0.85
検証誤差:0.5852検証精度:0.85
検証誤差:0.5914検証精度:0.85
検証誤差:0.6007検証精度:0.85
検証誤差:0.6023検証精度:0.85
検証誤差:0.6001検証精度:0.85
検証誤差:0.5970検証精度:0.85
検証誤差:0.5965検証精度:0.85
検証誤差:0.5970検証精度:0.85
検証誤差:0.5938検証精度:0.85
検証誤差:0.5881検証精度:0.85
検証誤差:0.5883検証精度:0.85
検証誤差:0.5836検証精度:0.85
検証誤差:0.5831検証精度:0.85
検証誤差:0.5812検証精度:0.85
検証誤差:0.5805検証精度:0.85
検証誤差:0.5781検証精度:0.85
検証誤差:0.5806検証精度:0.85
検証誤差:0.5770検証精度:0.85
検証誤差:0.5819検証精度:0.85
検証誤差:0.5870検証精度:0.85
検証誤差:0.5872検証精度:0.85
検証誤差:0.5861検証精度:0.85
検証誤差:0.5857検証精度:0.85
検証誤差:0.5879検証精度:0.85
検証誤差:0.5883検証精度:0.85
検証誤差:0.5898検証精度:0.85
検証誤差:0.5885検証精度:0.85
検証誤差:0.5870検証精度:0.85
検証誤差:0.5856検証精度:0.85
検証誤差:0.5888検証精度:0.85
検証誤差:0.5884検証精度:0.85
検証誤差:0.5846検証精度:0.85
検証誤差:0.5800検証精度:0.85
検証誤差:0.5756検証精度:0.85
検証誤差:0.5690検証精度:0.85
検証誤差:0.5623検証精度:0.86
検証誤差:0.5579検証精度:0.86
検証誤差:0.5565検証精度:0.86
検証誤差:0.5532検証精度:0.86
検証誤差:0.5515検証精度:0.86
検証誤差:0.5509検証精度:0.86
検証誤差:0.5511検証精度:0.86
検証誤差:0.5485検証精度:0.86
検証誤差:0.5419検証精度:0.86
検証誤差:0.5374検証精度:0.86
検証誤差:0.5339検証精度:0.86
検証誤差:0.5347検証精度:0.86
検証誤差:0.5351検証精度:0.86
検証誤差:0.5356検証精度:0.86
検証誤差:0.5331検証精度:0.86
検証誤差:0.5301検証精度:0.86
検証誤差:0.5264検証精度:0.87
検証誤差:0.5242検証精度:0.87
検証誤差:0.5225検証精度:0.87
検証誤差:0.5184検証精度:0.87
検証誤差:0.5195検証精度:0.87
検証誤差:0.5177検証精度:0.87
検証誤差:0.5154検証精度:0.87
検証誤差:0.5119検証精度:0.87
検証誤差:0.5125検証精度:0.87
検証誤差:0.5097検証精度:0.87
検証誤差:0.5072検証精度:0.87
検証誤差:0.5050検証精度:0.87
検証誤差:0.5043検証精度:0.87
検証誤差:0.5023検証精度:0.88
検証誤差:0.5000検証精度:0.88
検証誤差:0.4979検証精度:0.88
検証誤差:0.4945検証精度:0.88
検証誤差:0.4901検証精度:0.88
検証誤差:0.4864検証精度:0.88
検証誤差:0.4833検証精度:0.88
検証誤差:0.4848検証精度:0.88
検証誤差:0.4826検証精度:0.88
検証誤差:0.4814検証精度:0.88
検証誤差:0.4788検証精度:0.88
検証誤差:0.4768検証精度:0.88
検証誤差:0.4752検証精度:0.88
検証誤差:0.4761検証精度:0.88
検証誤差:0.4794検証精度:0.88
検証誤差:0.4814検証精度:0.88

AttributeError Traceback (most recent call last)
<ipython-input-22-e885206495e7> in <module>()
21 #一回学習(epoch)が終わったら検証データに対する予測精度を計ります
22 if train_iterator.is_new_epoch:
---> 23 testEpoch(train_iterator,loss)

<ipython-input-19-cc2b39f6b0fe> in testEpoch(train_iterator, loss)
24
25 if test_iterator.is_new_epoch:
---> 26 test_iterator.epoch=0
27 test_iterator.current_position=0
28 test_iterator.is_new_epoch=False

AttributeError: can't set attribute
解決策がわかりません

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

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

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

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

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

jbpb0

2021/09/05 06:09

---> 23 testEpoch(train_iterator,loss) の後に、もっといろいろ表示されてたら、省略しないで全部書いてください あと、「testEpoch」って何でしょうか?
k.nirasawa

2021/09/05 08:14

編集しました。前とは違うエラーが出てしまいました。 testEpochについては、自分もサンプルコードを参考に作っているため把握しておりません。 申し訳ありません。
guest

回答1

0

ベストアンサー

25 if test_iterator.is_new_epoch:

---> 26 test_iterator.epoch=0
27 test_iterator.current_position=0
28 test_iterator.is_new_epoch=False
AttributeError: can't set attribute

chainerでのAttributeError: can't set attributeがわからない
の私の回答を見てください

 
【追記】

「StopIteration」というエラーが出てしまいました。

python

1test_iterator = iterators.SerialIterator(test_data, BATCH_SIZE, 2 repeat=False, shuffle=False)

↓ 変更

python

1test_iterator = iterators.SerialIterator(test_data, BATCH_SIZE, shuffle=False)

投稿2021/09/05 08:30

編集2021/09/08 04:52
jbpb0

総合スコア7651

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

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

k.nirasawa

2021/09/06 01:43

修正して試してみましたが、「StopIteration」というエラーが出てしまいました。
jbpb0

2021/09/06 04:24

そのエラーも、省略しないで質問を編集して書いてください (今質問に書かれてるエラーは削除しないで残して、それに追記する)
k.nirasawa

2021/09/07 03:24

エラーを書こうともう一度コードを実行したところ、今まで1一回で終わっていた学習が複数回続きました。コードはいじっていないのですがこれはエラーになるのでしょうか? 学習終了後にエラーの表記はありませんでした。 動かそうとしているのは、おっしゃる通りのministのコードです。
jbpb0

2021/09/08 07:26 編集

書籍のコード https://github.com/Kokensha/book-ml/blob/master/Colaboratory/04_05(Chainer_MNIST).ipynb から、私が最初に回答に書いた(実際は他の質問の回答の参照ですが)変更のみ行った状態で、最新のChainer 7.8.0で実行したら、「StopIteration」が発生しました そこで、書籍に書かれてるChainerのバージョン5.0.0で動かしたら、「StopIteration」は発生しませんでした また、回答に追記した変更を行ったら、Chainer 7.8.0のままでも「StopIteration」は発生しなくなりました 【追記】 Chainer 5.0.0で動かす場合は、書籍のコードのまま変更無しで動きました (この質問の回答の最初に書いた変更も不要)
k.nirasawa

2021/09/08 06:58

その場合は1回バージョン7.8.0をアンインストールしてから、バージョン5.0.0をインストールしなおしたということでしょうか?
jbpb0

2021/09/08 07:23

pipで入れたなら、 pip install chainer==5.0.0 だけで、既に入ってるのをまずアンインストールしてから、5.0.0を入れてくれます
k.nirasawa

2021/09/09 01:35

わかりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問