ユーザ用ツール

サイト用ツール


7_推測

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
7_推測 [2017/11/01]
adash333
7_推測 [2018/10/07] (現在)
ライン 1: ライン 1:
 ===== (7)推測 ===== ===== (7)推測 =====
  
-<ChainerでMNIST目次>​\\ +<wrap hi>​Chainer2でMNIST目次</wrap>\\ 
-[[Chainer2プログラミングの全体図|(0)Chainer2プログラミングの全体図]]\\ +[[Chainer2プログラミングの全体図]] 
-(1)Chainer2を使用するためのimport文\\ +  -[[(1)Chainer2を使用するためのimport文]] 
-[[(2)データの準備・設定]]\\ +  -[[(2)データの準備・設定|(2)データの準備・設定(Chainer)]] 
-[[(3)モデルの記述]]\\ +  -[[(3)モデルの記述|(3)モデルの記述(Chainer)]] 
-[[(4)モデルと最適化アルゴリズムの設定]]\\ +  -[[(4)モデルと最適化アルゴリズムの設定|(4)モデルと最適化アルゴリズムの設定(Chainer)]] 
-[[(5)学習(Trainerを利用しない場合)]]\\ +  -[[(5)学習と結果の出力(Chainer)]] 
-[[(6)結果の出力]]\\+  -[[(6)結果の出力|(6)学習結果のパラメータの保存(Chainer)]] 
 +  -[[(7)推測|(7)推測(Chainer)]] <​wrap hi><= いまココ</​wrap>​
  
 <​code>​ <​code>​
-#5 学習(Trainerを利用しない場合) +#predict.py 
-for epoch in range(繰り返し回数+#7 推測 
-    ​データの加工 +# import文 
-    model.cleargrads() #勾配初期化 + 
-    ​loss = model(... #誤差計算 +# modelの定義 
-    ​loss.backward ​     ​#勾配計算 +class MLP(chainer.Chain): 
-    ​optimizer.update ​  #​パラメータ更新+    ​def __init__(self,​ n_units, n_out): 
 +        ​super(MLP,​ self).__init__() 
 +        with self.init_scope():​ 
 +            ​モデルを記載 
 +            ​ 
 +    ​def __call__(self, x)
 +        ​モデルを記載 
 + 
 +モデルを使って判定する 
 +model = L.Classifier(MLP(1000,​ 10)) 
 +前回の学習結果のパラメータをインポート 
 +serializers.load_npz('​my_mnist.model',​ model) 
 +# 画像を読み込み、データセットに変換した後(後述) 
 +# ニューラルネットワークにおけるノードに対応するオブジェクトに変換する 
 +x = chainer.Variable(image) 
 +# chainer.links.Classifierのpredictorで推測 
 +y = model.predictor(x) 
 +# y.dataという配列の中で一番大きい値をとる要素のインデックスを返す 
 +predict = np.argmax(y.data) 
 + 
 +print("​predict:"​ , predict) 
 </​code>​ </​code>​
  
ライン 28: ライン 50:
 Chainerのインストール方法は[[Chainer2.0をWindowsにインストール]]をご覧下さい。 Chainerのインストール方法は[[Chainer2.0をWindowsにインストール]]をご覧下さい。
  
-このページは、[[(5)学習(Trainerを利用しない場合)]]の続きであり、今回は、結果の出力の記述を行っていきます。+このページは、[[(6)結果の出力]]の続きであり、今回は、推測を行っていきます。
  
 ===== 手順 ===== ===== 手順 =====
  
 ==== 0. 前回終了時の画面 ==== ==== 0. 前回終了時の画面 ====
-[[(5)学習(Trainerを利用しない場合)]]終了時の、以下のような状態から始めます。+[[(6)結果の出力]]終了時の、以下のような状態から始めます。
  
-{{:​pasted:​20171101-164954.png}}+{{:​pasted:​20171101-165650.png}}
  
 +==== 1. 推測 ====
 +
 +新しいnotebookを作成して、predict.jpynbという名前にします。 
 +
 +predict.jpynbと同じフォルダに、0.jpgという名前で28x28の手書き数字を保存しておきます。なお、Windows付属の「ペイント」などで、背景を黒で、数字の部分を白で書いて作ってください。今回は、これを推測します。
  
-==== 1. 結果の出力 ==== 
 以下のコードを入力して、Shift + Enterを押します。 以下のコードを入力して、Shift + Enterを押します。
 +
 +<​html>​
 +<script src="​https://​gist.github.com/​adash333/​1505e2625906aafdc95c36b05b9d5e75.js"></​script>​
 +</​html>​
 +
 +すると、以下のような画面になります。
 +
 +
 +
 +
 +(作成中)
 +
 +
 +
 +
 +
 +これで、ChainerでMNISTの解説は終了となります。
 +
 +
 +==== chainer.Variable()について ====
 +
 +chainerで画像データをモデルに入力はするためには、画像データをNumpy配列に変換し、さらに、型をVariableに変換する必要がある。
  
 <​code>​ <​code>​
-#6 結果の出力 +import numpy as np 
-ok = 0 +import chainer 
-for i in range(len(test)):​ +from chainer import ​Variable 
-    x = Variable(np.array([ test[i][0] ], dtype=np.float32)) + 
-    t = test[i][1] +# PILなどでimageを読み込んでおき、Numpy配列に変換しておき、 
-    out = model.fwd(x) +# 以下で、ニューラルネットワークにおけるノードに対応するオブジェクトに変換する 
-    ans = np.argmax(out.data) +chainer.Variable(image)
-    if (ans == t): +
-        ok += 1 +
-         +
-print((ok * 1.0)/len(test))+
 </​code>​ </​code>​
  
-すると、以下のような画面になります。 
  
-{{:pasted:​20171101-165250.png}}+chainerのvariableについて 
 +20170521\\ 
 +https://qiita.com/​rerere0101/​items/​bc841829da06fa466406
  
-精度は96.6%と結果でした。+Chainer基本オブジェクトについて〜Variable編〜 
 +20161024 
 +\\ 
 +https://​qiita.com/​moroku0519/​items/​48d89e5b782e27f740de
  
-に、この学習したモデルのパラメータを「my_mnist.modelいう名前で保存ます+chainer.Variable\\ 
 +https://​docs.chainer.org/​en/​stable/​reference/​core/​generated/​chainer.Variable.html#​chainer.Variable 
 + 
 + 
 +==== chainer.links.Classifierのpredictorついて ==== 
 + 
 +Chainerではmodelは必ず、L.Classifier(model)としておく
  
 <​code>​ <​code>​
-#6.2 学習結果のパタ保存 +import numpy as np 
-chainer.serializers.save_npz('​my_mnist.model', model+import chainer 
 +from chainer import Variable 
 + 
 +ニュールネットワクにおけるノードに対応するオブジェクトに変換する 
 +x = chainer.Variable(image) 
 +# chainer.links.Classifierのpredictorで推測 
 +y = model.predictor(x) 
 +# y.dataという配列の中で一番大きい値をとる要素のインデックスを返す 
 +# 今回は、インデックスの値がそのまま、数字の分類項目となっている 
 +predict = np.argmax(y.data)
 </​code>​ </​code>​
  
-{{:pasted:​20171101-165650.png}}+2017-06-25 
 +配列の最大要素のインデックスを返すNumPyのargmax関数の使い方\\ 
 +https://​deepage.net/​features/​numpy-argmax.html
  
-すると、MNIST_MLP.ipynbと同じフォルダ(今回は、C:/​py/​chainer/​MNIST_MLP/​ フォルダ)に、「my_mnist.model」という名前のファイルが保存されます。次回、このモデルのパラメータを読み込んで、推測を行います。 
  
-{{:​pasted:​20171101-165837.png}} 
  
-次は、[[(7)推測]]へ進んでください。+https://​docs.chainer.org/​en/​stable/​reference/​generated/​chainer.links.Classifier.html
  
  
ライン 95: ライン 158:
  
 ===== リンク ===== ===== リンク =====
-<​ChainerでMNIST目次>​\\ 
-[[Chainer2プログラミングの全体図|(0)Chainer2プログラミングの全体図]]\\ 
-[[(1)Chainer2を使用するためのimport文]]\\ 
-[[(2)データの準備・設定]]\\ 
-[[(3)モデルの記述]]\\ 
-[[(4)モデルと最適化アルゴリズムの設定]]\\ 
-[[(5)学習(Trainerを利用しない場合)]]\\ 
-[[(6)結果の出力]]\\ 
  
 +次 [[機械学習成果をwebで公開]]
 +
 +前 [[(6)結果の出力|(6)学習結果のパラメータの保存(Chainer)]]
  
  
 +<wrap hi>​Chainer2でMNIST目次</​wrap>​\\
 +[[Chainer2プログラミングの全体図]]
 +  -[[(1)Chainer2を使用するためのimport文]]
 +  -[[(2)データの準備・設定|(2)データの準備・設定(Chainer)]]
 +  -[[(3)モデルの記述|(3)モデルの記述(Chainer)]]
 +  -[[(4)モデルと最適化アルゴリズムの設定|(4)モデルと最適化アルゴリズムの設定(Chainer)]]
 +  -[[(5)学習と結果の出力(Chainer)]]
 +  -[[(6)結果の出力|(6)学習結果のパラメータの保存(Chainer)]]
 +  -[[(7)推測|(7)推測(Chainer)]] <​wrap hi><= いまココ</​wrap>​

7_推測.1509524132.txt.gz · 最終更新: 2018/10/07 (外部編集)