Neural Network Librariesがv1.0.14に! C++で簡単に計算グラフを作成できるようになりました!

2019年3月25日 月曜日

API , リリース

Posted by Takuya Yashima

今月はNeural network Libraries v1.0.13とv1.0.14のリリースがありました!
今回はこの2つのアップデートで追加された内容をまとめて紹介します。

スポットライト

Python-like C++ APIの追加

Pythonライクにニューラルネットワークを構築できるC++ APIを公開しました。
これによってC++で関数レイヤーの作成・構築、パラメータの作成が可能です。

詳しくはサンプルコードをご覧ください。

C++ APIの使い方とPython APIとの比較:

  • 名前空間の定義
namespace f = nbla::functions;
namespace pf = nbla::parametric_functions;
import nnabla.functions as F
import nnabla.parameteric_functions as PF

 

  • 計算グラフの構築
auto h = pf::convolution(x, 1, 16, {5, 5}, parameters["conv1"]);
h = f::max_pooling(h, {2, 2}, {2, 2}, true, {0, 0});
h = f::relu(h, false);
h = pf::convolution(h, 1, 16, {5, 5}, parameters["conv2"]);
h = f::max_pooling(h, {2, 2}, {2, 2}, true, {0, 0});
h = f::relu(h, false);
h = pf::affine(h, 1, 50, parameters["affine3"]);
h = f::relu(h, false);
h = pf::affine(h, 1, 10, parameters["affine4"]);
h = PF.convolution(x, 16, (5, 5), name='conv1')
h = F.max_pooling(h, (2, 2))
h = F.relu(h, inplace=True)
h = PF.convolution(h, 16, (5, 5), name='conv2')
h = F.max_pooling(h, (2, 2))
h = F.relu(h, inplace=True)
h = PF.affine(h, 50, name='fc3')
h = F.relu(h, inplace=True)
h = PF.affine(h, 10, name='fc4')

 

その他の変更

レイヤー関数の新規追加・改善

ユーティリティの機能改善

ドキュメントの追加・修正