数字を分類するニューラルネットワークの実装をやってみる2-1


数字を分類するニューラルネットワークの実装をやってみるではWindows + Python 2.xの環境でしたが、ここではubuntu 16.04 LTS + Python 3.xの環境です。

オリジナルコードはPython 2.x用でしたので、Python 3.x用に書き換えて実行してみます。

GitHub

 

ディレクトリー構成はそのまま。

実行コードはmnist_loader.pyとnetwork.py。

2.x->3.xで変更する部分。

 

MNISTをロードするコード(mnist_loader.py)

import pickle as cPickle //変更

 

training_data, validation_data, test_data = cPickle.load(f,encoding=’latin1′) //encodeを追加

 

学習用のコード(network.py)

print関数

if test_data:
print (“Epoch {0}: {1} / {2}”.format(
j, self.evaluate(test_data), n_test)) //変更
else:
print (“Epoch {0} complete”.format(j)) //変更

len関数(zipに対してlenを適用….これでいけると思うんですが)

if test_data:

test_data = list(test_data) //追加
n_test = len(test_data)

training_data = list(training_data)//追加
n = len(training_data)

xrange

xrange -> range //変更

 


入力層784(28×28)・30世代(Epoch)・ミニバッチサイズ10・学習率η=3.0

で学習してみます。

srcディレクトリに入って、Pyhon3のシェルを起動

$python3

>>>import mnist_loader

>>>training_data, validation_data, test_data = mnist_loader.load_data_wrapper()

>>>import network

>>>net = network.Network([784, 30, 10])

>>>net.SGD(training_data, 30, 10, 3.0, test_data=test_data)

 

 

悪くないけど良くもない結果。

 


network.py


mnist_loader.py


ソース(Python3.x)

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*