← Open Source
sony

nnabla

Neural Network Libraries.

Model DevelopmentDeep Learning FrameworksPython
Open on GitHub
Momentum
+-1stars in 24 hours-0.0%
2.77k
Stars
330
Forks
+-1
This week
59
Contributors
Created 2017-06-26 · Updated 2026-10-15 · #18661 today
Top developers

sony/nnabla is ranked 18,661 with 2,773 stars.

Same-category comparison

sony/nnabla is ranked 18,661 among these 8 peers; taichi-dev/difftaichi is ranked 18,662.

Same-category comparison
NameRankMetrics
keras-team/keras-tuner18,642
Language:
Python
Stars:
2,922
Forks:
405
Description:
A Hyperparameter Tuning Library for Keras.
kzl/decision-transformer18,654
Language:
Python
Stars:
2,841
Forks:
517
Description:
Official codebase for Decision Transformer: Reinforcement Learning via Sequence Modeling.
scikit-optimize/scikit-optimize18,656
Language:
Python
Stars:
2,829
Forks:
555
Description:
Sequential model-based optimization with a `scipy.optimize` interface.
roytseng-tw/Detectron.pytorch18,659
Language:
Python
Stars:
2,807
Forks:
528
Description:
A pytorch implementation of Detectron. Both training from scratch and inferring directly from pretrained Detectron weights are available.
taichi-dev/difftaichi18,662
Stars:
2,756
Forks:
267
Description:
10 differentiable physical simulators built with Taichi differentiable programming (DiffTaichi, ICLR 2020).
mars-project/mars18,666
Language:
Python
Stars:
2,744
Forks:
325
Description:
Mars is a tensor-based unified framework for large-scale data computation which scales numpy, pandas, scikit-learn and Python functions.
microsoft/DMTK18,668
Stars:
2,736
Forks:
552
Description:
Microsoft Distributed Machine Learning Toolkit.
allanzelener/YAD2K18,669
Language:
Python
Stars:
2,728
Forks:
877
Description:
YAD2K: Yet Another Darknet 2 Keras.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguagePython
CategoryModel Development
SubcategoryDeep Learning Frameworks
Stars2,773
Forks330
Contributors59
Created date2017-06-26
Updated date2026-10-15
Stars in 1 day-1
Stars in 7 days-1
Rank18,661
Previous rank8,432
Rank change-10,229
7-day stars rank16,857
Previous 7-day stars rank12,019
7-day stars rank change-4,838
Total stars rank4,871
Previous total stars rank4,862
Total stars rank change-9
CountryJapan
README summary

This project has reached end of life on [April 3, 2025]. No further development or security support is provided. 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. Neural Network Libraries - CUDA extension: An extension library of Neural Network Libraries that allows users to speed-up the computation on CUDA-capable

GPUs. Neural Network Libraries - Examples: Working examples of Neural Network Libraries from basic to state-of-the-art. Neural Network Libraries - C Runtime: Runtime library for inference Neural Network created by Neural Network Libraries. Neural Network Libraries - NAS: Hardware-aware Neural Architecture Search (NAS) for Neural Network Libraries. Neural Network Libraries - RL: Deep Reinforcement Learning (RL) library built on top of Neural Network Libraries. Neural Network Console: A Windows GUI app for neural network development. Installation Installing Neural Network Libraries

is easy: This installs the CPU version of Neural Network Libraries. GPU-acceleration can be added by installing the CUDA extension with following command. The other supported CUDA packages are listed here. For more details, see the installation section of the documentation. Running on Docker For details on running on Docker, see the installation section of the documentation. Features Easy, flexible and expressive The Python API built on the Neural Network Libraries C++11 core gives you flexibility and productivity

. For example, a two layer neural network with classification loss can be defined in the following 5 lines of codes (hyper parameters are enclosed by ). Training can be done by: The dynamic computation graph enables flexible runtime network construction. Neural Network Libraries can use both paradigms of static and dynamic graphs, both using the same API. You can differentiate to any order with nn. Command line utility Neural Network Libraries provides a command line utility for easier use of NNL

. Training, Evaluation or Inference with NNP file. File format converter From ONNX to NNP and NNP to ONNX. From TensorFlow to NNP and NNP to TensorFlow. 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++14, deployable to embedded devices Extensible Easy to add new modules like neural network operators and optimizers

The library allows developers to add specialized implementations (e. 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 Memory optimization engine Multiple GPU support Documentation Getting started A number of Jupyter notebook tutorials can be found in the tutorial folder. We recommend starting from for a first working example in Neural Network Libraries and for an introduction into the Neural Network Libraries API. We

also provide some more sophisticated examples at repository. Contribution guide The technology is rapidly progressing, and researchers and developers often

Frequently asked questions

How many stars and forks are recorded?

sony/nnabla has 2,773 stars and 330 forks.

What is the repository rank?

sony/nnabla is ranked 18,661.

What language and category are recorded?

sony/nnabla has 2,773 stars, uses Python and belongs to Model Development.

Which repository is closest in rank?

sony/nnabla is compared with taichi-dev/difftaichi, ranked 18,662 with 2,756 stars.

README

This project has reached end of life on [April 3, 2025]. No further development or security support is provided.

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.

Installation

Installing Neural Network Libraries is easy:

pip install nnabla

This installs the CPU version of Neural Network Libraries. GPU-acceleration can be added by installing the CUDA extension with following command.

pip install nnabla-ext-cuda116

Above command is for version 11.6 CUDA Toolkit.

The other supported CUDA packages are listed here.

CUDA ver.10.x, ver.9.x, ver.8.x are not supported now.

For more details, see the installation section of the documentation.

Building from Source

See Build Manuals.

Running on Docker

For details on running on Docker, see the installation section of the documentation.

Features

Easy, flexible and expressive

The Python API built on the Neural Network Libraries C++11 core gives you flexibility and productivity. For example, a two layer neural network with classification loss can be defined in the following 5 lines of codes (hyper parameters are enclosed by <>).

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

x = nn.Variable()
t = nn.Variable()
h = F.tanh(PF.affine(x, , name='affine1'))
y = PF.affine(h, , 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.set_parameters(nn.get_parameters())

# Training iteration
for n in range():
    # Setting data from any data source
    x.d = 
    t.d = 
    # Initialize gradients
    solver.zero_grad()
    # Forward and backward execution
    loss.forward()
    loss.backward()
    # Update parameters by computed gradients
    solver.update()

The dynamic computation graph enables flexible runtime network construction. Neural Network Libraries can use both paradigms of static and dynamic graphs, both using the same API.

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

You can differentiate to any order with nn.grad.

import nnabla as nn
import nnabla.functions as F
import numpy as np

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()

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 Inference with NNP file.
  • Dataset and Parameter manipulation.
  • File format converter
    • From ONNX to NNP and NNP to ONNX.
    • From TensorFlow to NNP and NNP to TensorFlow.
    • From NNP to TFLite.
    • 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++14, deployable to embedded devices

Extensible

  • Easy to add new modules like neural network operators and optimizers
  • The library allows developers to add specialized implementations (e.g., for 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
  • Memory optimization engine
  • Multiple GPU support

Documentation

Getting started

  • A number of Jupyter notebook tutorials can be found in the tutorial folder. We recommend starting from by_examples.ipynb for a first working example in Neural Network Libraries and python_api.ipynb for an introduction into the Neural Network Libraries API.

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

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

Contribution guide

The technology is rapidly progressing, and researchers and developers often want to add their custom features to a deep learning framework. NNabla is really nice in this point. 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. See the following link for details.

License & Notice

Neural Network Libraries is provided under the Apache License Version 2.0 license.

It also depends on some open source software packages. For more information, see LICENSES.

Citation

@misc{hayakawa2021neural,
      title={Neural Network Libraries: A Deep Learning Framework Designed from Engineers' Perspectives}, 
      author={Takuya Narihira and Javier Alonsogarcia and Fabien Cardinaux and Akio Hayakawa
              and Masato Ishii and Kazunori Iwaki and Thomas Kemp and Yoshiyuki Kobayashi
              and Lukas Mauch and Akira Nakamura and Yukio Obuchi and Andrew Shin and Kenji Suzuki
              and Stephen Tiedmann and Stefan Uhlich and Takuya Yashima and Kazuki Yoshiyama},
      year={2021},
      eprint={2102.06725},
      archivePrefix={arXiv},
      primaryClass={cs.LG}
}
Nearby in the ranking
Similar items