徒然なるままにMake:

Fusion360 3Dプリンタ 電子工作 面白そうなモノづくりをやっていくブログ

ディープラーニングを始めてみる 9

前回

something-make.hatenablog.com

参考書はこれ

 

 

前回はMNISTデータセットをやりました。

では、このデータでどのように文字認識をしているのかについてやってみます。

f:id:something-make:20180920230623p:plain

基本的にコンピュータで画像データはこのようにドットを縦と横に敷き詰めて表されます。それぞれのドットが、色や濃さのデータを持っています。

この図だと5×5の25ドットですが、MNISTのデータは28×28の784ドットです。

このデータは1なので、真ん中の縦一直線が白くなっています。

そしてこのデータを行ごと区切り、一直線に並べ直します。

f:id:something-make:20180920230635p:plain

この一直線になったデータをニューラルネットワークに入力します。

画像だと入力層が省略されていますが、実際はドットの数、この図では25、MNISTのデータでやる場合は784の入力層のニューロンがあります。

f:id:something-make:20180920232241p:plain

こうして入力層のニューロンに色の濃度等の情報を入力してやることで、出力層に出力が出ます。

 こうして他の画像も5行×5列のドットを1行×25列に変更してニューラルネットワークに入力することで答えを得ることができます。

f:id:something-make:20180921191455p:plain

f:id:something-make:20180921191552p:plain

 

 

ここでバッチ処理というテクニックがあります。

5行×5列のドットを1行×25列に直した後、3つの画像のドットをまとめて3行×25列にしていっぺんにニューラルネットワークに入力することができます。

行の向きを考えると3行×25列ニューラルネットワークに入力するイメージは下のようになります。

f:id:something-make:20180921191708p:plain

 この答えも行列でいっぺんに出力されます。

このバッチ処理の利点は、ニューラルネットワークに一行ずつ入力するよりも動作を高速化できることです。

コンピューターは行列を取り扱うとき、行列専用の高速計算システムを使うので、このように入力を一度に行列で与えると、一行ずつ入力するよりも高速に処理することができます。