返回 登录
2

NNabla:索尼开源的一款神经网络框架

原文NNabla - Neural Network Libraries
作者:Sony公司
翻译:雁惊寒

NNabla是一款用于研究、开发和生产的深度学习框架。 NNabla的目标是要能在台式电脑、HPC集群、嵌入式设备和生产服务器上都能运行。

安装

安装NNabla很简单:

pip install nnabla

这条命令将安装NNabla的CPU版本。你还可以通过执行pip install nnabla-ext-cuda来安装CUDA扩展以添加GPU加速。

特点

容易、灵活和富有表现力

基于NNabla C++ 11内核的Python API为你提供了强大的灵活性和高效的生产力。例如,下面的5行代码定义了一个具有分类损失的双层神经网络(超参数用<>括了起来)。

import nnabla as nn
import nnabla.functions as F
import nnabla.parametric_functions as PF

x = nn.Variable(<input_shape>)
t = nn.Variable(<target_shape>)
h = F.tanh(PF.affine(x, <hidden_size>, name='affine1'))
y = PF.affine(h, <target_size>, name='affine2')
loss = F.mean(F.softmax_cross_entropy(y, t))

可以通过以下方式来完成训练:

import nnabla.solvers as S

# 创建一个求解器(参数更新器)
solver = S.Adam(<solver_params>)
solver.set_parameters(nn.get_parameters())

# 训练迭代
for n in range(<num_training_iterations>):
    # 从任何一个数据源中设置数据
    x.d = <set data>
    t.d = <set label>
    # 初始化变化率
    solver.zero_grad()
    # 前向后向执行
    loss.forward()
    loss.backward()
    # 使用计算出来的变化率更新参数
    solver.update()

动态计算图能够实现灵活的运行时网络构建。 NNabla可以同时使用静态和动态图范式,并且两者使用相同的API。

x.d = <set data>
t.d = <set label>
drop_depth = np.random.rand(<num_stochastic_layers>) < <layer_drop_ratio>
with nn.auto_forward():
    h = F.relu(PF.convolution(x, <hidden_size>, (3, 3), pad=(1, 1), name='conv0'))
    for i in range(<num_stochastic_layers>):
        if drop_depth[i]:
            continue  # Stochastically drop a layer
        h2 = F.relu(PF.convolution(x, <hidden_size>, (3, 3), pad=(1, 1), 
                                   name='conv%d' % (i + 1)))
        h = F.add2(h, h2)
    y = PF.affine(h, <target_size>, name='classification')
    loss = F.mean(F.softmax_cross_entropy(y, t))
# Backward computation (can also be done in dynamically executed graph)
loss.backward()

便携性和多平台支持

  • Python API可以在Linux和Windows上使用
  • 大多数库代码都是用C++ 11编写的,可以部署到嵌入式设备上

可扩展性

  • 可以很容易地添加新的模块,如神经网络运算符和优化器。
  • 该库允许开发人员添加专门的实现(例如,针对FPGA的实现)。例如,我们提供了CUDA后端扩展,它利用GPU加速来提高运算速度。

高效

  • 单个CUDA GPU上的高速度
  • 内存优化引擎
  • 多GPU支持(即将推出)

文档

https://nnabla.readthedocs.org

安装

https://nnabla.readthedocs.io/en/latest/python/installation.html

入门

  • tutorial目录中可以找到一些Jupyter Notebook教程。 我们建议从by_examples.ipynb这个实例开始学习。另外,在python_api.ipynb中介绍了NNabla的API。
  • 我们还在examples目录中提供了一些更复杂的例子。
评论