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/
ディスカッション
コメント一覧
まだ、コメントがありません