2017年4月20日木曜日

TensorFlowのさらに上位のTFLearn

 Deep Learningを作るための定番プログラミング言語はPythonのようです。さらにその上に抽象化されたフレームワークTensorFlowがあります。それをさらにもっと抽象化したTFLearnというのがあります。さっそく、下記のチュートリアルを読んで、環境設定し、例題の学習と検証をやってみました。

http://tflearn.org/tutorials/quickstart.html

タイタニック号(WikiPediaより引用)

例題が分かりやすくて、面白いものでしたので、ご存じかもしれませんが以下に記します。タイタニック号が沈んで、ほとんどの乗客、乗員が海へ沈んだりして亡くなったのですが、生き残った人(surviving)もいます。約1,300人くらいの人についての「生存/死亡、客室クラス、性別、年齢、... 」などのデータセットが公開されています。これらのどんな特性の人が生存したのか、死亡したのかを学習させるニューラルネットワークを作る問題です。

 このTFLearnでそれを書いています。3層のフル結合ニューラルネットワークにした場合、以下のとおり、僅か数行でできています。(以下のソースリストは、上記URLで示されているものです。)すばらしい!

# Build neural network net = tflearn.input_data(shape=[None, 6]) net = tflearn.fully_connected(net, 32) net = tflearn.fully_connected(net, 32) net = tflearn.fully_connected(net, 2, activation='softmax') net = tflearn.regression(net)

学習の実行も以下の2行ですんでいます。これもすばらしい!

# Define model model = tflearn.DNN(net) # Start training (apply gradient descent algorithm) model.fit(data, labels, n_epoch=10, batch_size=16, show_metric=True)

その学習の状況は以下のようになりました。

===== 学習状況 (終盤のみ)===========================
Training Step: 1634  | total loss: 0.52194 | time: 0.255s
| Adam | epoch: 020 | loss: 0.52194 - acc: 0.7666 -- iter: 1216/1309
Training Step: 1635  | total loss: 0.50945 | time: 0.258s
| Adam | epoch: 020 | loss: 0.50945 - acc: 0.7775 -- iter: 1232/1309
Training Step: 1636  | total loss: 0.50597 | time: 0.260s
| Adam | epoch: 020 | loss: 0.50597 - acc: 0.7747 -- iter: 1248/1309
Training Step: 1637  | total loss: 0.49217 | time: 0.265s
| Adam | epoch: 020 | loss: 0.49217 - acc: 0.7848 -- iter: 1264/1309
Training Step: 1638  | total loss: 0.47261 | time: 0.268s
| Adam | epoch: 020 | loss: 0.47261 - acc: 0.8000 -- iter: 1280/1309
Training Step: 1639  | total loss: 0.47787 | time: 0.270s
| Adam | epoch: 020 | loss: 0.47787 - acc: 0.7888 -- iter: 1296/1309
Training Step: 1640  | total loss: 0.47622 | time: 0.273s
| Adam | epoch: 020 | loss: 0.47622 - acc: 0.7974 -- iter: 1309/1309

 最後に、興味深いのは、テストの結果です。後に作られたタイタニック号の映画の主演男女、デカプリオ(DiCaprio)とウインスレ(Winslet)の生存確率です。このふたりに、上記の特性データを付与して、計算させています。映画の結末と合致して、DiCaprioは亡くなるが、Winsletは生き残るという結果がでました。単なる偶然とは思われない!

===== 主演男女の生存確率 ===============
DiCaprio Surviving Rate: 0.138
Winslet Surviving Rate: 0.904
======================================



0 件のコメント:

コメントを投稿