狠狠撸

狠狠撸Share a Scribd company logo
1
人工知能のコードを
ハックする会 #2
A I C o d e H a c k e r s
2
アジェンダ
? 概要説明
? 自己紹介
? 本会の趣旨
? 今回の目標
? NNablaとNeural Network Consoleの紹介
? NNabla
? Neural Network Console
? 他フレームワークとの実装方法の比較
? 使ってみる
3
自己紹介
▼開発経験
?アルゴリズム/ライブラリ開発(C / C++、Python)
?組み込みソフトウェア開発(C)
?WEBアプリケーション開発(Java、 PHP 、JavaScript、 Python、Go)
?Windowsデスクトップアプリケーション開発(C#)
株式会社LABBIZ 代表取締役
ソフトウェアエンジニア
「 THE STAGE .tech 」を企画?運営
▼略歴
時計メーカー研究開発职 ? データ分析会社新規事業開発职
? IoTスタートアップ研究開発职 ? 創業
神谷 亮平
4
指輪型ジェスチャーコントローラ「 Ring 」の開発者
前 职
5
創り手の活躍にフォーカスしたインタビューメディア
「 THE STAGE .tech 」を運営
現 职
https://the-stage.tech/
6
T H E S TA G E . t e c h
取 材 サ ポ ー タ ー 制 度
メディアの取材に同行して、
企業を訪問できるサービス。
7
人工知能のコードを読んで
ハックして遊びたい!
本会の趣旨
目 的
? 人工知能(パターン認識/機械学習)のソースコードの解読方法を学び、
共有する
? プログラムの改良や新しい応用を検討する
? 知的好奇心/探究心を追求して楽しむ
8
今回の目標
目 標
? NNablaとNeural Network Consoleを使える環境を整える
? NNablaとNeural Network Consoleの使い方を理解する
9
NNabla
10
? NNablaとは?
? Sonyのディープラーニングフレームワーク
? Neural Network Libraries(NNablaはパッケージ名?)
? 特徴
? シンプル
? 静的計算グラフと動的計算グラフの両方をサポート
? 高い移植性(大部分がピュアなC++11で記述)
? コードテンプレート生成機能
? プラグインでターゲットデバイスを追加可能
NNabla
11
NNabla – 使い方(python)
▼ネットワーク定義 ▼学習
引用:https://github.com/sony/nnabla
▼推論
x.d = <set data>
t.d = <set dummy label>
y.forward()
print y.d.argmax(axis=1)
引用:https://github.com/sony/nnabla
12
NNabla – 動的計算グラフ
▼例
動的計算グラフモード
確率的にレイヤーを除去
引用:https://github.com/sony/nnabla
13
NNabla – C++サンプル
? サンプルコード
? https://github.com/sony/nnabla/tree/v0.9.4/examples/cpp/mnist_runtime
? 実行方法
? $ python classification.py # at examples/vision/mnist
? $ python save_nnp_classification.py # at examples/cpp/mnist_runtime
? $ make # at examples/cpp/mnist_runtime
? $ ./mnist_runtime nnp_file input_pgm # at examples/cpp/mnist_runtime
14
Neural Network Console
15
? Neural Network Consoleとは?
? Sonyのニューラルネットワーク設計?学習?評価ツール
? WindowsのGUIアプリケーション
? 特徴
? NNablaを使用
? ドラッグ&ドロップでニューラルネットワークを設計
? パラメータを自動で探索
? ニューラルネットワークを学習?評価可能
? 学習?評価の履歴を管理
Neural Network Console
16
Neural Network Console – EDIT
編集タブ
17
Neural Network Console – TRAINING
学習開始ボタン
18
Neural Network Console – EVALUATION
19
Neural Network Console – DATASET
データセット
タブ
20
Neural Network Console – Config:Global
コンフィグ
タブ
Max Epoch(学習の最大繰り返し回数)Batch Size
(ミニバッチのサンプル数)
パラメータ自動探索設定
パラメータ自動探索ON/OFF
21
Neural Network Console – Config:Optimizer
コンフィグ
タブ
最適化に用いるネットワーク名
データセット名
パラメータ更新間隔最適化手法
22
Neural Network Console – Config:Monitor
コンフィグ
タブバリデーションに用いるネットワーク名
バリデーションに用いるデータセット名
23
Neural Network Console – Config:Executor
コンフィグ
タブ評価に用いるネットワーク名
評価に用いるデータセット名
24
? Neural Network Consoleの評価実行ログ
Neural Network Console – pythonで評価実行
Neural Network Consoleはpythonをキックしている
↓ココ以下のスクリプト
neural_network_console_100/libs/nnabla/python/src/nnabla
? 評価実行に必要なpythonスクリプト
25
Neural Network Console – C++で推論実行
? net.nntxtとparameters.h5を作成
? Neural Network Consoleのサンプルプロジェクト
binary_connect_mnist_LeNetで学習を実行して作成
? NNPファイル作成
? $ zip model.nnp net.nntxt parameters.h5
? サンプルコードのカスタマイズ、実行
? https://github.com/sony/nnabla/tree/v0.9.4/examples/cpp/mnist_runtime
? 98行目: 「auto executor = nnp.get_executor(“runtime”);」の”runtime”
を”Executor”に変更
? make して実行
26
フレームワーク比較
27
? Keras(Backend: TensorFlow)
? PyTorch
? TensorFlow
? NNabla
? Neural Network Console
比較対象
28
比較方法検討
GoogleでTopに表示されるこちらの記事を参考にさせていただきました。
http://qiita.com/t-ae/items/48f17904fcc321d4d421
29
比較方法
? 各フレームワークの「実装方法」を比較
? Keras(Backend: TensorFlow)
? PyTorch
? TensorFlow
? NNabla
? Neural Network Console
参考記事で比較されてる
参考記事に合わせて実装
30
NNabla(python)の実装①
学習用データはkerasの関数で取得(理由:手抜き)
NNablaのデータ入力用の関数とクラス
NNablaの
基本パッケージ
31
NNabla(python)の実装②
公式サンプルを参考に
データ読み込みのための
クラスを実装
32
NNabla(python)の実装③
参考記事の実装(mnist_pytorch.py)と同じネットワークを実装。
33
NNabla(python)の実装④
参考記事の実装
(mnist_pytorch.py)
からコピペ。
NNablaの
バッチデータ入力
インターフェース
34
NNabla(python)の実装⑤
公式サンプルを
参考に記述
公式サンプルを
参考に参考記事
に合わせて記述
35
NNabla(python)の実装⑥
公式サンプルを参考に、参考記事に合わせて記述
36
Neural Network Consoleの実装パターン1 ①
Componentsから、
ダブルクリックして並べる
37
Neural Network Consoleの実装パターン1 ②
Pythonコードをクリップボードに出力
38
Neural Network Consoleの実装パターン1 ③
出力コード
手動実装コード
【主な相違点】
?出力コードは返り値がない
?出力コードにはロス関数も含まれている(手動実装では外出ししてる)
39
Neural Network Consoleの実装パターン2
学習を実行すると出力される
net.nntxtの中身
推論実行時は、net.nntxtと
parameters.h5さえあれば、
ニューラルネットワークの
コードは実装不要!
しかも、python、C++の
両方から使える!
40
41
42
他フレームワークの実装を移植
43
例えば、KerasのVGG16
▼モデル構造を出力
from keras.applications.vgg16 import VGG16
model = VGG16(include_top=True, weights='imagenet', input_tensor=None, input_shape=None)
model.summary()
NNabla、Neural Network Consoleで
実装してみよう!
44
ワークショップ形式
(チームを組んでやります)
45

More Related Content

人工知能のコードをハックする会 #2