Mind で Neural Network (SGD)

#概要
[Mind で Neural Network (準備編2) 順伝播・逆伝播 図解](http://qiita.com/t-tkd3a/items/9bf50f2e10e6a15b6ed5) からの続きです。
前回で図解した式を基に実装を行った ニューラルネットワークのソースコードと 実行結果を公開します。
高速化等のアドバイスが頂けると助かります。

#背景
Deep Learning についての勉強をはじめました。
基本の ニューラルネットワークを 実装できる程度に理解することを 第一の目標としてます。
参考図書として
><a  href="https://www.amazon.co.jp/gp/product/4873117585/ref=as_li_tf_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873117585&linkCode=as2&tag=noriaki0213-22">ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=noriaki0213-22&l=as2&o=9&a=4873117585" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
>著者:斎藤 康毅

を用いてます。
読み進めながら 処理の内容を 疑似コードで メモ書きしていたところ、
[『日本語プログラミング言語「Mind」最新版をリリースしました』](http://qiita.com/killy/items/ccec1fbb81c4432757f5)の記事に出会い、[言語仕様](http://www.scripts-lab.co.jp/mind/ver8/doc/index.html)を調べたところ、メモ書きの 疑似コードが そのまま動きそうな予感で テンション上がり Mind で実装していくことにしました。

#実装したニューラルネットワークの構成

![NN構成.PNG](https://qiita-image-store.s3.amazonaws.com/0/169589/f893d6a3-6462-a653-0ecd-93500f1b9de3.png)



隠れ層１つの、シンプルなニューラルネットワークです。
隠れ層のパーセプトロン数により 性能が変わると予想し 50個と1024個で実行しました。

#ソースコード
４ソースコード ファイル構成です。
すでに２つのソースコード ファイルは、
[「Mind言語で 疑似乱数関数 を作ってみた」](http://qiita.com/t-tkd3a/items/460b6f42ea69051f1130)と、
[「Mind で Neural Network (準備編1) 文字画像の読み込み」](http://qiita.com/t-tkd3a/items/96a58f6a34b0d3b04511)にて
公開してあります。

残り２つを公開します。
###NN2L.src

```mind:NN2L.src
※このソースでは、隠れ層１つの ニューラルネットワークの構造体宣言と
※　順伝播、逆伝播、検証の処理を実装する。
※

ＮＮ層１パーセプトロン数は　数値　1024。
ＮＮ層２パーセプトロン数は　数値　分類数。


ＮＮ層１は　構造体
			Ｗ１は　小数変数
			Ｂ１は　小数変数
			順値１は　小数変数
			逆伝播値１は　小数変数
			dW１は　小数変数
			dB１は　小数変数
		Ｗ配列１は
			画素数の　Ｗ１
		dW配列１は
			画素数の　dW１
		パーセプトロン１は
			順値１と
			逆伝播値１と
			Ｗ配列１と　　　　Ｂ１と
			dW配列１と　　　　dB１と
		全体は
			ＮＮ層１パーセプトロン数の　パーセプトロン１
。



※ -- ＮＮ層２は出力層 --
ＮＮ層２は　構造体
			Ｗ２は　小数変数
			Ｂ２は　小数変数
			順値２は　小数変数
			逆伝播値２は　小数変数
			dW２は　小数変数
			dB２は　小数変数
		Ｗ配列２は
			ＮＮ層１パーセプトロン数の　Ｗ２
		dW配列２は
			ＮＮ層１パーセプトロン数の　dW２
		パーセプトロン２は
			順値２と
			逆伝播値２と
			Ｗ配列２と　　　　Ｂ２と
			dW配列２と　　　　dB２と
		全体は
			ＮＮ層２パーセプトロン数の　パーセプトロン２
。


ソフトマックス層は　構造体
			Ｓ総和は　小数変数
			Ｓ各予測値は　小数変数
			Ｓ各誤差値は　小数変数
			直近正否は　小数変数　※1.0:正解 0.0:間違い※
			直近誤差エントロピーは　小数変数
		予測値配列Ｓは
			分類数の　Ｓ各予測値
		誤差値配列Ｓは
			分類数の　Ｓ各誤差値
		全体は
			直近正否と
			直近誤差エントロピーと
			予測値配列Ｓと
			誤差値配列Ｓと
			Ｓ総和
。


バッチカウンタは　変数。
検証回数は　変数。


ニューラルネット初期化とは　
		PTは　変数
		Jは　変数
		Rは　小数変数
		シグマ１は　小数変数
		シグマ２は　小数変数

	ＮＮ層１を　クリア
	ＮＮ層２を　クリア
	ソフトマックス層を　クリア
	0を　バッチカウンタに　入れる
	0を　検証回数に　入れる

	画素数を　小数化し　シグマ１に　入れる
		[シグマ１　:=　sqrt(　2.0 / シグマ１　)　]
		
	ＮＮ層１パーセプトロン数を　小数化し　シグマ２に　入れる 
		[シグマ２　:= sqrt(　2.0 / シグマ２　)　]

	※ -- ＮＮ層１ の　重み1　と　バイアス1 --
	パーセプトロン１の　要素数を　回数指定して、　回数を　PTに　入れる

		画素数を　回数指定して、　回数を　Jに　入れる
		
				※「Lv1 W(」を　表示し、　PTを　数値表示し、　「　,　」を　表示し、　Jを　数値表示し、　「)」を　表示し、　改行
			ガウス分布乱数(　0.0　,　シグマ１　)を　Ｗ１(PT,J)に　入れる 
		繰り返す ※PT				

※					「Lv1 B(」を　表示し、　PTを　数値表示し、　「)　」を　表示し、
		ガウス分布乱数(　0.0　,　シグマ１　)を　Ｂ１(PT)に　入れる
※					Ｂ１(PT)を　簡易小数表示し　改行
	繰り返す ※J

	※ -- ＮＮ層２ の　重み2　と　バイアス2 --
	パーセプトロン２の　要素数を　回数指定して、　回数を　PTに　入れる

		ＮＮ層１パーセプトロン数を　回数指定して、　回数を　Jに　入れる
		
				※「Lv2 W(」を　表示し、　PTを　数値表示し、　「　,　」を　表示し、　Jを　数値表示し、　「)」を　表示し、　改行
			ガウス分布乱数(　0.0　,　シグマ２　)を　Ｗ２(PT,J)に　入れる 
		繰り返す ※PT

		※	「Lv2 B(」を　表示し、　PTを　数値表示し、　「)　」を　表示し、
		ガウス分布乱数(　0.0　,　シグマ２　)を　Ｂ２(PT)に　入れる
		※	Ｂ２(PT)を　簡易小数表示し　改行
		
	繰り返す ※J

	「ニューラルネット初期化 完了」を　表示し　改行
。	



ＮＮ順伝播とは　関数　整数入力(画像番号)
			画像番号は　変数
			Iは　変数
			PTは　変数
			Zは　小数変数
			ＮＮ層２最大値は　小数変数
			ＮＮ層２最大インデックスは　変数
			エントロピーは　小数変数
			En1は 小数変数

	※ -- 変数初期化 --
	画像番号に　入れる
	ＮＮ層２最大値を　クリア
	Ｓ総和を　クリア
	f0.0を エントロピーに　入れる
	ＮＮ層２最大インデックスを　クリア


	※ 画像 → ＮＮ層１
	
	ＮＮ層１パーセプトロン数を　回数指定し、　回数を　PTに　入れる
		[Z := Ｂ１(PT)]
 
 		画素数を　回数指定し、　回数を　Iに　入れる
 			[Z := 輝度値(画像番号,I)　×　Ｗ１(PT,I)　＋　Z　]
 		繰り返す
 
 		※ ReLU
 		Zが　f0.0より　f小さい　ならば　
 			f0.0を　順値１(PT)に　入れる　
 		さもなければ 
 			Zを　順値１(PT)に　入れる
 		つぎに
	繰り返す


	※ ＮＮ層１ → ＮＮ層２
	
	順値２(1)を　ＮＮ層２最大値に　入れる
	1を　ＮＮ層２最大インデックスに　入れる
	
	ＮＮ層２パーセプトロン数を　回数指定し、　回数を　PTに　入れる
		[Z := Ｂ２(PT)]

		ＮＮ層１パーセプトロン数を　回数指定し、　回数を　Iに　入れる
			[Z := 順値１(I)　×　Ｗ２(PT,I)　＋　Z]
		繰り返す

		Zを　順値２(PT)に　入れる
		※ 出力層へのAffinは ReLUしない。※

		※ ＮＮ層２最大値
		順値２(PT)が　ＮＮ層２最大値より　f大きい　ならば　
			順値２(PT)を　ＮＮ層２最大値に　入れる
			PTを　ＮＮ層２最大インデックスに　入れる
		つぎに

	繰り返す


	※ ＮＮ層２ → ソフトマックス層

	ＮＮ層２最大インデックスが　0と　等しい　ならば
		※ どことも判定されなかった ※
		改行
		「ＮＮ層２最大インデックス 0　」を　表示し
		「画像番号：」を　表示し　画像番号を　数値表示し、　改行
		
		ＮＮ層２パーセプトロン数を　回数指定し、　回数を　PTに　入れる
			PTから　1を　引き　数値表示し
			「：」を　表示し
			順値２(PT)を　簡易小数表示し、
			「　」を　表示し
		繰り返す
		
		改行
		0.0を　直近正否に　入れる
		[log( 0.0000001 )]を　直近誤差エントロピーに　入れる

		分類数を　回数指定し、　回数を　Iに　入れる
			正否( 画像番号, I)に　-1.0を　f掛け　Ｓ各誤差値(I)に　入れる	
		繰り返す

	さもなければ
		正否(画像番号, ＮＮ層２最大インデックス)を　直近正否に　入れる

		分類数を　回数指定し、　回数を　Iに　入れる
			[exp( 順値２(I)　-　ＮＮ層２最大値 ) ]を　Ｓ各予測値(I)に　入れる
			[Ｓ総和　:=　Ｓ総和　+　Ｓ各予測値(I)　]
		繰り返す
		
		分類数を　回数指定し、　回数を　Iに　入れる
			[Ｓ各予測値(I)　/　Ｓ総和　]を　Ｓ各予測値(I)に　入れる

			[Ｓ各予測値(I)　-　正否( 画像番号, I)　]を　Ｓ各誤差値(I)に　入れる	
			※　逆伝播の入力値となる値　　

		繰り返す

		正解値(画像番号)に　1を　加え　Iに　入れる
		[ log(　Ｓ各予測値(　I　) + 0.0000001 ) ]に　-1.0を　f掛けし　直近誤差エントロピーに　入れる

	つぎに
。



ＮＮ逆伝播とは　関数　整数入力(画像番号)
			画像番号は　変数
			Iは　変数
			PTは　変数
			Zは　小数変数
	画像番号に　入れる

	※ ＮＮ層２ (←ソフトマックス層) 

	分類数を　回数指定し、　回数を　PTに　入れる

			Ｓ各誤差値(PT)を　逆伝播値２(PT)に　入れる
			[dB2(PT)　+　逆伝播値２(PT)]を　dB2(PT)に　入れる

			ＮＮ層１パーセプトロン数を　回数指定し、　回数を　Iに　入れる
				[dW2(PT,I)　+　順値１(I)　×　逆伝播値２(PT)]を　dW2(PT,I)に　入れる
			繰り返す
	繰り返す


	※　ＮＮ層１ (←ＮＮ層２)

	ＮＮ層１パーセプトロン数を　回数指定し、　回数を　PTに　入れる
		※ ReLU 分岐
		順値１(PT)が　f0.0より　以下　ならば
			f0.0を　逆伝播値１(PT)に　入れる
		さもなければ

			f0.0を　Zに　入れる
			ＮＮ層２パーセプトロン数を　回数指定し、　回数を　Ｉに　入れる
				[Z　:=　逆伝播値２(I)　×　Ｗ２(I,PT)　+　Z　]
			繰り返す

			Zを　逆伝播値１(PT)に　入れる
			[dB1(PT)　+　逆伝播値１(PT)]を　dB1(PT)に　入れる

			画素数を　回数指定し、　回数を　Iに　入れる
				[dw1(PT,I)　+　輝度値(画像番号,I)　×　逆伝播値１(PT)　]を　dw1(PT,I)に　入れる
			繰り返す

		つぎに
	繰り返す	
。



傾き値クリアとは
			PTは　変数
			Iは　変数


	※ -- ＮＮ層１ の　dw１　と　db１ --
	パーセプトロン１の　要素数を　回数指定して、　回数を　PTに　入れる
		f0.0を　dB１(PT)に　入れる
		
		画素数を　回数指定して、　回数を　Iに　入れる
			f0.0を dW１(PT,I)に　入れる
		繰り返す
	繰り返す

	※ -- ＮＮ層２ の　重み2　と　バイアス2 --
	パーセプトロン２の　要素数を　回数指定して、　回数を　PTに　入れる
		f0.0を　dB２(PT)に　入れる

		ＮＮ層１パーセプトロン数を　回数指定して、　回数を　Iに　入れる
			f0.0を dW２(PT,I)に　入れる
		繰り返す
	繰り返す
。




検証とは
			エントロピ総和は　小数変数
			正否総和は　小数変数
			Ｎは　小数変数
			Iは　変数
			開始番号は　変数
			ループ上限は　変数

	エントロピ総和を　クリア
	正否総和を　クリア
	
	[検証回数　:=　検証回数　+　1] 
	[開始番号　:=　入力画像数　+　1]
	検証画像数を　小数化し　Ｎに　入れる

	[ループ上限　:=　検証画像数　-　1]
	ループ上限を　回数指定して
		[I　:=　開始番号　+　回数　]
		ＮＮ順伝播(　I　)する
		
		[エントロピ総和　:=　エントロピ総和　+　直近誤差エントロピー] 
		[正否総和　:=　正否総和　+　直近正否] 
	繰り返す

					改行
	
	「検証　」を　表示し、　検証回数を　数値表示し、　
	「回目　　誤差エントロピ：」を　表示し、　エントロピ総和を　Ｎで　f割りを　簡易小数表示し、
	「　正解率：」を　表示し、　正否総和を　Ｎで　f割りを　簡易小数表示し、
	
	改行
。
```

###NN2L_SGD.src

```mind:NN2L_SGD.src
"Random.src"を　コンパイル。
"MNISTfiles.src"を　コンパイル。
"NN2L.src"を　コンパイル。

バッチ画像数は　数値　100。

※ 更新アルゴリズム SGD のハイパーパラメータ
sgdLRは　小数定数 0.01。





SGD版重み更新とは
			PTは　変数
			Iは　変数
			Cは　小数変数
			

※	画素数を　回数指定して、　回数を　Iに　入れる
※		パーセプトロン１の　要素数を　回数指定して、　回数を　PTに　入れる
※			dW１(PT,I)を　小数２桁表示し　「　」を　表示し
※		繰り返す
※		改行
※	繰り返す

	※ -- ＮＮ層１ の　dw１　と　db１ --
	パーセプトロン１の　要素数を　回数指定して、　回数を　PTに　入れる
		※ -- バイアス --
		※[C := sgdLR　×　dB1(PT)]
		sgdLRを dB1(PT)に  f掛け Cに　入れる

※					改行
※					「(」を　表示し、
※						Ｂ１(PT)を　小数２桁表示し、　「,」を　表示し
※						dB1(PT)を　小数２桁表示し、　「,」を　表示し
※						Cを　小数２桁表示し、　「,」を　表示し

		[Ｂ１(PT)　-　C]を　Ｂ１(PT)に　入れる 

※						Ｂ１(PT)を　小数２桁表示し、　「) 」を　表示

		※ -- 重み --
		画素数を　回数指定して、　回数を　Iに　入れる
			※[C := sgdLR　×　dW１(PT,I)]
			sgdLRを　dW１(PT,I)に f掛け Cに　入れる
			
※					「(」を　表示し、
※						Ｗ１(PT,I)を　小数２桁表示し、　「,」を　表示し
※						dW１(PT,I)を　小数２桁表示し、　「,」を　表示し
※						Cを　小数２桁表示し、　「,」を　表示し

			
			[Ｗ１(PT,I)　-　C]を　Ｗ１(PT,I)に　入れる
			
※						Ｗ１(PT,I)を　小数２桁表示し、　「) 」を　表示し
※						改行
			
		繰り返す
	繰り返す

	※ -- ＮＮ層２ の　dw２　と　db２ --
	パーセプトロン２の　要素数を　回数指定して、　回数を　PTに　入れる
		※ -- バイアス --
		※[C := sgdLR　×　dB２(PT)]
		sgdLRを　dB２(PT)に　f掛け Cに　入れる

		[Ｂ２(PT)　-　C]を　Ｂ２(PT)に　入れる 

		※ -- 重み --
		パーセプトロン１の　要素数を　回数指定して、　回数を　Iに　入れる
			※[C := sgdLR　×　dW２(PT,I)]
			sgdLRを　dW２(PT,I)に ｆ掛け Cに　入れる
			
			[Ｗ２(PT,I)　-　C]を　Ｗ２(PT,I)に　入れる
		繰り返す

	繰り返す

	傾き値クリアをする
。



SGD版エポック１巡とは
			バッチ分割数は　変数
			開始画像番号は　変数
			Cntは　変数
			Iは　変数

	[バッチ分割数　:=　入力画像数　/　バッチ画像数]
	
	バッチ分割数を　回数指定して、　回数から 1を　引くを Cntに　入れる
		[開始画像番号　:=　バッチ画像数　×　Cnt　]
		※ SGD版バッチ処理(開始番号 , バッチ画像数)する
		
※						「(開始：」を　表示し、　開始画像番号を　数値表示し、　「, バッチ画像数：」を　表示し、　バッチ画像数を　数値表示し、　「）」を　表示し　改行
		
		バッチ画像数を　回数指定して、
			[I　:=　開始画像番号　+　回数　]
			ＮＮ順伝播(　I　)する
			ＮＮ逆伝播(　I　)する
		繰り返す
		
		SGD版重み更新をする
		
					「+」を　表示する

	繰り返す

					改行	
	検証する
。



メインとは
	「メイン開始」を　表示し　改行
	20170316を　乱数種値に 入れる

	ＭＮＩＳＴファイル読込をする
	ニューラルネット初期化をする

	「ＮＮ層１パーセプトロン数　:」を　表示し、　ＮＮ層１パーセプトロン数を　数値表示し、
	「 ,SDG 」を　表示し、
	「 ,入力画像数:」を　表示し、　入力画像数を　数値表示し、　
	「 ,検証画像数:」を　表示し、　検証画像数を　数値表示し、
	改行

	30を　回数指定し、
		SGD版エポック１巡を　	
	繰り返す

	スタック検査し
。
```

#動作結果
###パーセプトロン数50

```パーセプトロン数50
ＮＮ層１パーセプトロン数　:50 ,SDG  ,入力画像数:10000 ,検証画像数:1000
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　1回目　　誤差エントロピ：1.25626　正解率：0.46500
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　2回目　　誤差エントロピ：0.89192　正解率：0.61100
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　3回目　　誤差エントロピ：0.52123　正解率：0.76800
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　4回目　　誤差エントロピ：0.40336　正解率：0.82100
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　5回目　　誤差エントロピ：0.33500　正解率：0.85800
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　6回目　　誤差エントロピ：0.33845　正解率：0.85100
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　7回目　　誤差エントロピ：0.33307　正解率：0.84200
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　8回目　　誤差エントロピ：0.32488　正解率：0.84900
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　9回目　　誤差エントロピ：0.31975　正解率：0.84600
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　10回目　　誤差エントロピ：0.32476　正解率：0.84700
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　11回目　　誤差エントロピ：0.30658　正解率：0.85600
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　12回目　　誤差エントロピ：0.31291　正解率：0.85800
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　13回目　　誤差エントロピ：0.31719　正解率：0.85400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　14回目　　誤差エントロピ：0.32926　正解率：0.85400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　15回目　　誤差エントロピ：0.33657　正解率：0.84600
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　16回目　　誤差エントロピ：0.33876　正解率：0.84700
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　17回目　　誤差エントロピ：0.34543　正解率：0.85000
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　18回目　　誤差エントロピ：0.34533　正解率：0.85200
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　19回目　　誤差エントロピ：0.35338　正解率：0.85100
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　20回目　　誤差エントロピ：0.35970　正解率：0.85400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　21回目　　誤差エントロピ：0.38479　正解率：0.84400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　22回目　　誤差エントロピ：0.37604　正解率：0.84100
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　23回目　　誤差エントロピ：0.37479　正解率：0.84700
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　24回目　　誤差エントロピ：0.38147　正解率：0.84200
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　25回目　　誤差エントロピ：0.40161　正解率：0.84500
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　26回目　　誤差エントロピ：0.40109　正解率：0.84700
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　27回目　　誤差エントロピ：0.39734　正解率：0.84500
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　28回目　　誤差エントロピ：0.41357　正解率：0.83500
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　29回目　　誤差エントロピ：0.41969　正解率：0.84000
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　30回目　　誤差エントロピ：0.43215　正解率：0.83900```
```

###パーセプトロン数1024
```パーセプトロン数1024
ＮＮ層１パーセプトロン数　:1024 ,SDG  ,入力画像数:10000 ,検証画像数:1000
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　1回目　　誤差エントロピ：0.30570　正解率：0.86600
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　2回目　　誤差エントロピ：0.20524　正解率：0.89500
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　3回目　　誤差エントロピ：0.17595　正解率：0.89200
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　4回目　　誤差エントロピ：0.16812　正解率：0.89700
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　5回目　　誤差エントロピ：0.15982　正解率：0.90200
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　6回目　　誤差エントロピ：0.14949　正解率：0.90900
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　7回目　　誤差エントロピ：0.14252　正解率：0.91300
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　8回目　　誤差エントロピ：0.13654　正解率：0.91700
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　9回目　　誤差エントロピ：0.13267　正解率：0.92100
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　10回目　　誤差エントロピ：0.13096　正解率：0.92100
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　11回目　　誤差エントロピ：0.13003　正解率：0.92400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　12回目　　誤差エントロピ：0.12951　正解率：0.92500
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　13回目　　誤差エントロピ：0.12973　正解率：0.92700
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　14回目　　誤差エントロピ：0.13025　正解率：0.92700
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　15回目　　誤差エントロピ：0.13062　正解率：0.92600
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　16回目　　誤差エントロピ：0.13097　正解率：0.92600
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　17回目　　誤差エントロピ：0.13180　正解率：0.92600
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　18回目　　誤差エントロピ：0.13212　正解率：0.92500
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　19回目　　誤差エントロピ：0.13260　正解率：0.92500
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　20回目　　誤差エントロピ：0.13309　正解率：0.92500
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　21回目　　誤差エントロピ：0.13354　正解率：0.92400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　22回目　　誤差エントロピ：0.13382　正解率：0.92400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　23回目　　誤差エントロピ：0.13429　正解率：0.92400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　24回目　　誤差エントロピ：0.13459　正解率：0.92400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　25回目　　誤差エントロピ：0.13499　正解率：0.92400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　26回目　　誤差エントロピ：0.13524　正解率：0.92400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　27回目　　誤差エントロピ：0.13562　正解率：0.92400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　28回目　　誤差エントロピ：0.13595　正解率：0.92400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　29回目　　誤差エントロピ：0.13616　正解率：0.92400
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

検証　30回目　　誤差エントロピ：0.13648　正解率：0.92400
```

回数を進めると、誤差エントロピが下がっている。
パーセプトロン数が1024の場合には、正解率は92%程度ある。

ニューラルネットワークの学習がうまく機能していると判断します。

#計算時間
手元の環境で、
50パーセプトロンの時は 2～3時間、1024パーセプトロンの時は１日程度、要しています。


# 次記事
[Mind で Neural Network (準備編3) 文字画像の読み込みの改良](http://qiita.com/t-tkd3a/items/6f97061bc5456da581c0)
[Mind で Neural Network (adam)](http://qiita.com/t-tkd3a/items/876fa2322e770046f1b4)