EN

Neural Network Libraries v1.18.0をリリースしました!

2021年3月23日 火曜日

リリース

Posted by Takuya Yashima

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枚程度)でも効率的に学習することができます。

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

フォーマットコンバーターの機能改善

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

Exampleの新規追加

バグ修正