機械学習 PR

【NNabla】Neural Network Librariesと学習済みモデルによる推論 -NNPファイル編-

NNablaと学習済みモデルで推論
記事内に商品プロモーションを含む場合があります

こんにちは。

ディープラーニングお兄さんの”はやぶさ”@Cpp_Learningです。

前回、Sony製の深層学習フレームワーク “Neural Network Libraries(NNabla)” のPython APIと学習済みモデル(MyChain.h5)による推論を実践するチュートリアル記事を書きました。

NNablaと学習済みモデルで推論
【NNabla】Neural Network Librariesと学習済みモデルによる推論 -HDF5ファイル編-直観的にニューラルネットワークの実装ができるソニー製の深層学習フレームワーク”NNL”によるDeep Learning(ディープラーニング)入門チュートリアルを書きました。学習済みモデル(h5)を使った推論が行えるPython APIのソースコードも公開しています。勉強にお役立て下さい。...

↑記事の終盤で学習済みモデル”MyChain.nnp”を保存しました。

今回は、この学習済みモデル”MyChain.nnp”を使って推論を実践します。

学習済みモデルとは

学習済みモデルについて以下の記事で説明済みです。

NNablaと学習済みモデルで推論
【NNabla】Neural Network Librariesと学習済みモデルによる推論 -HDF5ファイル編-直観的にニューラルネットワークの実装ができるソニー製の深層学習フレームワーク”NNL”によるDeep Learning(ディープラーニング)入門チュートリアルを書きました。学習済みモデル(h5)を使った推論が行えるPython APIのソースコードも公開しています。勉強にお役立て下さい。...

なので、学習済みモデルについては、少し復習するだけにします。

【復習】Neural Network Libraries(NNabla)と学習済みモデル

“Neural Network Libraries”の場合、ニューラルネットワークは以下の形式で保存します。

ファイル 内容
net.nntxt ニューラルネットワークの構造(アーキテクチャ)
parameters.h5 ニューラルネットワークの重み(パラメータ)
net_param.nnp ニューラルネットワークの構造と重み

つまり、ニューラルネットワークの構造と重みが”MyChain.nnp”に保存してあります。

【実践】学習済みモデル(NNPファイル)による推論

NNableのPython APIと学習済みモデル(NNPファイル)を使って推論を行います。

学習済みモデル(HDF5ファイル)による推論用のソースコードと共通している部分も多いです。見比べてみてね。

import

nnablaの各モジュールをimportします。推論では最適化アルゴリズム(Solvers)を使いません。

その他、今回使用する数値演算モジュールなどもimportします。

NNabla用の変数定義

NNablaで学習および推論を行うために専用の変数を定義します。

学習済みモデル(重み + 構造)を読込む

学習済みモデル”MyChain.nnp”から”重み”と”アーキテクチャ”をロードします。

たった3行で学習済みモデル(NNPファイル)の読込みができました。

推論から推論結果のグラフ化まで

推論から推論結果をグラフ化するまでのソースコードは以下の通りです。

NNablaと学習済みモデルで推論

前回の”MyChain.h5”による推論結果と同じ結果が得られました。

スポンサーリンク

組み込み深層学習

少しだけ、組み込みシステムに深層学習を適用することを意識したソースコードも公開

推論結果のグラフ化などの余分なコードを削除し、入力値xeに対する推論値yeを出力するだけのコンパクトなソースコードに仕上げました。

すごいコンパクト!

と喜んでくれる人もいれば…

ウチの会社ではC++しか使えない…

とガッカリした人もいるかも(?)

Neural Network LibrariesによるDeep Learningチュートリアル
【NNabla】実践!Neural Network Librariesで学習から推論まで直観的にニューラルネットワークの実装ができるソニー製の深層学習フレームワーク”NNL”によるDeep Learning(ディープラーニング)入門チュートリアルを書きました。学習から推論まで行うPython APIを使ったソースコードも公開しています。勉強にお役立て下さい。...

↑の記事で“Neural Network Libraries(NNabla)”の特徴を説明していますが、C++で推論もできますよ。

Neural Network LibrariesとC++

“Neural Network Libraries” のコア部分がC++で実装されており、Python APIだけでなく、C++ APIも用意してあります。

そのため、Python・C++どちらでも学習と推論ができるし、以下のこともできます。

【学習フェーズ(Python API)】

  1. Python APIでニューラルネットワークを設計
  2. 学習(ニューラルネットワークの”重み”を調整)
  3. 学習済みモデルをNNPファイルに保存

【推論フェーズ(C++ API)】

  1. C++ APIで学習済みモデル(NNPファイル)を読込む
  2. センサ値などモデルへの入力値を取得
  3. 推論(入力値に対する推論値を取得)
  4. 推論値を使って”ごにょごにょ”する(制御とか)

このようなPythonで学習 ⇒ C++で推論という一連の処理をシームレスに実現できます。

NNablaによる組み込み深層学習

学習フェーズのところは、 を使ってもOKです。

  • “Neural Network Libraries”にはPython APIとC++ APIがあります
  • “Neural Network Libraries”のコアがC++で実装
  • 学習はPython・推論はC++という一連の処理をシームレスに実現
  • 学習済みモデルの生成は でもOK

まとめ

Sony製の深層学習フレームワーク “Neural Network Libraries(NNabla)” と学習済みモデル(NNP)を使った推論を実践しました。

また、組み込みシステムと深層学習についても少しだけ説明しました。

はやぶさ
はやぶさ
仕事で組み込み深層学習なども担当してるよ!

悩みは尽きませんが…

本記事を読んで「組込みシステムと深層学習に興味をもった!」という人が現れたら、ディープラーニングお兄さんはすごく嬉しい!

はやぶさ
はやぶさ
理系応援ブロガー”はやぶさ”@Cpp_Learningは頑張る理系を応援します!

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python