Itsukaraの日記

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

Google Colaboratoryが便利・高速で凄過ぎる

Googleが研究の一環で提供しているColaboratoryを試してみました。

Jupyterと同じようなGUIPythonのプログラムを実行可能で、GPUも使えます。

Jupyterと同様に、先頭に「!」を書くことで、Linuxのコマンドを実行可能であり、「!pip」「!conda」「!apt-get」などで機能を追加できます。

実行結果をファイルシステム上に保管でき、共有リンクを使って取り出せます。
ただし、12時間経過すると強制終了されて、ファイルは失われます。

しかし、Notebookが動いている仮想マシンGoogleドライブをマウント可能であり、これにより、実行結果をGoogleドライブ上のファイルとして保管できます。

Deep Learningでは、途中の状態をファイルに保管して、そこからResumeできるようにプログラムを書くことが多いので、12時間で一度強制終了しても、Googleドライブに保管したファイルを使って学習を再開可能です。

試しに、Wide Residual Networks(WRN)のコードを実行してみました。このコードは、2016年時点にCIFAR10で最高性能を出したコードです。Colaboratoryを使って、16時間程度(途中で一度強制終了し、そこから再開)で結果を出すことができました。なお、当方のPCではGPUメモリが足りず同じ設定では試せませんでした(2GBでは足りなかった)。少し問題サイズを小さくして(depth=16からdepth=10にした)試したところ、Colaboratoryの方が問題サイズが大きいにもかかわらず、Epoch当たり処理時間は短かったです(当方PC: 3分53秒、Colaboratory:3分37秒)。

Deep Learningを個人的に試すには最適と感じました。

f:id:Itsukara:20180205205704p:plain

世界最高レベルのコードをこんな簡単・高速に試せるなんて、凄過ぎます!

Wide Residual Networks試行用Notebook

下記がWRN試行環境として作ったColaboratoryのNoteookです。共有設定していますので、リンクをたどれば、簡単にColaboratoryで実行できるはずです。

WRNd16w10.ipynb

https://drive.google.com/file/d/1QNOureZ6lkRkcxoGrTDoe9Ml4h8TKPwz/view?usp=sharing

NotebookにはWide Residual NetworksのPythonコードは全く書かず、「git clone」でコードを取得し、「import main」でメインのPythonファイル「main.py」をインポートし、「main()」を直接呼び出すことで実行しています。

ただし、このままではプログラムに引数を渡せないので、下記のように、間接的に「main()」に引数を渡すようにしています。この方法は汎用性があるので、他のコードを試す際も活用できそうです。

import sys
new_argv = "main.py --save ./logs/resnet_20180204 --depth 16 --width 10 --ngpu 1 --gpu_id 0".split(" ")
sys.argv = new_argv
main()

下記は、学習状況を可視化するためのNotebookです。

visualize.ipynb

https://drive.google.com/file/d/1eq4wAkZijRmfxiaQLpy5nXsR6I9Tu89-/view?usp=sharing

WRNのコードが作成したログファイル「log.txt」をGoogleドライブで右クリックして共有リンクを取得した後、上記Notebookに共有リンク中IDを埋め込んで実行すると、先頭で示したように、学習状況を可視化できます。

上記コードは、WRNのコードに含まれていたものを流用し、可視化にBokehを使っています。なお、ColaboratoryのNotebookでBokehを使う際は、グラフを表示するセル内で「output_notebook()」を必ず実行する必要があります。これが分からず、最初はMatplotlibで表示していましたが、Bokehは、表示した後で部分的に拡大したりできるので便利ですね

WRNコードの場所(Github)

github.com

WRNの論文(Wide Residual Networks, 23 May 2016)

https://arxiv.org/abs/1605.07146

第一級陸上特殊無線技士の免許証が届きました

10月26に受験した第一級陸上特殊無線技士(一陸特)の免許証が届きました。
f:id:Itsukara:20171208211947j:plain

下記記事で書きましたように、1問を除き残りは全問正解でしたが(全36問中35問正解)、点数は通知されませんでした。せっかく良い点数が取れたはずなのに、残念です。

itsukara.hateblo.jp

なお、Oracle Java Certificate Programでは試験の点数を教えてくれます。私はSilverを受験し正解率94%でした。これを記事に書いたところ、少しアクセスしてくれている人もいるようで、励みになります。

itsukara.hateblo.jp

アクセスが多いのは「マウスコンピュータPC起動せず」

最近殆ど記事を書いていませんが、一応、コンスタントに毎日200人ぐらいのアクセスがあり、何見ているかアクセス解析結果を見たところ、相変わらず、アクセスが多いのは「マウスコンピュータPC起動せず」ぐらい。マウスコンピュータPCで困っている人が、よほど多いのでしょうね。

他の記事の方が力を入れて書いていたのに、アクセスが少ないのが残念です。

f:id:Itsukara:20171208211114p:plain

ハクビシンが天井裏から退散した模様

下記記事で、土曜日にハクビシンが天井裏に現れたことを書きましたが、トウガラシや粉わさびを天井裏に薄く撒いたり、天井をしたから叩いて脅かすことで、ハクビシンは退散したようです。良かったです。

itsukara.hateblo.jp

第一級陸上特殊無線技士試験に合格

第一級陸上特殊無線技士の結果通知が届き、平成29年11月14日付で合格しました。無線従事者免許証の交付を受けるには申請が必要で、申請から約1か月後に交付される予定です。

f:id:Itsukara:20171115195247j:plain

ハクビシンが天井裏に来てしまった

ITとは全く関係ありませんが、昨夜、自宅の天井にハクビシンが来てしまいました。歩き回るような音と鳴き声が聞こえ、夜中に天井を下から叩いて追い出そうとしましたが、なかなか逃げません。

結局、天井裏に登って断熱材をどかして探しましたが、梁の向こう側の見えない場所に隠れているようで(その辺りから鳴き声が聞こえる)、見つかりませんでした。その後、Webで対策を調べたり、唐辛子を撒いたり、Amazonで忌避剤を買ったりと忙しく、寝たのは午前4時過ぎです。

その後も鳴き声が聞こえましたが、現在は聞こえません(2017/11/12 10:00)。ハクビシンは夜行性なので、昼間は活動していない為かもしれません。

今後、唐辛子や粉わさびを買い足して撒いたり、Amazonから忌避剤が届いたら撒くなどの追加対策をしてみるつもりです。

それでもだめならば、市でハクビシン対策関連を行っている課に連絡してみようと思います。

後は、どこから入ったかを探して、入口を塞ぐ必要があるようですが、どこが入口か分からず、困っています。

残り時間をリアルタイムに表示するスクリプト作成

仕事の関係でちょっとほしい機能があったので、自宅で試作してみました。具体的には、ChromeやInternet Exproreなどのブラウザに特定時刻を表示する際に、その時刻までの残り時間をリアルタイムに表示する機能をjavascriptで作りました。また、複数のアラームを設定できるようにしました。下記を参照ください。

youtu.be

ソースコード

ソースコードと説明は下記サイトを参照のこと。使い方は、Remaining.htmlを直接見てください。スクリプトの中身も確認したい場合は、RemainingTimeInline.htmlかRemainingTime.jsを見てください。

なお、色々試すには、RemainingTimeInline.htmlの方が、デバッグし易いです。

github.com