Neural Network Libraries v1.18.0をリリースしました!
高階微分が可能になるHigher-order gradients機能が実装されました!また、新規ExampleとしてSLE-GANが追加されました!
Spotlight
Higher-Order Gradients (CPU / GPU)
v1.1.0で導入されたDouble Backwardですが、ここで用いられる勾配計算グラフの構築方法を改良し、既存の関数で n階微分(複数回の微分)ができるようになりました!
以下のようにしてn階微分を求められます。
import numpy as np
import nnabla as nn
import nnabla.functions as F
x = nn.Variable.from_numpy_array(np.random.randn(2, 2)).apply(need_grad=True)
x.grad.zero()
y = F.sin(x)
def grad(y, x, n=1):
dx = [y]
for _ in range(n):
dx = nn.grad([dx[0]], [x])
return dx[0]
dnx = grad(y, x, n=10)
dnx.forward()
print(np.allclose(-np.sin(x.d), dnx.d))
dnx.backward()
print(np.allclose(-np.cos(x.d), x.g))
また、以下のようにしてレジストリを見ることもでき、さらに独自実装した関数についても、その自動微分関数を登録することも可能です。
# Show the registry status
from nnabla.backward_functions import show_registry
show_registry()
# Register the grad function of a function
register("<FancyFunction>", <fancy_function>_backward)
SLE-GAN
生成モデルとしてSLE-GANが追加されました。このモデルは、サイズ(パラメータの数)がStyleGAN2の約半分と軽量で、少数の学習データ(100枚程度)でも効率的に学習することができます。
レイヤー関数等の新規追加・改善
フォーマットコンバーターの機能改善
ユーティリティの機能改善
- BOMつきUTF-8のサポート
- ONNXインポーター: BatchNorm1dのサポート
- nnabla_cli: context指定などのオプション追加
- nnabla_cli: OOC利用のオプション追加
- CSVファイルのコメント対応