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

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

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

DataSetは、ADO.NETアーキテクチャのコンポーネントです。データベースから取得したレコードをメモリ領域に格納するクラスを指します。データの保持やテーブル間のリレーション・制約といった保持も可能です。

Chainer

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

Python

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

Q&A

1回答

278閲覧

MNISTを元に作成したdatasetで学習したい

155ccmm

総合スコア12

DataSet

DataSetは、ADO.NETアーキテクチャのコンポーネントです。データベースから取得したレコードをメモリ領域に格納するクラスを指します。データの保持やテーブル間のリレーション・制約といった保持も可能です。

Chainer

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

Python

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

0グッド

0クリップ

投稿2019/01/16 05:55

前提・実現したいこと

MNISTの学習プログラムを元に自分の作成したdatasetを学習させ、3つに分類したいです。
datasetとして下記のように、images.txtを読み込んでdatasetを作成してます。
(とりあえず、自分の作成したdatasetで学習できるのかの動作を確認したいと思っているので、それぞれ5つずつ学習データとして用意しています。)

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

C:\Users***\Anaconda3\python.exe C:/Users/***/PycharmProjects/project/cnn.py GPU: -1 # unit: 5 # Minibatch-size: 15 # epoch: 15 Traceback (most recent call last): File "C:/Users/***/PycharmProjects/project/cnn.py", line 87, in <module> main() File "C:/Users/***/PycharmProjects/project/cnn.py", line 52, in main train, test = chainer.datasets.LabeledImageDataset(image_files) ValueError: too many values to unpack (expected 2)

該当のソースコード

python

1from __future__ import print_function 2import argparse 3 4import chainer 5import chainer.functions as F 6import chainer.links as L 7import chainer.initializers as I 8from chainer import training 9from chainer.training import extensions 10 11import numpy as np 12import glob 13 14 15from sklearn.model_selection import train_test_split 16 17 18class MLP(chainer.Chain): 19 def __init__(self, n_units, n_out): 20 w = I.Normal(scale=0.05) # モデルパラメータの初期化 21 super(MLP, self).__init__( 22 conv1=L.Convolution2D(1, 16, 5, 1, 0), # 1層目の畳み込み層(フィルタ数は16) 23 conv2=L.Convolution2D(16, 32, 5, 1, 0), # 2層目の畳み込み層(フィルタ数は32) 24 l3=L.Linear(None, n_out, initialW=w), #クラス分類用 25 ) 26 def __call__(self, x): 27 h1 = F.max_pooling_2d(F.relu(self.conv1(x)), ksize=2, stride=2) # 最大値プーリングは2×2,活性化関数はReLU 28 h2 = F.max_pooling_2d(F.relu(self.conv2(h1)), ksize=2, stride=2) 29 y = self.l3(h2) 30 return y 31 32def main(): 33 parser = argparse.ArgumentParser(description='Chainer example: MNIST') 34 parser.add_argument('--batchsize', '-b', type=int, default=15, help='Number of images in each mini-batch') 35 parser.add_argument('--epoch', '-e', type=int, default=15, help='Number of sweeps over the dataset to train') 36 parser.add_argument('--gpu', '-g', type=int, default=-1, help='GPU ID (negative value indicates CPU)') 37 parser.add_argument('--out', '-o', default='result', help='Directory to output the result') 38 parser.add_argument('--resume', '-r', default='', help='Resume the training from snapshot') 39 parser.add_argument('--unit', '-u', type=int, default=5, help='Number of units') 40 args = parser.parse_args() 41 42 print('GPU: {}'.format(args.gpu)) 43 print('# unit: {}'.format(args.unit)) 44 print('# Minibatch-size: {}'.format(args.batchsize)) 45 print('# epoch: {}'.format(args.epoch)) 46 print('') 47 48 image_files = 'images.txt' 49 train, test = chainer.datasets.LabeledImageDataset(image_files) 50 #train, test = chainer.datasets.get_mnist(ndim=3)# ndim=3を引数で与えるだけでOK 51 52 model = L.Classifier(MLP(args.unit, 10), lossfun=F.softmax_cross_entropy) 53 54 if args.gpu >= 0: 55 chainer.cuda.get_device(args.gpu).use() 56 model.to_gpu() 57 optimizer = chainer.optimizers.Adam() 58 optimizer.setup(model) 59 train_iter = chainer.iterators.SerialIterator(train, args.batchsize) 60 test_iter = chainer.iterators.SerialIterator(test, args.batchsize, repeat=False, shuffle=False) 61 updater = training.StandardUpdater(train_iter, optimizer, device=args.gpu) 62 63 trainer = training.Trainer(updater, (args.epoch, 'epoch'), out=args.out) 64 trainer.extend(extensions.Evaluator(test_iter, model, device=args.gpu)) 65 trainer.extend(extensions.dump_graph('main/loss')) 66 trainer.extend(extensions.snapshot(), trigger=(args.epoch, 'epoch')) 67 trainer.extend(extensions.LogReport()) 68 trainer.extend(extensions.PlotReport(['main/loss', 'validation/main/loss'], 'epoch', file_name='loss.png')) 69 trainer.extend(extensions.PlotReport(['main/accuracy', 'validation/main/accuracy'], 'epoch', file_name='accuracy.png')) 70 trainer.extend(extensions.PrintReport( ['epoch', 'main/loss', 'validation/main/loss', 'main/accuracy', 'validation/main/accuracy', 'elapsed_time'])) 71 trainer.extend(extensions.ProgressBar()) 72 73 if args.resume: 74 chainer.serializers.load_npz(args.resume, trainer) 75 76 trainer.run() 77 model.to_cpu() 78 79 modelname = args.out + "/MLP.model" 80 print('save the trained model: {}'.format(modelname)) 81 chainer.serializers.save_npz(modelname, model) 82 83if __name__ == '__main__': 84 main() 85
./dataset/pic/train/1/2.png 1 ./dataset/pic/train/1/3.png 1 ./dataset/pic/train/1/4.png 1 ./dataset/pic/train/1/5.png 1 ./dataset/pic/train/1/6.png 1 ./dataset/pic/train/2/2.png 2 ./dataset/pic/train/2/3.png 2 ./dataset/pic/train/2/4.png 2 ./dataset/pic/train/2/5.png 2 ./dataset/pic/train/2/6.png 2 ./dataset/pic/train/3/41.png 3 ./dataset/pic/train/3/42.png 3 ./dataset/pic/train/3/43.png 3 ./dataset/pic/train/3/44.png 3 ./dataset/pic/train/3/45.png 3

試したこと

ここに問題に対して試したことを記載してください。

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

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

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

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

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

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

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

guest

回答1

0

エラー文を怖がらずに読んでみてください

ValueError: too many values to unpack (expected 2)

意訳
2つの値が出てくることを期待されてるけど、
それは多すぎて展開できないよ。

つまり

train, test = chainer.datasets.LabeledImageDataset(image_files)

のところがいけなくて
data_set = chainer.datasets.LabeledImageDataset(image_files)
としておいたあとに
何かしたの関数を使用してtrainとtestに分けなければいけません

投稿2019/01/16 08:58

ko.tu

総合スコア178

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問