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

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

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

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

Q&A

0回答

245閲覧

chainerで学習曲線をplotしたい

Kiwamizamurai

総合スコア6

Python 3.x

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

0グッド

0クリップ

投稿2018/08/13 05:20

ChainerでMNISTを使ってNNを実装したんですがaccuracyとlossのPlotの方法がわかりません。できればモデルA,モデルBでの結果を比較できるような形でPlotしたいです。最適化も比較できれば尚いいです。よろしくお願いします。

import matplotlib.pyplot as plt from chainer import cuda from chainer import serializer import chainer from chainer import functions as F from chainer import links as L from chainer import Variable import numpy as np from chainer import optimizers from chainer import training train_full, test_full = chainer.datasets.get_mnist() train = chainer.datasets.SubDataset(train_full, 0, 1000) test = chainer.datasets.SubDataset(test_full, 0, 1000) batchsize = 30 train_iter = chainer.iterators.SerialIterator(train, batchsize) test_iter = chainer.iterators.SerialIterator(test, batchsize, repeat = False, shuffle = False) class MultilayerPerceptron(chainer.Chain): def __init__(self, n_units, n_out): super(MultilayerPerceptron, self).__init__() with self.init_scope(): # full combination # at the same time, create a weight matrix (n_inputs, n_units) self.l1 = L.Linear(None, n_units) # n_in -> n_units self.l2 = L.Linear(None, n_units) # n_units -> n_units self.l3 = L.Linear(None, n_out) # n_units -> n_out self.bn = L.BatchNormalization(n_units) def __call__(self, x): h1 = self.l1(x) hb1 = F.relu(h1) h2 = self.l2(hb1) hb2 = F.relu(self.l2(h2)) y = self.l3(hb2) return y class MultilayerPerceptronV2(MultilayerPerceptron): def __call__(self, x): # most common activation function h1 = self.l1(x) b1 = self.bn(h1) hb1 = F.relu(b1) h2 = self.l2(hb1) b2 = self.bn(h2) hb2 = F.relu(self.l2(b2)) y = self.l3(hb2) return y model = L.Classifier(MultilayerPerceptron(784, 10)) # choose optimizer # AdaDelta, AdaGrad, Adam, MomentumSGD, NesterovAG, RMSprop, RMSpropGraves, SGD, SMORMS3 opt = optimizers.SGD() # self.setup(Link or Chain) opt.setup(model) # device=-1 means Using CPU updater = training.StandardUpdater(train_iter, opt, device=-1) epoch = 10 trainer = training.Trainer(updater, (epoch, 'epoch'), out='/tmp/result') trainer.extend(training.extensions.Evaluator(test_iter, model, device=-1)) trainer.extend(training.extensions.LogReport(trigger=(1, "epoch"))) trainer.extend(training.extensions.PrintReport( ['epoch', 'main/loss', 'main/accuracy', 'validation/main/loss', 'validation/main/accuracy', 'elapsed_time']), trigger=(1, "epoch")) trainer.run()

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問