SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Tendances (20)

Hacka chan-2018
Hacka chan-2018Hacka chan-2018
Hacka chan-2018
 
IkaLog Presentation v1.3
IkaLog Presentation v1.3IkaLog Presentation v1.3
IkaLog Presentation v1.3
 
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
 
エッジヘビーコンピューティングと機械学習
エッジヘビーコンピューティングと機械学習エッジヘビーコンピューティングと機械学習
エッジヘビーコンピューティングと機械学習
 
NTT Tech Conference #2 - closing -
NTT Tech Conference #2 - closing -NTT Tech Conference #2 - closing -
NTT Tech Conference #2 - closing -
 
DeepLearningフレームワークChainerの学習済みモデルをスマートフォンにDeployする
DeepLearningフレームワークChainerの学習済みモデルをスマートフォンにDeployするDeepLearningフレームワークChainerの学習済みモデルをスマートフォンにDeployする
DeepLearningフレームワークChainerの学習済みモデルをスマートフォンにDeployする
 
20170419PFNオープンハウス リサーチャーの仕事_公開用
20170419PFNオープンハウス リサーチャーの仕事_公開用20170419PFNオープンハウス リサーチャーの仕事_公開用
20170419PFNオープンハウス リサーチャーの仕事_公開用
 
Deep Learningを用いたロボット制御
Deep Learningを用いたロボット制御Deep Learningを用いたロボット制御
Deep Learningを用いたロボット制御
 
Deep Learning Abstract
Deep Learning AbstractDeep Learning Abstract
Deep Learning Abstract
 
IkaLog Presentation at qpstudy 2015.11
IkaLog Presentation at qpstudy 2015.11IkaLog Presentation at qpstudy 2015.11
IkaLog Presentation at qpstudy 2015.11
 
E2D3の開発で気づいたOSSの効用
E2D3の開発で気づいたOSSの効用E2D3の開発で気づいたOSSの効用
E2D3の開発で気づいたOSSの効用
 
ロボットサービス開発の現場から
ロボットサービス開発の現場からロボットサービス開発の現場から
ロボットサービス開発の現場から
 
menta_lt
menta_ltmenta_lt
menta_lt
 
IoTでアヒルを動かしてみました
IoTでアヒルを動かしてみましたIoTでアヒルを動かしてみました
IoTでアヒルを動かしてみました
 
最近ソフトウェア開発が面白くない
最近ソフトウェア開発が面白くない最近ソフトウェア開発が面白くない
最近ソフトウェア開発が面白くない
 
求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介
求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介
求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
ゲーム体験を支える強化学習の実応用について
ゲーム体験を支える強化学習の実応用についてゲーム体験を支える強化学習の実応用について
ゲーム体験を支える強化学習の実応用について
 
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつElixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/Nervesはナウでヤングなcoolなすごいやつ
 
Iot algyan jhirono 20190111
Iot algyan jhirono 20190111Iot algyan jhirono 20190111
Iot algyan jhirono 20190111
 

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

TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
Hiro Yoshioka
 
チームラボハンガー開発経緯トークセミナー
チームラボハンガー開発経緯トークセミナー チームラボハンガー開発経緯トークセミナー
チームラボハンガー開発経緯トークセミナー
Minami Kumamoto
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
 

Similaire à 人工知能のコードをハックする会 #2 (20)

OSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSCOSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSC
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
 
チームラボハンガー開発経緯トークセミナー
チームラボハンガー開発経緯トークセミナー チームラボハンガー開発経緯トークセミナー
チームラボハンガー開発経緯トークセミナー
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
Ldd13 present
Ldd13 presentLdd13 present
Ldd13 present
 
デザイン領域へiOS / Android開発
デザイン領域へiOS / Android開発デザイン領域へiOS / Android開発
デザイン領域へiOS / Android開発
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 
.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
 
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしようC++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでCode for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
 
メンバーズグループ アジャイル開発への取り組み
メンバーズグループ アジャイル開発への取り組みメンバーズグループ アジャイル開発への取り組み
メンバーズグループ アジャイル開発への取り組み
 

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