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

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

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

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

Q&A

0回答

3312閲覧

MNISTのPredictorで予想をした際のAccracy値の取得について

KK-31

総合スコア22

Chainer

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

0グッド

0クリップ

投稿2017/05/23 01:08

編集2022/01/12 10:55

MNISTのAccracyの取得について、

python

1#!/usr/bin/env python 2 3from __future__ import print_function 4 5try: 6 import matplotlib 7 matplotlib.use('Agg') 8except ImportError: 9 pass 10 11import argparse 12 13import chainer 14import chainer.functions as F 15import chainer.links as L 16from chainer import training 17from chainer.training import extensions 18 19 20# Network definition 21class MLP(chainer.Chain): 22 23 def __init__(self, n_units, n_out): 24 super(MLP, self).__init__( 25 # the size of the inputs to each layer will be inferred 26 l1=L.Linear(None, n_units), # n_in -> n_units 27 l2=L.Linear(None, n_units), # n_units -> n_units 28 l3=L.Linear(None, n_out), # n_units -> n_out 29 ) 30 31 def __call__(self, x): 32 h1 = F.relu(self.l1(x)) 33 h2 = F.relu(self.l2(h1)) 34 return self.l3(h2) 35 36 37def main(): 38 parser = argparse.ArgumentParser(description='Chainer example: MNIST') 39 parser.add_argument('--batchsize', '-b', type=int, default=100, 40 help='Number of images in each mini-batch') 41 parser.add_argument('--epoch', '-e', type=int, default=20, 42 help='Number of sweeps over the dataset to train') 43 parser.add_argument('--frequency', '-f', type=int, default=-1, 44 help='Frequency of taking a snapshot') 45 parser.add_argument('--gpu', '-g', type=int, default=-1, 46 help='GPU ID (negative value indicates CPU)') 47 parser.add_argument('--out', '-o', default='result', 48 help='Directory to output the result') 49 parser.add_argument('--resume', '-r', default='', 50 help='Resume the training from snapshot') 51 parser.add_argument('--unit', '-u', type=int, default=1000, 52 help='Number of units') 53 args = parser.parse_args() 54 55 print('GPU: {}'.format(args.gpu)) 56 print('# unit: {}'.format(args.unit)) 57 print('# Minibatch-size: {}'.format(args.batchsize)) 58 print('# epoch: {}'.format(args.epoch)) 59 print('') 60 61 # Set up a neural network to train 62 # Classifier reports softmax cross entropy loss and accuracy at every 63 # iteration, which will be used by the PrintReport extension below. 64 model = L.Classifier(MLP(args.unit, 10)) 65 if args.gpu >= 0: 66 # Make a specified GPU current 67 chainer.cuda.get_device_from_id(args.gpu).use() 68 model.to_gpu() # Copy the model to the GPU 69 70 # Setup an optimizer 71 optimizer = chainer.optimizers.Adam() 72 optimizer.setup(model) 73 74 # Load the MNIST dataset 75 train, test = chainer.datasets.get_mnist() 76 77 train_iter = chainer.iterators.SerialIterator(train, args.batchsize) 78 test_iter = chainer.iterators.SerialIterator(test, args.batchsize, 79 repeat=False, shuffle=False) 80 81 # Set up a trainer 82 updater = training.StandardUpdater(train_iter, optimizer, device=args.gpu) 83 trainer = training.Trainer(updater, (args.epoch, 'epoch'), out=args.out) 84 85 # Evaluate the model with the test dataset for each epoch 86 trainer.extend(extensions.Evaluator(test_iter, model, device=args.gpu)) 87 88 # Dump a computational graph from 'loss' variable at the first iteration 89 # The "main" refers to the target link of the "main" optimizer. 90 trainer.extend(extensions.dump_graph('main/loss')) 91 92 # Take a snapshot for each specified epoch 93 frequency = args.epoch if args.frequency == -1 else max(1, args.frequency) 94 trainer.extend(extensions.snapshot(), trigger=(frequency, 'epoch')) 95 96 # Write a log of evaluation statistics for each epoch 97 trainer.extend(extensions.LogReport()) 98 99 # Save two plot images to the result dir 100 if extensions.PlotReport.available(): 101 trainer.extend( 102 extensions.PlotReport(['main/loss', 'validation/main/loss'], 103 'epoch', file_name='loss.png')) 104 trainer.extend( 105 extensions.PlotReport( 106 ['main/accuracy', 'validation/main/accuracy'], 107 'epoch', file_name='accuracy.png')) 108 109 # Print selected entries of the log to stdout 110 # Here "main" refers to the target link of the "main" optimizer again, and 111 # "validation" refers to the default name of the Evaluator extension. 112 # Entries other than 'epoch' are reported by the Classifier link, called by 113 # either the updater or the evaluator. 114 trainer.extend(extensions.PrintReport( 115 ['epoch', 'main/loss', 'validation/main/loss', 116 'main/accuracy', 'validation/main/accuracy', 'elapsed_time'])) 117 118 # Print a progress bar to stdout 119 trainer.extend(extensions.ProgressBar()) 120 121 if args.resume: 122 # Resume from a snapshot 123 chainer.serializers.load_npz(args.resume, trainer) 124 125 # Run the training 126 trainer.run() 127 128 129if __name__ == '__main__': 130main()

MNISTのこのソースコードが例としてありますが、
LinksのPredictorで、画像を配列化して、推測させる事ができると思います。

下記のように

python

1pred = model.predictor(x) 2

とした場合に、pred変数に予測値がnp.argmax(pred.data)で取れると思いますが、
このときにloss値とAccracy値をとる方法が分からず苦戦しています。
色々と検索しても、中々それっぽいものが見つからず・・・

ご教示のほど、宜しくお願いします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問