NNabla是一个深度学习框架,计划在研究,开发与生产领域当中使用。索尼的目标是让它可以在任何地方运行,就像个人笔记本电脑、高性能计算集群、嵌入式装置和生产服务器一样。因此索尼希望通过提供高效便捷的机器学习库而将算法嵌入到边缘设备中。
安装 NNabla 很简单:
1 |
pip install nnabla |
这是CPU版本的NNabla,GPU-加速器可以通过安装CUDA工具包来添加:
1 |
pip install nnabla-ext-cuda |
基于NNabla C++11 内核的 Python API给你提供了灵活性和高产出效率。例如,一个带有分类损失的两层神经网络可以仅通过以下5行代码被定义(超参数由<>括出)。
1 2 3 4 5 6 7 |
import nnabla as nnimport nnabla.functions as Fimport 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)) |
训练可以通过以下步骤来完成:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import nnabla.solvers as S # Create a solver (parameter updater) solver = S.Adam(<solver_params>) solver.set_parameters(nn.get_parameters()) # Training iterationfor n in range(<num_training_iterations>): # Setting data from any data source x.d = <set data> t.d = <set label># Initialize gradients solver.zero_grad() # Forward and backward execution loss.forward() loss.backward() # Update parameters by computed gradients solver.update() |
动态计算图使网络结构的执行时间变得灵活。NNabla 可以使用静态和动态图的模型,在两种情况下都使用相同的 API。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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() |
https://nnabla.readthedocs.org
https://nnabla.readthedocs.io/en/latest/python/installation.html
在tutorial页面中可以找到很多Jupyter notebook教程。我们建议由by_examples.ipynb开始在NNabla 学习第一个案例,python_api.ipynb 文档介绍了NNabla API。
我们同样在 examples 中提供哦提供了一些其他复杂的案例。
转自:百晓通客栈
本文由 安全周 作者:空心 发表,转载请注明来源!
您必须[登录] 才能发表留言!