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

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

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

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

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Python 3.x

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

Python

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

Q&A

1回答

1786閲覧

python,chainerの画像認識。TypeError'NoneType'

yoshhhi

総合スコア0

Chainer

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

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2020/08/09 07:31

編集2020/08/09 09:52

前提・実現したいこと

pythonによる画像認識のディープラーニングをchainerのライブラリを用いて行っています。
動作環境は、JupyterNotebookです。馬と牛の分類を目的としています。
データセットの作成までは問題なくできたのですが、CNN学習モデルの設定でエラーが出て解決できずにいます。

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

#学習の実行セルに発生 TypeError Traceback (most recent call last) <ipython-input-27-ab3509b1dfc4> in <module> 1 #学習の実行 ----> 2 trainer.run() ~\Anaconda\envs\project_1\lib\site-packages\chainer\training\trainer.py in run(self, show_loop_exception_msg) 347 f.write('Traceback (most recent call last):\n') 348 traceback.print_tb(sys.exc_info()[2]) --> 349 six.reraise(*exc_info) 350 finally: 351 for _, entry in extensions: ~\Anaconda\envs\project_1\lib\site-packages\six.py in reraise(tp, value, tb) 701 if value.__traceback__ is not tb: 702 raise value.with_traceback(tb) --> 703 raise value 704 finally: 705 value = None ~\Anaconda\envs\project_1\lib\site-packages\chainer\training\trainer.py in run(self, show_loop_exception_msg) 314 self.observation = {} 315 with reporter.scope(self.observation): --> 316 update() 317 for name, entry in extensions: 318 if entry.trigger(self): ~\Anaconda\envs\project_1\lib\site-packages\chainer\training\updaters\standard_updater.py in update(self) 173 174 """ --> 175 self.update_core() 176 self.iteration += 1 177 ~\Anaconda\envs\project_1\lib\site-packages\chainer\training\updaters\standard_updater.py in update_core(self) 178 def update_core(self): 179 iterator = self._iterators['main'] --> 180 batch = iterator.next() 181 in_arrays = convert._call_converter(self.converter, batch, self.device) 182 ~\Anaconda\envs\project_1\lib\site-packages\chainer\iterators\multiprocess_iterator.py in __next__(self) 148 if self._prefetch_loop.measure_required(): 149 measure_mode = True --> 150 batch, state = self._prefetch_loop.measure( 151 self.dataset_timeout) 152 self._prefetch_loop.launch_thread() ~\Anaconda\envs\project_1\lib\site-packages\chainer\iterators\multiprocess_iterator.py in measure(self, dataset_timeout) 449 450 batch = batch_ret[0] --> 451 self.mem_size = max(map(_measure, batch)) 452 self._allocate_shared_memory() 453 TypeError: 'NoneType' object is not iterable

該当のソースコード

python

1#セータセットの作成 2from chainer.datasets import LabeledImageDataset 3horcecow_dataset = LabeledImageDataset(image_and_teacher_label_list) 4 5#データセットの代入 6from chainer.datasets import TransformDataset 7transformed_dataset = TransformDataset(horcecow_dataset, adapt_data_to_convolution2d_format) 8 9#学習データと検証データを分ける 10from chainer import datasets 11train_data, test_data = datasets.split_dataset_random(transformed_dataset, int(len(transformed_dataset) * 0.8), seed=0) 12 13import chainer 14import chainer.functions as F 15import chainer.links as L 16from chainer import training, serializers, Chain, optimizers, iterators 17from chainer.training import extensions, Trainer 18 19GPU_ID = -1 20BATCH_SIZE = 20 21MAX_EPOCH = 10 22 23#CNNの設定 24class CNN(Chain): 25 def __init__(self): 26 super(CNN, self).__init__() 27 with self.init_scope(): 28 self.conv1 = L.Convolution2D(None,out_channels=32, ksize=3, stride=1, pad=1) 29 self.conv2 = L.Convolution2D(in_channels=32, out_channels=64, ksize=3, stride=1, pad=1) 30 self.conv3 = L.Convolution2D(in_channels=64, out_channels=128, ksize=3, stride=1, pad=1) 31 self.conv4 = L.Convolution2D(in_channels=128, out_channels=256, ksize=3, stride=1, pad=1) 32 self.layer1 = L.Linear(None, 1000) 33 self.layer2 = L.Linear(1000, 2) 34 35 def __call__(self, input): 36 func = F.max_pooling_2d(F.relu(self.conv1(input)), ksize=2, stride=2) 37 func = F.max_pooling_2d(F.relu(self.conv2(func)), ksize=2, stride=2) 38 func = F.max_pooling_2d(F.relu(self.conv3(func)), ksize=2, stride=2) 39 func = F.max_pooling_2d(F.relu(self.conv4(func)), ksize=2, stride=2) 40 func = F.dropout(F.relu(self.layer1(func)), ratio=0.80) 41 func = self.layer2(func) 42 return func 43 44#モデルのインスタンス作成 45model = L.Classifier(CNN()) 46 47#反復子の作成 48#train_data,test_dataはデータセット済み 49train_iterator = iterators.MultiprocessIterator(train_data, BATCH_SIZE) 50test_iterator = iterators.MultiprocessIterator(test_data, BATCH_SIZE, False, False) 51 52#最適化 53optimizer = optimizers.Adam().setup(model) 54 55#ミニバッチの学習 56updater = training.StandardUpdater(train_iterator, optimizer, device=GPU_ID) 57 58#学習プロセスの自動化 59trainer = Trainer(updater, stop_trigger=(MAX_EPOCH, 'epoch')) 60 61#学習の実行 62trainer.run()

試したこと

CNNクラスの畳み込み層の入出力をいろいろと変化させてみました。
おそらくどこかの戻り値がNoneになってしまっていると思います。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

can110

2020/08/09 08:58

どこでエラーが発生したか分からないのでエラーは全文(Traceback)を記載ください。
can110

2020/08/09 09:45

train_data, test_dataの生成部分のコードも提示ください。 あるいはそれぞれの.shapeを記載ください。
yoshhhi

2020/08/09 09:55

ご指摘ありがとうございます。 更新した内容で大丈夫でしょうか? train_dataは92個、test_dataは23個のデータとなっています。 宜しくお願い致します。
can110

2020/08/09 09:59

> train_dataは92個、test_dataは23個のデータとなっています。 どのような手段(コード)で確認しましたか?また、shapeはどうなっていますか? print(train_data.shape);print(test_data.shape)の結果を記載ください。
yoshhhi

2020/08/09 10:05

print(len(train_data)),print(len(test_data))で確認した次第です。 print(train_data.shape),print(test_data.shape)ですと以下のようなエラーが表示されてしまいます。 AttributeError Traceback (most recent call last) <ipython-input-18-d4c4574dd2a8> in <module> ----> 1 print(train_data.shape) 2 print(test_data.shape) AttributeError: 'SubDataset' object has no attribute 'shape'
can110

2020/08/09 10:24

あ。chainerはnumpy:arrayじゃないんですね。失礼&了解しました。
guest

回答1

0

まずはどこでなにがNoneになるのかを調べてみては。

投稿2020/08/09 07:50

y_waiwai

総合スコア88024

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

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

yoshhhi

2020/08/09 07:53

ご回答ありがとうございます。 色々とprint()で調べてみたのですが、突き止めることができず質問するに至った次第です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問