Itsukaraの日記

最新IT技術を勉強・実践中。最近はDeep Learningに注力。

TensorFlowの勉強を再開しました

色々とわき道にそれていましたが、UDACITYのDeep Learning無料コースの勉強を、ようやく再開しました。

環境構築

まずは、TensorFlowを使う環境を再構築しました。DockerのTensorFlow環境は既にあったのですが、WindowsのDocker環境には、色々制限があることが分かったので、いくつかの環境構築を構築しました。

WindowsでのDocker環境の制限

  1. Docker関連のファイルの保管場所が「Cドライブ」に固定されている。そのため、SSD等でCドライブの容量が少ない場合は、容量が圧迫される。
  2. Windows側のディレクトリをDockerにマウントする場合、対象ディレクトリが「C:\Users」の下にあるものに制限され不便。
  3. TensorFlowの学習高速化に重要となる「GPU」が使えない。

対応策

上記「1.」と「2.」に関しては、VirutalBoxの仮想化環境にUbuntuをインストールし、AnacondaやTensorFlowを自分でインストールしました。それほど難しくなかったので、初めからDockerを使わずに、VitualBoxを使えば良かったと思います。

上記「3.」に関しては、Dockerで使えないか、VirtualBoxで使えないか、など、いろいろと調べたのですが、結局ダメでした。そこで、Windowsが入っているPCの、あまり使っていないHDDに、Ubuntuを直接インストールしました。Webでの情報によると、GPUを使った場合、CPUに比べて性能が20倍~50倍ぐらい速くなるとのこと。かなり期待していたのですが、PCのグラフィックボードが貧弱なせいか、CPUの6倍しか出ませんでした。ちなみに、CPUはi7-4770K、GPUはGTX760、メモリは16GBと、2~3年前の標準機です。

少し迷ったところ

GPU利用環境構築の際、最初はUbuntu 16.04をインストールしたのですが、IntelNvidiaが提供するグラフィック関係ライブラリが16.04に未対応だったので、14.04に戻す必要があり、2度手間になりました。

既存のWindows環境への影響が一番心配でした。これを出来るだけ少なくするために、Ubuntuのインストールでディスク割り当てを行う際に、自動割り当てではなく、手動割り当てを選択しました。そのうえで、ブートローダーのインストール場所は、Ubuntuをインストールするディスクにし、ルートパーテション(/)とスワップ領域を自分で割り当てました。

UDACITYのAssignmentsに取り組み中

以前に途中までやったUDACITYのTensorFlow Assignmentsを再開しました。このAssignmentsには、課題(Problem)がいくつか書かれており、その課題の回答が見つからなかったので、取り組み結果を追記したファイルを「https://github.com/Itsukara/TensorFlow-UDACITY-tryout:GitHub)にアップロードしました。

最初のAssignmentは、データの加工・整理のみです。対象となるデータはNOTMNISTというものなのですが、他の機械学習でよく使われるMNISTと異なり、あまり整理されていないデータとのこと。課題への取り組みの一環で、中身を表示して確認したところ、全体が真っ白な画像が1%以上も含まれていました。また、人間が見ても、何の文字かわかり難いようなものも含まれています。参考までに、データの一部を表示した結果を下記に載せます。結構、ゴミが混じっている気がします。

f:id:Itsukara:20160624021005j:plain

今後

UDACITYのAssignmentはNOTMNISTから始まり、いきなり通常とは異なるデータを扱うことになっています。少しイレギュラーな気がしたので、もう少し標準の機械学習から勉強した方が良いのではないかと思い始めています。例えば、TensorFLowの本家のTutorialは、標準的なデータであるMINISTから始めているので、そちらの方が良いかも... あるいは、TensorFlowよりも前に、scikit-learnぐらい見て置いた方が良いのではないか? また、機械学習の理論面も、少し勉強した方が良いのではないか? など、改めて、少し迷い始めています。