スポンサーリンク

WindowsでMNISTデータの中身(gzファイルの中身)を見てみる(2)「MNISTデータをpngファイルに変換」

以下の素晴らしいサイトのコードをコピペして実行してみたい。うまくいくかな?

https://nnet.dogrow.net/blog3/

(環境)
Windows 8.1 Pro

GNU Octave 4.0.3

(1)MNISTデータのダウンロード

以下の本家サイトから、4つのgzファイルをダウンロードして、今回は、

C:/py/MNIST/ フォルダに保存。

http://yann.lecun.com/exdb/mnist/

(2)GNU Octaveのインストール

https://www.gnu.org/software/octave/

から、ダウンロードしてインストール。

(3)GNU Octave 4.0.3の起動。

画面左上のファイルブラウザ のところを、MNISTのgzファイルをダウンロードしたフォルダ名に変更しておく。今回は、C:/py/MNIST  とした。

以下のサイトのコードをコピペして実行していきたい。

https://nnet.dogrow.net/blog3/

(4)ファイル > 新規 > 新規の関数 をクリック

新しい関数 のところに、

cre_MNIST_PNG( image_file, output_dir )

と入力して、OK をクリック。

(5)下のような画面になるので、function … と、endfunction の間に、上記サイトのコードをコピペ。

コピペ後の状態が、以下のようになるので、図の赤で囲んだアイコンをクリックして、ファイルを保存する。

(6)画面下の方の、コマンドウィンドウ タブをクリック

下の図のような画面になるので、

cre_MNIST_PNG('t10k-images-idx3-ubyte','./img');

と入力して、Enter

 

なんか違ったようである。

fid = -1 となってしまい、うまくいかない。さっぱり分からない。

あきらめる。

—————

次はこのサイトかな。。。

http://tecmemo.wpblog.jp/2017/02/26/dataset_mnist/

(1)すべてのgzファイルを解凍

(2)Anaconda Promptで、

cd C:/py/MNIST
jupyter notebook

New > Python3

(3)以下のサイトのコードをコピペ

http://tecmemo.wpblog.jp/2017/02/26/dataset_mnist/

最後の方の、

train_data = get_data(“train-images-idx3-ubyte", “train-labels-idx1-ubyte")
test_data = get_data(“t10k-images-idx3-ubyte", “t10k-labels-idx1-ubyte")

だけ、

train_data = get_data(“train-images.idx3-ubyte", “train-labels.idx1-ubyte")
test_data = get_data(“t10k-images.idx3-ubyte", “t10k-labels.idx1-ubyte")

に変更してから、Shift + Enter

あ、なんかできたっぽい。

この画像、消しても消しても次が出てくるので、Anaconda promptCtrl+Cを押して、Anaconda Promptを終了しないと永遠にウイルスのように続く。。。

この後、なんとかがんばって、画像を別ファイルに保存したい!

<2017/10/24 追記>

(4)C:/py/MNIST/ フォルダに、outputs フォルダを作成

(5)以下のコードを入力してCtrl+Enter

 

すると、outputs/ フォルダに、0.png から9999.pngの28×28の、あのいまいましいMNIST画像が保存される。

とりあえず、中継地点まではこれた印象。

本当は、プログラムで、この画像を0, 1, 2, …, 9 のフォルダに振り分けたいが、

私にはそんなプログラミング能力は無いので、あきらめて手動で20個ずつくらい振り分けてみてから、次回、以下のサイトを写経して実行してみたい。

https://torina.top/detail/334/

<2017/11/3 追記>

上記のコードの最後に、

test_label = []
for data in test_data:
for i in range(len(test_data)):
window_name = “label {}".format(data[“label"])
test_label.append(window_name)

f = open('test_label.txt’, 'w’) # 書き込みモードで開く
f.write(test_label) # 引数の文字列をファイルに書き込む
f.close() # ファイルを閉じる

みたいな感じで記載すれば、(番号).jpgに対応した正解ラベルのリストがtest_label.txtに保存されるかもしれない。。。(未確認)

(参考)

【Python入門】for文でデータのindexを取得する方法
http://programming-study.com/technology/python-for-index/