Deep Learning始めた
ここ数年の盛り上がり方から、流石にある程度知っておかないとまずいかなと漠然と思い始め、Deep Learningの勉強を始めてみた。
今年の4月頃からCourseraのDeep Learning Specialization 5コースを受講したり、ゼロから作る Deep Learningを読んで、とりあえず初めの一歩を踏み出した。途中、微分と線形代数を思い出したり、数式の意味を理解するのに苦労した。
そして、7月頃にTensorFlowではじめるDeepLearning実装入門でTensorFlowに入門し、この本に載っているNeural Image Captioningを実装してみた。更に、これ自体単純なAIの例として面白いのでWebアプリ化してみたのが以下。
手持ちの画像をアップロードするとそれにキャプションを付けてくれるというもの。キャプション生成には10数秒ほど時間がかかります。
中身を簡単に説明すると、CNN(GoogLeNet Inception-v3)とRNN(ブロックにLSTMを使用)を繋げたモデルを、TensorFlowを使って実装している。そしてこのモデルをSTAIR Captionというデータセットを使って、AWSのp2.xlargeというGPUインスタンスで15時間ほど学習させた。
Webアプリとしては、Djangoを使って作成しておりニューラルネットワークでの推論処理は非同期実行にする為celeryというライブラリを使用した。
今回、TensorFlowを使ってWebアプリを作成するにあたり、あらゆることが初めての経験であった為、製作期間1ヶ月間はとても有意義な時間だった。
TensorFlowはもちろんのこと、そもそもPython自体書いたことがなかった為、パーフェクトPythonを参照しながらコーディングを進めた。また、Djangoも公式チュートリアルとBuilding Django 2.0 Web Applicationsを読んで使い方を覚え、PostgreSQLやNginxについても一から始めた。更に、AWSも初めて使ったり、元々契約していたVPSが不具合でyumのアップデートができなくて別のVPSを契約し直して一から構築し直したりと色々と大変だった。(ここが一番ハマった)
今後は、引き続きDeep Learningの知識を深めながら、TensorFlowだけでなくKerasも試してみようと考えている。あと、Kaggleにもチャレンジしてみたい。
hello
ブログをはじめる
fn main() { println!("ブログをはじめる"); }