今月は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')