Submit Search
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
14 likes
6,456 views
Yasuyuki Sugai
2016年6月期AITCオープンラボ 第3回 機械学習勉強会 「色々なニューラル・ネットワークのフレームワークを動かしてみよう!」 Keras編資料
Technology
Read more
1 of 58
Download now
Downloaded 36 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
More Related Content
PDF
Chainer/CuPy v5 and Future (Japanese)
Seiya Tokui
PPTX
葉物野菜を見極めたい!by Keras
Yuji Kawakami
PDF
深層学習フレームワーク Chainer の開発と今後の展開
Seiya Tokui
PDF
mxnetで頑張る深層学習
Takashi Kitano
PDF
Chainer の Trainer 解説と NStepLSTM について
Retrieva inc.
PDF
Chainerの使い方と自然言語処理への応用
Seiya Tokui
PDF
Chainer v1.6からv1.7の新機能
Ryosuke Okuta
PDF
Introduction to Chainer (LL Ring Recursive)
Kenta Oono
Chainer/CuPy v5 and Future (Japanese)
Seiya Tokui
葉物野菜を見極めたい!by Keras
Yuji Kawakami
深層学習フレームワーク Chainer の開発と今後の展開
Seiya Tokui
mxnetで頑張る深層学習
Takashi Kitano
Chainer の Trainer 解説と NStepLSTM について
Retrieva inc.
Chainerの使い方と自然言語処理への応用
Seiya Tokui
Chainer v1.6からv1.7の新機能
Ryosuke Okuta
Introduction to Chainer (LL Ring Recursive)
Kenta Oono
What's hot
(20)
PDF
2013.07.15 はじパタlt scikit-learnで始める機械学習
Motoya Wakiyama
PDF
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
Kenta Oono
PDF
ディープラーニングフレームワーク とChainerの実装
Ryosuke Okuta
PDF
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
Kenta Oono
PDF
CuPy解説
Ryosuke Okuta
PDF
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Kotaro Nakayama
PDF
Introduction to Chainer and CuPy
Kenta Oono
PDF
PythonによるDeep Learningの実装
Shinya Akiba
PDF
Practical recommendations for gradient-based training of deep architectures
Koji Matsuda
PDF
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Yasutomo Kawanishi
PDF
深層学習フレームワークChainerの紹介とFPGAへの期待
Seiya Tokui
PDF
科学技術計算関連Pythonパッケージの概要
Toshihiro Kamishima
PPTX
Jupyter NotebookとChainerで楽々Deep Learning
Jun-ya Norimatsu
PDF
「深層学習」勉強会LT資料 "Chainer使ってみた"
Ken'ichi Matsui
PDF
画像認識で物を見分ける
Kazuaki Tanida
PDF
GPU上でのNLP向け深層学習の実装について
Yuya Unno
PDF
Chainerチュートリアル -v1.5向け- ViEW2015
Ryosuke Okuta
PPTX
ChainerでDeep Learningを試すために必要なこと
Retrieva inc.
PDF
ディープラーニング最近の発展とビジネス応用への課題
Kenta Oono
PDF
TensorFlowの使い方(in Japanese)
Toshihiko Yamakami
2013.07.15 はじパタlt scikit-learnで始める機械学習
Motoya Wakiyama
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
Kenta Oono
ディープラーニングフレームワーク とChainerの実装
Ryosuke Okuta
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
Kenta Oono
CuPy解説
Ryosuke Okuta
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Kotaro Nakayama
Introduction to Chainer and CuPy
Kenta Oono
PythonによるDeep Learningの実装
Shinya Akiba
Practical recommendations for gradient-based training of deep architectures
Koji Matsuda
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Yasutomo Kawanishi
深層学習フレームワークChainerの紹介とFPGAへの期待
Seiya Tokui
科学技術計算関連Pythonパッケージの概要
Toshihiro Kamishima
Jupyter NotebookとChainerで楽々Deep Learning
Jun-ya Norimatsu
「深層学習」勉強会LT資料 "Chainer使ってみた"
Ken'ichi Matsui
画像認識で物を見分ける
Kazuaki Tanida
GPU上でのNLP向け深層学習の実装について
Yuya Unno
Chainerチュートリアル -v1.5向け- ViEW2015
Ryosuke Okuta
ChainerでDeep Learningを試すために必要なこと
Retrieva inc.
ディープラーニング最近の発展とビジネス応用への課題
Kenta Oono
TensorFlowの使い方(in Japanese)
Toshihiko Yamakami
Ad
Viewers also liked
(20)
PDF
機械学習フレームワーク横断、Chainer, Keras
Teppei Murakami
PDF
Caffeの特徴と最近の動向 -CNN、そしてRNNへ-
Yasuyuki Sugai
PDF
第三回デジタルガジェット祭り! LT「ペットとセンサー編」
Yasuyuki Sugai
PDF
Deep Learningと画像認識 ~歴史・理論・実践~
nlab_utokyo
PDF
AITCオープンラボ IoTx総まとめ「IoTxロボット・AI開発をはじめよう!」
Yasuyuki Sugai
PDF
Kerasで深層学習を実践する
Kazuaki Tanida
PDF
Machine Learning Basics for Web Application Developers
Etsuji Nakai
PDF
160924 Deep Learning Tuningathon
Takanori Ogata
PDF
RとJavaScript Visualizationを俯瞰しよう
Yasuyuki Sugai
PDF
Deep Learningライブラリ 色々つかってみた感想まとめ
Takanori Ogata
PDF
IoTとDeep Learningで自宅警備員を育ててみる
Yasuyuki Sugai
PDF
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Yasuyuki Sugai
PDF
基礎からのベイズ統計学 2章 勉強会資料
at grandpa
PDF
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
Ken'ichi Matsui
PDF
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
洋資 堅田
PDF
統計学の基礎の基礎
Ken'ichi Matsui
PDF
SSD: Single Shot MultiBox Detector (ECCV2016)
Takanori Ogata
PDF
VMware Fusion + Tyoukanji
Tamotu Tabei
PDF
D3.js で LOD を Visualization
dsuke Takaoka
PDF
Deep Learning in theano
Massimo Quadrana
機械学習フレームワーク横断、Chainer, Keras
Teppei Murakami
Caffeの特徴と最近の動向 -CNN、そしてRNNへ-
Yasuyuki Sugai
第三回デジタルガジェット祭り! LT「ペットとセンサー編」
Yasuyuki Sugai
Deep Learningと画像認識 ~歴史・理論・実践~
nlab_utokyo
AITCオープンラボ IoTx総まとめ「IoTxロボット・AI開発をはじめよう!」
Yasuyuki Sugai
Kerasで深層学習を実践する
Kazuaki Tanida
Machine Learning Basics for Web Application Developers
Etsuji Nakai
160924 Deep Learning Tuningathon
Takanori Ogata
RとJavaScript Visualizationを俯瞰しよう
Yasuyuki Sugai
Deep Learningライブラリ 色々つかってみた感想まとめ
Takanori Ogata
IoTとDeep Learningで自宅警備員を育ててみる
Yasuyuki Sugai
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Yasuyuki Sugai
基礎からのベイズ統計学 2章 勉強会資料
at grandpa
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
Ken'ichi Matsui
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
洋資 堅田
統計学の基礎の基礎
Ken'ichi Matsui
SSD: Single Shot MultiBox Detector (ECCV2016)
Takanori Ogata
VMware Fusion + Tyoukanji
Tamotu Tabei
D3.js で LOD を Visualization
dsuke Takaoka
Deep Learning in theano
Massimo Quadrana
Ad
Similar to 第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
(20)
PDF
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
aitc_jp
PPTX
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
fukuoka.ex
PPTX
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
fukuoka.ex
PPTX
いきなりAi tensor flow gpuによる画像分類と生成
Yoshi Sakai
PPTX
「機械学習とは?」から始める Deep learning実践入門
Hideto Masuoka
PDF
Python初心者がKerasで画像判別をやってみた
KAIKenzo
PDF
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
marsee101
PDF
Enjoy handwritten digits recognition AI !!
KAIKenzo
PDF
TensorflowとKerasによる深層学習のプログラム実装実践講座
Ruo Ando
PDF
[第2版]Python機械学習プログラミング 第15章
Haruki Eguchi
PPTX
tfug-kagoshima
tak9029
PPTX
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
fukuoka.ex
PPTX
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
Naonori Nagano
PPTX
Deep Learning基本理論とTensorFlow
Tadaichiro Nakano
PDF
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
Katsuhiro Morishita
PDF
[第2版]Python機械学習プログラミング 第13章
Haruki Eguchi
PDF
[第2版]Python機械学習プログラミング 第16章
Haruki Eguchi
PDF
自習形式で学ぶ「DIGITS による画像分類入門」
NVIDIA Japan
PDF
[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-...
Deep Learning JP
PPTX
機械学習 / Deep Learning 大全 (2) Deep Learning 基礎編
Daiyu Hatakeyama
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
aitc_jp
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
fukuoka.ex
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
fukuoka.ex
いきなりAi tensor flow gpuによる画像分類と生成
Yoshi Sakai
「機械学習とは?」から始める Deep learning実践入門
Hideto Masuoka
Python初心者がKerasで画像判別をやってみた
KAIKenzo
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
marsee101
Enjoy handwritten digits recognition AI !!
KAIKenzo
TensorflowとKerasによる深層学習のプログラム実装実践講座
Ruo Ando
[第2版]Python機械学習プログラミング 第15章
Haruki Eguchi
tfug-kagoshima
tak9029
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
fukuoka.ex
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
Naonori Nagano
Deep Learning基本理論とTensorFlow
Tadaichiro Nakano
オトナのプログラミング勉強会 オトナのDeep Learning 2016-11
Katsuhiro Morishita
[第2版]Python機械学習プログラミング 第13章
Haruki Eguchi
[第2版]Python機械学習プログラミング 第16章
Haruki Eguchi
自習形式で学ぶ「DIGITS による画像分類入門」
NVIDIA Japan
[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-...
Deep Learning JP
機械学習 / Deep Learning 大全 (2) Deep Learning 基礎編
Daiyu Hatakeyama
More from Yasuyuki Sugai
(14)
PDF
業務システムで使える可視化テクニック - Apache HTTP編 -
Yasuyuki Sugai
PDF
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
Yasuyuki Sugai
PDF
IoTハンズオン勉強会 「センサーデータをクラウドに蓄積してみよう」
Yasuyuki Sugai
PDF
IoT勉強会「IoTデバイス Intel Edison編」
Yasuyuki Sugai
PDF
IoT勉強会「littleBitsとIFTTTで超お手軽IoTクッキング」
Yasuyuki Sugai
PDF
IoT勉強会「とりあえずIoT的なものを作ってみた ~センサーデータの測定・収集・蓄積・分析・出力まで~」
Yasuyuki Sugai
PDF
AITCクラウド部会 2014年度 これまでの振り返りとこれから
Yasuyuki Sugai
PDF
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
Yasuyuki Sugai
PDF
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
Yasuyuki Sugai
PDF
Hack For Japan 気象データ勉強会
Yasuyuki Sugai
PDF
rChartsによるインタラクティブな可視化表現
Yasuyuki Sugai
PDF
Yahoo Open Hack Day Japan 2
Yasuyuki Sugai
PDF
Vagrant勉強会 チュートリアル編
Yasuyuki Sugai
PDF
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
Yasuyuki Sugai
業務システムで使える可視化テクニック - Apache HTTP編 -
Yasuyuki Sugai
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
Yasuyuki Sugai
IoTハンズオン勉強会 「センサーデータをクラウドに蓄積してみよう」
Yasuyuki Sugai
IoT勉強会「IoTデバイス Intel Edison編」
Yasuyuki Sugai
IoT勉強会「littleBitsとIFTTTで超お手軽IoTクッキング」
Yasuyuki Sugai
IoT勉強会「とりあえずIoT的なものを作ってみた ~センサーデータの測定・収集・蓄積・分析・出力まで~」
Yasuyuki Sugai
AITCクラウド部会 2014年度 これまでの振り返りとこれから
Yasuyuki Sugai
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
Yasuyuki Sugai
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
Yasuyuki Sugai
Hack For Japan 気象データ勉強会
Yasuyuki Sugai
rChartsによるインタラクティブな可視化表現
Yasuyuki Sugai
Yahoo Open Hack Day Japan 2
Yasuyuki Sugai
Vagrant勉強会 チュートリアル編
Yasuyuki Sugai
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
Yasuyuki Sugai
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
1.
第3回 機械学習勉強会 「色々なNNフレームワークを動かしてみよう!」 ~Keras編~ 1 2016/06/27
2.
自己紹介 2 •菅井康之 •株式会社イーグル所属 •AITCクラウドテクノロジー活用部会 サブリーダー https://www.facebook.com/yasuyuki.sugai よろしくお願いしまーす ※この資料の内容は、 個人の見解です ※Keras歴1日
3.
- 本日の流れ - 3 •
keras 環境構築編 – AWS上にKerasの動作環境を準備 • keras Tutorial編 – チュートリアルの一つである、MNISTを 使ってお試し動作(theanoもTensorFlowも動くよ♪) • keras 手書き数字分類編 – MNISTのモデルと学習したパラメータを使って 手書き数字の画像を分類してみる Keras枠は30分なので、 超駆け足でいきます!
4.
ちなみに、本日のNN会にはCaffeが 出てきませんが、興味がある方が いらっしゃいましたら、去年のハンズオン 資料をご覧くださいませ 4 http://www.slideshare.net/yasuyukisugai/deep-learningcaffe 一回やったし、 もういいかな、 と思いまして。。
5.
5 • 一言で言うと、theanoのPythonラッパー • バックエンドでtheanoが動作 •
CNNとRNNの両者、および2つの組み合わせに対応 • 最近では、バックエンドにTensorFlowも使えるようになり、 同じコードでtheano,TensorFlowで実行可能に!! • 抽象化、モジュール化することでブロックを組み合わせるように (簡潔に)モデルを構築できる • そのおかげでバックエンドを切り替えられるけど、 モデルのコンパイルがクソ遅い。。。。 モデル周りが直感的で、 NN触ったことある人なら すぐに理解できそう。 Kerasって?
6.
6 theanoのラッパーにはPylearn2があったけど、 kerasに軍配があがった模様 Pylearn2のサイトトップに、いつの間にかKerasが紹介 されてる。。(そしてPylearn2開発終了?のお知らせ) http://deeplearning.net/software/pylearn2/
7.
7 公式ドキュメントがしっかり作られているので、 これを見るだけで大体できるようになるかと思います セットアップ手順もこれを参照すればOK! http://keras.io/
8.
keras 環境構築編 - AWSセットアップ
- 8
9.
今日の環境 9 • 時間がないので、学習時間短縮のため、NVIDIAが 提供するAWSのイメージを利用します (cuDNNは入っていないので、若干速い程度です) • この資料の手順を実施していただければ、 他のAmazonLinuxやCentOSなどでも同様に実施可 能です
10.
また、普段は安価にすむよう スポットインスタンスを使うのですが、 インスタンスの準備ができるまでに 時間がかかるのと、需要によっては 突然インスタンス落とされるので、 今回も通常のインスタンスでやりま す。 10 何百円かかかります ※一時間辺り、$0.67くらい
11.
スポットインスタンスを使ってると・・・ 11 途中でこれが 発生すると悲しいので・・・
12.
まずEC2にアクセス 12
13.
インスタンスを作成していきます 13 ① ②
14.
今回はNVIDIAのインスタンスを使用 14 ① ② ③
15.
GPUインスタンスのg2.2xlargeを 選択します 15 ② ③ ①
16.
外からアクセスするように、 パブリックIPを割り当て 16 ② ①
17.
あとは基本そのままで問題無いはず ですが、カスタマイズしたい箇所が あれば設定変更してください 17
18.
最後に構成を確認して、インスタンスを 作成します 18 ①
19.
この画面で作成したキーペアは 無くさないよう気をつけてください。。。 19 ① ②
20.
作成中。。。 20 ※一度もインスタンスを作成した事がないアカウントの場合、 「2時間待て」というエラーが出る事があります(事前の注意事項参照) もし発生してしまった場合は、CPUモードで試していただくことになります
21.
作成したインスタンスへの SSH接続手順を確認します 21 ① ②
22.
コマンドでの接続方法が確認できます (TeraTermなどのツールを使う方は キーペアとドメインを指定してください) 22 ※NVIDIAのインスタンスの場合、 ユーザ名は「ec2-user」を 指定してください root -> c2-user
23.
SSHでインスタンスに 接続できましたでしょうか? 23
24.
keras 環境構築編 - 諸々セットアップ
- 24
25.
コマンド実行時の注意事項 25 • コピペした際に、スペースや改行部分の文字コードが変わって しまう場合があります – コマンドが無いよ、などのエラーになったらスペースor改行を 疑ってください •
~ はチルダです – /home/ec2-user ディレクトリを指定する際に使用します – 上手くいかない場合は、~ を /home/ec2-user に 読み替えて実行してください • 行頭の$ はプロンプトを意味しています – 実行時には入力しないでください • 前のスライドの続きでコマンドを実行するため、 カレントディレクトリには注意してください
26.
26 ①環境確認 • Pythonのバージョンを確認します $ python
--version Python 2.7.10 • CUDAコンパイラのバージョンを確認します ※GPUで動かすためで、必須ではないです $ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2015 NVIDIA Corporation Built on Tue_Aug_11_14:27:32_CDT_2015 Cuda compilation tools, release 7.5, V7.5.17 2.7系 or 3系ならOK 7.5系ならOK
27.
27 ②不足ライブラリのインストール • AmazonLinuxだと入っていないものが多いの で。。。 $ sudo
yum install gcc gcc-c++ git : (中略) Successfully installed Theano-0.8.2 numpy-1.11.1 scipy-0.17.1 six-1.10.0 • pipも古いので。。。 $ sudo pip install --upgrade pip : (中略) Successfully installed pip-8.1.2 ※以降、pip2で実行 (sudoの場合、PATHが通ってないので/usr/local/bin/pip2)
28.
28 ③theanoインストール • バックエンドとなるtheanoをインストール numpyとかscipyとかも一緒に入ります $ sudo
/usr/local/bin/pip2 install Theano : (中略) Successfully installed Theano-0.8.2 numpy-1.11.1 scipy-0.17.1 six-1.10.0 • 手順通りだと、以下のテスト実施がありますが 時間がとてもかかるので割愛します (テストなのでやらなくてもOK!!) $ sudo /usr/local/bin/pip2 install nose $ sudo /usr/local/bin/pip2 install nose-parameterized $ nosetests theano
29.
29 ④TensorFlowインストール • バックエンドとなるTensorFlowをインストール nvcc入ってれば何とか動くけど、kerasではエラーとなるため、 今回はCPUで動作します $ sudo
/usr/local/bin/pip2 install --upgrade https:// storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0- cp27-none-linux_x86_64.whl • GPUの方はこちら(Require cuDNN) • CPUの方はこちら $ sudo /usr/local/bin/pip2 install --upgrade https:// storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0- cp27-none-linux_x86_64.whl : (中略) Successfully installed tensorflow-0.9.0
30.
30 ⑤kerasインストール • keras本体のインストール $ sudo
/usr/local/bin/pip2 install keras : (中略) Successfully installed keras-1.0.4 • sampleなどを本家からダウンロード $ cd $ git clone https://github.com/fchollet/keras.git : (中略) Checking connectivity... done. homeディレクトリに入れたいので、念のためcdでhomeへ移動
31.
31 ⑥HDF5インストール • kerasで学習したパラメータはHDF5形式で保存するため、インストール ※必須ではないです。面倒かつ時間がかかるのでやらなくてもOK! $ cd $
wget http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.17.tar.gz $ tar xvfz hdf5-1.8.17.tar.gz $ cd hdf5-1.8.17 $ ./configure prefix=/opt/hdf5; make; sudo make install Hierarchical Data Format 5の略 科学技術計算などの分野で、時系列の大量のデータを記録するときに使用 $ export LIBRARY_PATH=/opt/hdf5/lib:$LIBRARY_PATH $ export LD_LIBRARY_PATH=/opt/hdf5/lib:$LD_LIBRARY_PATH $ export C_INCLUDE_PATH=/opt/hdf5/include:$C_INCLUDE_PATH $ export CPLUS_INCLUDE_PATH=/opt/hdf5/include:$CPLUS_INCLUDE_PATH $ sudo -E /usr/local/bin/pip2 install h5py : (中略) Successfully built h5py • HDF5本体 (環境に合わせたインストーラもあるけど、面倒なのでソースコンパイル) • Pythonライブラリ (環境変数設定後)
32.
32 HDF5に興味がある方は、本家の方で・・・ https://www.hdfgroup.org/HDF5/
33.
keras Tutorial編 - MNIST
- 33
34.
LeNet MNIST 34 • 手書き数字の認識精度テスト •
28x28ピクセル、70,000枚の画像 • kerasでは、60,000を訓練に使い、 10,000をテストで使います • 今日は色々なNNでMNISTを動かしてみる会です! (再掲)
35.
35 ①mnist実行 • とりあえずmnistのサンプルを動かしてみよう! $ cd $
python keras/examples/mnist_cnn.py Using Theano backend. 「Using Theano backend.」という記述から、theanoで動作していることが わかります。 時間がかかるので、Ctrl-Cで一回止めちゃいましょう!! $ export THEANO_FLAGS=device=gpu0,floatX=float32 theanoをGPUモードで動作させたい場合は、以下の環境変数を 設定後にサンプルを動作 (GPUデバイスは環境に合わせて) Using Theano backend. Using gpu device 0: GRID K520 (CNMeM is disabled, cuDNN not available) NVIDIAはcuDNNが入ってないので、以下のように出力されます
36.
36 ②keras環境ファイル確認 • とりあえず動かしたのには理由があり、、 一度実行するとhomeディレクトリに .kerasというディレクトリができています $ ls
-ltra drwxrwxr-x 3 ec2-user ec2-user 4096 6月 27 09:43 .keras • この中にある、.keras/keras.jsonが バックエンドを切り替えたりする 環境ファイルになります $ ls -ltr .keras -rw-rw-r-- 1 ec2-user ec2-user 109 6月 27 09:43 keras.json drwxrwxr-x 2 ec2-user ec2-user 4096 6月 27 09:43 datasets
37.
37 ③kerasのバックエンドを切り替えてみる • .keras/keras.jsonのbackendを書き換えます { "image_dim_ordering": "th", "epsilon":
1e-07, "floatx": "float32", "backend": "theano" } • Before • After { "image_dim_ordering": "th", "epsilon": 1e-07, "floatx": "float32", "backend": "tensorflow" }
38.
38 ④mnist再実行 • もう一度mnistのサンプルを動かしてみます $ cd $
python keras/examples/mnist_cnn.py Using TensorFlow backend. 「Using TensorFlow backend.」という記述から、 TensorFlowに切り替わったことがわかります。 時間がかかるので、Ctrl-Cで一回止めちゃいましょう!!
39.
39 ⑤mnistの中身を見てみよう • 資料が間に合わなかったので、その場で。。
40.
40 Using Theano backend. Using
gpu device 0: GRID K520 (CNMeM is disabled, cuDNN not available) X_train shape: (60000, 1, 28, 28) 60000 train samples 10000 test samples Train on 60000 samples, validate on 10000 samples Epoch 1/12 60000/60000 [==============================] - 29s - loss: 0.3823 - acc: 0.8824 - val_loss: 0.1019 - val_acc: 0.9679 Epoch 2/12 60000/60000 [==============================] - 29s - loss: 0.1522 - acc: 0.9558 - val_loss: 0.0683 - val_acc: 0.9791 Epoch 3/12 60000/60000 [==============================] - 29s - loss: 0.1166 - acc: 0.9652 - val_loss: 0.0549 - val_acc: 0.9818 Epoch 4/12 60000/60000 [==============================] - 29s - loss: 0.0992 - acc: 0.9710 - val_loss: 0.0474 - val_acc: 0.9847 Epoch 5/12 60000/60000 [==============================] - 29s - loss: 0.0864 - acc: 0.9753 - val_loss: 0.0452 - val_acc: 0.9852 Epoch 6/12 60000/60000 [==============================] - 29s - loss: 0.0775 - acc: 0.9768 - val_loss: 0.0436 - val_acc: 0.9853 Epoch 7/12 60000/60000 [==============================] - 29s - loss: 0.0672 - acc: 0.9799 - val_loss: 0.0370 - val_acc: 0.9875 Epoch 8/12 60000/60000 [==============================] - 29s - loss: 0.0625 - acc: 0.9811 - val_loss: 0.0364 - val_acc: 0.9880 Epoch 9/12 60000/60000 [==============================] - 29s - loss: 0.0583 - acc: 0.9825 - val_loss: 0.0344 - val_acc: 0.9882 Epoch 10/12 60000/60000 [==============================] - 29s - loss: 0.0549 - acc: 0.9833 - val_loss: 0.0321 - val_acc: 0.9885 Epoch 11/12 60000/60000 [==============================] - 29s - loss: 0.0507 - acc: 0.9846 - val_loss: 0.0330 - val_acc: 0.9886 Epoch 12/12 60000/60000 [==============================] - 29s - loss: 0.0489 - acc: 0.9850 - val_loss: 0.0309 - val_acc: 0.9896 Test score: 0.0308561353186 Test accuracy: 0.9896 Theanoでの実行結果
41.
41 Using TensorFlow backend. X_train
shape: (60000, 1, 28, 28) 60000 train samples 10000 test samples Train on 60000 samples, validate on 10000 samples Epoch 1/12 60000/60000 [==============================] - 194s - loss: 0.3841 - acc: 0.8832 - val_loss: 0.1024 - val_acc: 0.9677 Epoch 2/12 60000/60000 [==============================] - 194s - loss: 0.1525 - acc: 0.9557 - val_loss: 0.0688 - val_acc: 0.9778 Epoch 3/12 60000/60000 [==============================] - 194s - loss: 0.1152 - acc: 0.9660 - val_loss: 0.0537 - val_acc: 0.9825 Epoch 4/12 60000/60000 [==============================] - 194s - loss: 0.0955 - acc: 0.9718 - val_loss: 0.0474 - val_acc: 0.9838 Epoch 5/12 60000/60000 [==============================] - 194s - loss: 0.0833 - acc: 0.9753 - val_loss: 0.0434 - val_acc: 0.9858 Epoch 6/12 60000/60000 [==============================] - 194s - loss: 0.0744 - acc: 0.9781 - val_loss: 0.0417 - val_acc: 0.9859 Epoch 7/12 60000/60000 [==============================] - 194s - loss: 0.0685 - acc: 0.9793 - val_loss: 0.0377 - val_acc: 0.9877 Epoch 8/12 60000/60000 [==============================] - 194s - loss: 0.0635 - acc: 0.9816 - val_loss: 0.0359 - val_acc: 0.9883 Epoch 9/12 60000/60000 [==============================] - 194s - loss: 0.0597 - acc: 0.9822 - val_loss: 0.0331 - val_acc: 0.9888 Epoch 10/12 60000/60000 [==============================] - 194s - loss: 0.0530 - acc: 0.9841 - val_loss: 0.0340 - val_acc: 0.9890 Epoch 11/12 60000/60000 [==============================] - 194s - loss: 0.0521 - acc: 0.9841 - val_loss: 0.0315 - val_acc: 0.9893 Epoch 12/12 60000/60000 [==============================] - 195s - loss: 0.0490 - acc: 0.9849 - val_loss: 0.0325 - val_acc: 0.9892 Test score: 0.0325271734926 Test accuracy: 0.9892 TensorFlowでの実行結果
42.
42 ⑥mnistのモデル/パラメータを保存しよう • せっかく学習したので、(何度も実施して いられないので)モデルと学習パラメータを 保存したい! • さっきから実施しているサンプルコードを 書き換えましょう 末尾に以下のコードを追加してください $
vi keras/examples/mnist_cnn.py print('save the architecture of a model') json_string = model.to_json() open('cnn_model.json', 'w').write(json_string) yaml_string = model.to_yaml() open('cnn_model.yaml', 'w').write(yaml_string) print('save weights') model.save_weights('cnn_model_weights.hdf5')
43.
43 ⑦モデル/パラメータ保存の補足 • モデルはJSON、またはYAML形式で保存可能 • 学習パラメータはHDF5形式で保存 •
再度サンプルを動作させると、 homeディレクトリにファイルが保存される・・はず。 $ cd $ python keras/examples/mnist_cnn.py
44.
44 ⑧せっかくなので、それぞれの速度を・・ • 元々theano用に作られているので、TensorFlow向けの パフォーマンスチューニングはこれからかも? 1Epoch(60,000sample)辺り… theano
TensorFlow NVIDIA instance (no cuDNN) ※g2.2xlarge instance 29s (GPU) 194s (CPU) cuDNN instance ※g2.2xlarge instance 10s (GPU) 98s (GPU) g2.2xlarge instance 1,177s (CPU) 194s (CPU) t2.micro instance 測定不能 876s (CPU)
45.
keras 手書き数字分類編 - MNIST
- 45
46.
46 ①分類したい・・・よね? • せっかく学習させたので、学習パラメータと モデルを使って、実際に分類したい! • 先ほど保存したモデルを使って、分類するプログラムを 用意しました $
cd $ vi mnist_classifier.py コードは次スライドで。。。
47.
47 from __future__ import
print_function import sys import numpy as np np.random.seed(1337) # for reproducibility from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Convolution2D, MaxPooling2D from keras.utils import np_utils from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img from keras.models import model_from_json batch_size = 128 nb_classes = 10 nb_epoch = 12 # input image dimensions img_rows, img_cols = 28, 28 # number of convolutional filters to use nb_filters = 32 # size of pooling area for max pooling nb_pool = 2 # convolution kernel size nb_conv = 3 print("-- Read model ---") json_string = open('cnn_model.json').read() model = model_from_json(json_string) model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy']) model.load_weights('cnn_model_weights.hdf5') print(model.summary()) print("-- predict classes --") img = load_img(sys.argv[1], grayscale=True) x = img_to_array(img) x = x.reshape((1,)+x.shape) x /= 255 classes = model.predict(x, batch_size=batch_size, verbose=True) print(classes[0]) print(model.predict_classes(x, batch_size=batch_size)) モデルとパラメータを保存した ファイルから読み込んで・・・ 分類したい画像を 処理できるよう読み込んで・・・ 分類!!
48.
48 • プログラムがうまくコピペできない方向けに、 Dropboxにも同じものを置いてあります • めんどくさい人はこちらでもOKです pythonの場合、インデントがずれるとエラーにな るので、コピペだと難しいかもしれません。。 改行もPDFだと怪しいかも。。 ※元ファイルは消してから実行してください $
wget https://dl.dropboxusercontent.com/u/8148946/develop/aws/mnist_classifier.py
49.
49 ②分類する画像は・・・? • 私が手書きした画像ファイルを用意しました
50.
50 • 画像はサイズがマチマチだったり、 コントラストが効いてたりで、 このまま学習に使うと精度が悪いので 正規化していきます ③画像の前処理 $ sudo
yum install ImageMagick • 正規化にはImageMagickを利用しています
51.
51 ④まずは1つ目・・・ • 3をダウンロードして試してみます 例の如く、Dropboxから $ wget
https://dl.dropboxusercontent.com/u/8148946/develop/aws/hand_three.jpg $ mogrify -geometry 28x28 hand_three.jpg $ mogrify -equalize hand_three.jpg • ImageMagickを利用して正規化 • geometry : サイズ変更 28x28px • equalize : 画像のヒストグラム均等化
52.
52 画像の正規化 equalize geometry 28x28 • ヒストグラム均等化 • 画像のヒストグラムを均等(平坦)にすることで、 全画像のコントラストが統一され、 画像処理しやすくなる(カメラやってる人は詳しいですよね)
53.
53 ⑤分類してみよう • 先ほどのコードにパラメータで 画像ファイルを渡して実行 $ python
mnist_classifier.py hand_three.jpg -- predict classes -- 1/1 [==============================] - 0s [ 2.43401244e-10 2.48896811e-07 1.83150478e-05 9.99735653e-01 1.21337429e-09 3.13459373e-06 1.67957495e-10 1.48233937e-07 2.42191425e-04 3.22340981e-07] 1/1 [==============================] - 0s [3] • ちなみに私の環境の結果・・・ 0-9であるそれぞれの確率 最も高い確率のラベル (上の結果から、99.97…以上の確率で、3である)
54.
54 ⑥その他の画像も・・・ $ wget https://dl.dropboxusercontent.com/u/8148946/develop/aws/hand_eight.jpg $
mogrify -geometry 28x28 hand_eight.jpg $ mogrify -equalize hand_eight.jpg $ python mnist_classifier.py hand_eight.jpg -- predict classes -- 1/1 [==============================] - 0s [ 8.30656461e-07 3.80646213e-07 2.04700581e-03 2.39168089e-02 6.18481479e-08 2.73143174e-04 9.84432859e-07 5.56953580e-07 9.73759592e-01 5.90186460e-07] 1/1 [==============================] - 0s [8] • ちなみに私の環境の結果・・・
55.
55 ⑥その他の画像も・・・ $ wget https://dl.dropboxusercontent.com/u/8148946/develop/aws/hand_one.jpg $
mogrify -geometry 28x28 hand_one.jpg $ mogrify -equalize hand_one.jpg $ python mnist_classifier.py hand_one.jpg -- predict classes -- 1/1 [==============================] - 0s [ 1.70512255e-02 4.73892987e-01 1.40300682e-02 1.17668300e-04 1.29068550e-02 1.12136435e-02 3.36032882e-02 2.87611940e-04 4.36355650e-01 5.41018206e-04] 1/1 [==============================] - 0s [1] • ちなみに私の環境の結果・・・
56.
56 ⑥その他の画像も・・・ $ wget https://dl.dropboxusercontent.com/u/8148946/develop/aws/hand_four.jpg $
mogrify -geometry 28x28 hand_four.jpg $ mogrify -equalize hand_four.jpg $ python mnist_classifier.py hand_four.jpg -- predict classes -- 1/1 [==============================] - 0s [ 1.00734840e-04 4.62344708e-03 7.69768953e-02 1.44169380e-05 9.07931030e-01 3.15244615e-05 5.63872652e-03 1.50309980e-03 3.14575201e-03 3.44054097e-05] 1/1 [==============================] - 0s [4] • ちなみに私の環境の結果・・・
57.
一通り楽しんだら、インスタンスの後始末 57 ① ② ③ ④ 停止じゃなくて、削除しないとEBSの課金が続きます。。
58.
おわり。 58
Download