乗車日記

自転車ときのこ

手書き数字認識

iPadProにPythonというプログラム言語を動かすためのPythonistaというアプリを入れて、そこで先日仕入れた「ゼロから学ぶDeep Learning」のコードを書いて遊んでいます。おかげで最近寝不足。
第3章の手書き文字認識のところまでできました。隠れ層が2層のニューラルネットワークで手書き文字が認識できてしまうのは驚きです。といっても入力層のノードが784個、第1層のノードが50個、第2層のノードが100個あって、それらがそれぞれ重み付けの違う結線で結ばれているのですから結構なネットワークです。

それとPythonistaというアプリの強力さには驚きました。ネットから学習データを取ってきたり、グラフを表示したり等々、パソコンのPythonでできることは大概できます。少しプログラムを変更しないといけないところはありますが。

以下変更部分のメモ。
MNISTというデータセットをインターネットから取ってきてセーブするところ。

def init_mnist():
download_mnist()
dataset = _convert_numpy()
print("Creating pickle file ...")
# with open(save_file, 'wb') as f:
# pickle.dump(dataset, f, -1)
np.savez(save_file,train_img=dataset['train_img'],train_label=dataset['train_label'],test_img=dataset['test_img'],test_label=dataset['test_label'])
print("Done!")

もともとは#でコメントアウトしてあるpickle.dumpを使ってセーブするようになっていたが、Pythonistaではうまくいかなかったのでnumpy.savezを使ってセーブすることで解決。

ただしこれを後で読み込むところでも
#with open(save_file, 'rb') as f:
# dataset = pickle.load(f)
dataset=dict(np.load(save_file,'r'))

numpy.loadを使う。この時、dict型に変換しておかないと、プログラムで後ろの方でメソッドが使えないと怒られる。