※現在、ブログ記事を移行中のため一部表示が崩れる場合がございます。
順次修正対応にあたっておりますので何卒ご了承いただけますよう、お願い致します。
from digitschain import DigitsChain
# 学習結果とTestデータをファイルから読み込む
import pickle
of = open('digitslearnt.pkl','rb')
model = pickle.load(of)
of.close()
of = open('digitstestdata.pkl','rb')
xtest,yans = pickle.load(of)
of.close()
ここまでで、前回セーブした時点の状態に戻ったはずである。# Testデータで学習成果を確認する
def check(data,answer,model):
xt = Variable(data, volatile='on') # 学習不要
yy = model.fwd(xt)
ans = yy.data
nrow, ncol = ans.shape
ok = sum([np.argmax(ans[i,:])==answer[i] for i in range(nrow)])
return (ok * 1.0)/nrow # 正解率
上記の内容を “digits0l.py” にまとめて書いて走らせると、こんな結果が得られた。
Chainer$ python digits0l.py 558 / 599 = 0.931552587646 Chainer$
#!/usr/bin/env python
# from http://nlp.dse.ibaraki.ac.jp/~shinnou/book/chainer.tgz
import numpy as np
import chainer
from chainer import cuda, Function, gradient_check, Variable
from chainer import optimizers, serializers, utils
from chainer import Link, Chain, ChainList
import chainer.functions as F
import chainer.links as L
from digitschain import DigitsChain
# 学習結果とTestデータをファイルから読み込む
import pickle
of = open('digitslearnt.pkl','rb')
model = pickle.load(of)
of.close()
of = open('digitstestdata.pkl','rb')
xtest,yans = pickle.load(of)
of.close()
# Testデータで学習成果を確認する
xt = Variable(xtest, volatile='on') # 学習不要
yy = model.fwd(xt)
ans = yy.data
nrow, ncol = ans.shape
ok = sum([np.argmax(ans[i,:])==yans[i] for i in range(nrow)])
print( ok, "/", nrow, " = ", (ok * 1.0)/nrow ) # 正解率