概述
原文: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
目录中提供了一些更复杂的例子。
最后
以上就是酷酷抽屉为你收集整理的NNabla:索尼开源的一款神经网络框架的全部内容,希望文章能够帮你解决NNabla:索尼开源的一款神经网络框架所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复