tensorflowで学習の中断・再開

今回は「学習の中断・再開」です。学習データの保存と読込を行います。
tensorflow自体の導入方法は前回をご覧ください。

前回に引き続きmnistを使います。

基本的な機能だけの紹介になりますので、
詳細は公式リファレンスをご覧下さい。

mnistのこの部分を変更します。

中断・再開機能を追加するとこうなります。

作成されるファイルは以下になります。
my-model-xxx:xxxにはステップ数が入ります。
checkpoint:作成したモデルのファイル名が保存されています。checkpoint自体の名前を変更することもできますが、今回はデフォルトで行きます。

では、コードを順に見て行きましょう。

Saverクラスを作成します。max_to_keepは中断ファイルの作成数です。デフォルトは5で、古いものから削除されます。
学習の推移を見たい場合は、この数値を増やすよりステップ数の間隔を広げたほうが良いと思います。(そもそもtensorboard使ったほうがいい気も済ますが)

モデルの有無で分岐させます。

最後に保存されたモデルファイルを呼び出します。

checkpointファイルがない場合。

以上です。
実際はmodel、checkpoint用のディレクトリを作成した方がよいでしょう。
また、checkpointは作成されているけどmodelファイルがない、等の場合はエラーになりますがその辺りは割愛しています。

tensorflowのmnistの推論を詳しく見る

機械学習のhello worldたるmnist。
ただこれを動かしても
「0.9092」
などと言われるだけで「お、おう」という感想しかでませんでした。
もうちょっと視覚的に面白味を持たせてみようというのが今回の内容です。

具体的には
「学習後、データ個々に対する予想」
「学習データの保存と呼び出し」
の2つの機能を付け足して見ました。

mnist自体は色々なところで紹介されていますので省略します。
元になるコードは
こちらを使用します。
日本語の解説はこちらがオススメです。

まず「学習後データ個々に対する予想」からいきます。
以下の場所に

このコードを追加します。
test_index は0〜55000の間の任意の数値です。

表示はこんな感じと思います。

情報の詳細です。
・10個のリストは、個々の数値に対する予想です。指数表記で、1に近いほど自信があるということです。例では9.38659430e-01が最も大きく、約0.9386です。0から始まるので、これは「2」を予想していることになります。
・prediction、予想の意味です。上記をわかりやすく出力しました。argmaxで算出、学習により予想した数値そのものです。「2」ですね。
・answer、正解のラベルです。
・number image(gray_scale) は数値による画像データです。数値が1に近いほど白いドット、0に近いと黒いドットです。かなり見づらいので、邪魔な場合はコメントアウトか削除して下さい。
・test_indexが0だと「7」を予想し、test_indexが1だと「2」と予想したと思います。マイナスを指定すると後ろからのインデックスになります。

次回は「学習データの保存と呼び出し

機械学習の導入方法

windows環境の人がtensorflowを導入するまで

・仮想PCをインストール
winsows上で他OSを動かす「仮想PC」という物があります。
vmware playerで検索し、インストールして下さい。

・ubuntuを入手する
ubuntuはlinuxの種類です。ポッキーで言うとイチゴ味のようなものです。
こちらから日本語用のubuntuを入手して下さい。

・pipの最新版をインストール
ターミナル、コマンドプロンプトのようなアイコンをクリックし、
sudo apt-get install python-pip python-dev
と入力します。文頭の$は入力しなくても良いです。

・tensorflowをインストール
sudo pip install –upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
上記で可能と思いますが、エラーが出る場合は本家で確認して下さい。

以上の流れになります。

他、やめておいたほうがいいこと
・linuxを使わずにwindowsに直接インストール → 相性最悪です。やめておきましょう
・linux英語版 → 英語が読めるなら良いと思います
・pip周り → 最新版にしないと色々と取得できない物がある。素直に最新版にしましょう。
・tensowflow以外 → 今は出来たてなので、扱っているページは少ないです。しかし勢いは今までで最もあると行ってよいでしょうあ。skicitlearnやpylearn2よりもこちらのほうが良いと思います。