読者です 読者をやめる 読者になる 読者になる
自分のための備忘録的なブログです。

Ubuntu14.04LTS および Win10 を使って、ディープラーニングの勉強をしています。記載されているコードは、他の OS には互換性がない可能性があります。


DNN:
マシン性能別 学習速度の比較, TFチュートリアルをmodifyする

python3:
オブジェクト指向プログラミングとは, モジュールとインポート、パスを通す, システムコマンド(os), ファイル・フォルダ名取得, 画像の前処理,

Ubuntu14 の初期設定:
Ubuntu14初期設定, 初期設定-2, cudaなども,

data を漬物(pickle)にする。

※ unpickle して NN に戻すところがうまくいきません。

 うまく言ったら update します。

 

 

ディープラーニングの前処理で、画像データは行列データに変換される。

自分の作成した CNN では、list になる。

 

どうも、この

画像データ → リスト化

部分に時間がかかっているので、この部分を速くしたい。

 

python のデータ保存形式に pickle というものがあるらしい。複数形は pickles, ピクルスすなわち漬物。このネーミングが面白い。

 

Anaconda には入っていた(というか、default で python に入っているっぽいけど)ので

ので、新たにインストールする必要はない。

まず

import pickle

 続いて

with open('保存したいファイル名', 'wb') as なんか適当な名前:

    pickle.dump(保存したいもの, なんか適当な名前)

みたいな形式。

 

ちなみにバージョンが4種類 (0-3) あるらしく、 python2.7 では version 3 は読み込めないらしい。Python 2.7 でも扱う場合には、version 2 までにとどめておいたほうが無難。

また、fix_imports=True を入れておくと、python2との互換性を保とうとするらしい。

 

なので、具体的には

with open('imagedata.pickle', 'wb') as f:

    pickle.dump(foo, f, protocol = 2, fix_imports=True) 

with open('imagelabel.pickle', 'wb') as f:

    pickle.dump(bar, f protocol = 2, fix_imports=True)

みたいに保存。

 

Python3 でしか使わないなら、Version3 で保存したほうが圧縮率が高い。

  Version3だと、データ容量は20分の1程度に減少。Version2のfix_imports=True だと、その15%増しくらいの容量でした。

 

読み込みは

with open('imagedata.pickle', 'rb') as f:

    pickle.load(f, fix_imports=True)

みたいな感じでしょうか。よくわかりません。

 

pickle 化してから再読込すると、作成した CNN が走らないので、目下この問題の修正中。

・・・っていうか、ネット上には多数の画像認識 CNN の記事が溢れてるけど、みんなデータ取り込みをどうしてるんだろうね。TensorFlow のみでは、まだ data augmentation に満足できないので(5度とか10度とか、微妙に回転させたい)、

 データを openCV に落として、

 また tensorflow variables に戻して、

みたいなことができるようになりたい。

でも tensorflow にそういう微妙な回転が実装されていないということは、回転させなくても診断能は変わらないのかな、謎。

 

12.1. pickle — Python オブジェクトの直列化 — Python 3.6.1 ドキュメント

11.1. pickle — Python オブジェクトの直列化 — Python 2.7.13 ドキュメント

pickleでオブジェクトをファイルに保存する - Qiita