GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

sony

nnabla – ニューラルネットワークライブラリ

投稿日:

ニューラルネットワークライブラリ https://nnabla.org/

Neural Network Libraries

Neural Network Libraries is a deep learning framework that is intended to be used for research, development and production. We aim to have it running everywhere: desktop PCs, HPC clusters, embedded devices and production servers.

インストール

ニューラルネットワークライブラリのインストールは簡単です:

pip install nnabla

This installs the CPU version of Neural Network Libraries. GPU-acceleration can be added by installing the CUDA extension with pip install nnabla-ext-cuda .

詳細については、ドキュメントのインストールセクションを参照してください。

ソースからのビルド

See Build Manuals .

Running on Docker

Dockerでの実行の詳細については、ドキュメントのインストールセクションを参照してください。

特徴

簡単で柔軟で表現力豊かな

The Python API built on the Neural Network Libraries C++11 core gives you flexibility and productivity. 例えば、分類損失を伴う2層ニューラルネットワークは、以下の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))

Training can be done by:

import nnabla.solvers as S

# Create a solver (parameter updater)
solver = S.Adam(<solver_params>)
solver.set_parameters(nn.get_parameters())

# Training iteration
for 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()

動的計算グラフは、柔軟な実行時ネットワーク構築を可能にする。 Neural Network Libraries can use both paradigms of static and dynamic graphs, both using the same 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()

Command line utility

Neural Network Libraries provides a command line utility nnabla_cli for easier use of NNL.

nnabla_cli provides following functionality.

  • Training, Evaluation or Infernce with NNP file.
  • Dataset and Parameter manipuration.
  • File format converter
    • From ONNX to NNP and NNP to ONNX.
    • From ONNX or NNP to NNB or C source code.

For more details see Documentation

Portable and multi-platform

  • Python API can be used on Linux and Windows
  • Most of the library code is written in C++11, deployable to embedded devices

拡張可能

  • Easy to add new modules like neural network operators and optimizers
  • このライブラリを使用すると、開発者は特殊な実装(FPGAなど)を追加できます。 For example, we provide CUDA backend as an extension, which gives speed-up by GPU accelerated computation.

Efficient

  • High speed on a single CUDA GPU
  • メモリ最適化エンジン
  • Multiple GPU support

ドキュメンテーション

https://nnabla.readthedocs.org

入門

  • ジュピターノートチュートリアルの多くはチュートリアルフォルダにあります。 Neural Network Librariesの最初の実例はpython_api.ipynbから、Neural Network Libraries APIの紹介はpython_api.ipynbから始めることをお勧めします。

  • We also provide some more sophisticated examples at nnabla-examples repository.

  • C++ API examples are avaiailable in examples/cpp .

寄付ガイド

この技術は急速に進歩しており、研究者や開発者はしばしば深い学習フレームワークにカスタム機能を追加したいと考えています。 この時点でNNablaは本当にいいですね。 The architecture of Neural Network Libraries is clean and quite simple. Also, you can add new features very easy by the help of our code template generating system. 詳細については、次のリンクを参照してください。







-sony
-

執筆者: