1-03 まずは普通にPythonで実行

●ニューラルネットワークとは

 図1-06に
ニューラルネットワークの一例を示します。「重み」を表す行列がW(1)〜W(3)まで3つあります。また「バイアス」と呼ばれる配列がb(1)〜b(3)まで3つあります。それらは同図の下部ような形状になります。
 入力Xは2つあり、それらは重み、バイアスと積和演算がとられ、その後シグモイド関数(ここを参照)にかけられます。
 その後は同図のように第1層〜第3層まで3段階の積和演算を経て終了です。出力Yは2つになります。


■MNISTを使った3層ニューラルネットワーク

 この書籍の77ページにneuralnet_mnist.pyというPythonプログラムがあります。3層ニューラルネットワークで、形状は図1-07のようになります。図1-06の例と比べると積和演算の量が格段に増えます。まずはこのプログラムのハードウエア化を進めたいと思います。



 このプログラムでは「MNIST」と呼ばれる画像データセットを使用します。図1-08にその一部を示します。画素は28x28であり、それらを一列に並べた784画素からなる配列が入力Xになります。


 図1-08 MNISTのテスト画像(最初の3つ、それぞれ28×28画素)


●正解率は書籍(77ページ)どおり93.52%

 MNISTのテスト画像は10,000枚あり、それらすべてをこのニューラルネットワークにかけて推論します。図1-09はその実行結果で、正解率(Accuracy)は0.9352(
93.52%)になります。なお、Pythonの実行環境としてAnacondaのJupyter Labを使用しました。



 図1-09 実行結果(
小数で計算)


10,000枚の推論に1秒程度かかる?

 私はWindowsパソコンにAnacondaのJupyter LabをインストールしてPythonを走らせていますが、テスト画像10,000枚の推論に
1秒程度かかるようです。皆さんの環境ではどうでしょうか。

目次へ戻る