今回はPythonプログラミングで、Neural Network Console(以下NNC)の学習データを利用して実用的なテストをしてみたいと思います。
下記評価結果で、ラベルが示す数値が1.0の確率に近い数値を示しているのが確認されます
(画面が小さいPCだったため全て表示できてませんが、ラベル2,1,0,4で1.0に近いこと確認できる。)
NNCのサンプルプロジェクトbinary_net_mnist_MLP.sdcprojを使って出力される学習済データを使って、手書き数字画像の認識をしてみます。
まずPytonを使う前に、ツールに含まれるコマンドを使って実行してみます。
(環境はMacでAnacondaを使って構築しました。(Python 3.6) 環境構築についてはNNCの動画を参考)
nnabla_cli forward -c mnist_results.nnp -d data_mnist/mnist_test.csv -o res_mnist
mnist_results.nnp: NNCで学習したデータ
data_mnist/mnist_test.csv: NNCで評価に使ったCSVファイル
res_mnist: 出力フォルダ名
上記NNCでの出力結果と同じことが確認できます。
次にPythonプログラムを使ってみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from nnabla.utils import nnp_graph nnp = nnp_graph.NnpLoader('mnist_results.nnp') graph = nnp.get_network('MainRuntime', batch_size=1) x = list(graph.inputs.values())[0] y = list(graph.outputs.values())[0] from nnabla.utils.image_utils import imread img = imread("data_mnist/validation/5/8.png") #img = imread("data_mnist/validation/7/0.png") x.d = img.reshape(1,1,28,28) * 1.0/255 y.forward() print(y.d) |
5と7をコメントで切り替えてテスト。
[[3.8503841e-04 6.6292053e-04 5.0363992e-04 2.7701766e-03 6.9973571e-04
9.8056269e-01 7.7112401e-03 2.3113587e-03 2.3585605e-03 2.0347855e-03]][[5.9974744e-05 2.4527191e-05 8.6036489e-06 3.3169879e-05 2.8360124e-05
6.2943509e-05 6.1884864e-05 9.9966741e-01 3.2861382e-05 2.0212263e-05]]
それぞれ5と7で、確率が1.0に近い値を示しています。
学習済みデータを利用するテストでした。