前提・実現したいこと
Chainerを用いて、入力画像を2つのグループに分類するCNNを作ろうと考えています。
そして、作ったモデルを評価するためにextensionsを使うつもりです
しかし、extensionsを使っても以下のように値が表示されるはずの箇所が空白になっています。
原因がわかる方、解決方法がわかる方は是非教えてください
発生している問題・エラーメッセージ
エラーメッセージ test:2001 10001 epoch main/loss main/accuracy validation/main/loss validation/main/accuracy elapsed_time 1 127.978 2 136.339 3 144.826 4 153.156 5 161.596 6 169.946 7 178.368 8 186.679 9 195.067 10 203.447
該当のソースコード
python
1import os 2import numpy as np 3from PIL import Image 4import matplotlib 5matplotlib.use('Agg') 6import chainer 7from chainer import cuda,Function,report,training,utils,Variable 8from chainer import datasets,iterators,optimizers,serializers,cuda 9from chainer import Link,Chain,ChainList 10import chainer.functions as F 11import chainer.links as L 12from chainer.training import extensions 13import cupy 14 15 16class MyChain(Chain): 17 def __init__(self): 18 super(MyChain,self).__init__( 19 cn1 = L.Convolution2D(3,30,9,stride=1,pad=0), 20 cn2 = L.Convolution2D(30,48,9,stride=1,pad=1), 21 cn3 = L.Convolution2D(48,60,9,stride=1,pad=0), 22 l1 = L.Linear(2160,100), 23 l2 = L.Linear(100,2), 24 ) 25 26 def __call__(self,x,t): 27 return F.softmax_cross_entropy(self.fwd(x),t) 28 29 def fwd(self,x): 30 h1 = F.max_pooling_2d(F.relu(self.cn1(x)),2) 31 h2 = F.max_pooling_2d(F.relu(self.cn2(h1)),2) 32 h3 = F.max_pooling_2d(F.relu(self.cn3(h2)),2) 33 h4 = F.relu(self.l1(h3)) 34 return self.l2(h4) 35 36model = MyChain() 37optimizer = optimizers.Adam() 38optimizer.setup(model) 39 40gpu_device = 0 41chainer.cuda.get_device(gpu_device).use() 42model.to_gpu(gpu_device) 43image_files = 'millionimages.txt' 44dataset = chainer.datasets.LabeledImageDataset(image_files) 45split_at = int(len(dataset) * 0.8) 46train,test = chainer.datasets.split_dataset(dataset,split_at) 47 48 49batchsize = 128 50train_iter = iterators.SerialIterator(train,batchsize,repeat=True,shuffle=True) #batchsizeを設定 51test_iter = iterators.SerialIterator(test,batchsize,repeat=False,shuffle=False) 52updater = training.StandardUpdater(train_iter,optimizer,device=gpu_device) 53trainer = training.Trainer(updater,(10,'epoch'),out='result_validation') #epochを設定 54 55trainer.extend(extensions.LogReport()) 56trainer.extend(extensions.snapshot(filename='snapshot_epoch-{.updater.epoch}')) 57trainer.extend(extensions.Evaluator(test_iter, model,device=gpu_device)) 58trainer.extend(extensions.PrintReport(['epoch', 'main/loss', 'main/accuracy', 'validation/main/loss', 'validation/main/accuracy', 'elapsed_time'])) 59trainer.extend(extensions.PlotReport(['main/accuracy', 'validation/main/accuracy'],x_key='epoch', file_name='accuracy.png')) 60trainer.extend(extensions.PlotReport(['main/loss', 'validaion/main/loss'],x_key='epoch', file_name='loss.png')) 61trainer.extend(extensions.ProgressBar()) 62 63trainer.run() 64 65 66
試したこと
補足情報(FW/ツールのバージョンなど)
Python 2.7.12
chainer 4.1.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。