← 开源
ivan-vasilev

neuralnetworks

java deep learning algorithms and deep neural networks with gpu acceleration

Model DevelopmentDeep Learning FrameworksJava
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
1.24k
Star
345
Fork
+0
本周
6
贡献者
创建于 2013-09-02 · 更新于 2026-07-27 · 今日第 11027 名
主要开发者
ivan-vasilevlinkerlinsaurabhsv

ivan-vasilev/neuralnetworks 排名第 11,027,有 1,236 个星标。

同类别比较

ivan-vasilev/neuralnetworks 排名第 11,027,此处有 8 个同类条目;facebookresearch/simsiam 排名第 11,026。

同类别比较
名称排名指标
openseg-group/openseg.pytorch11,020
语言:
Python
星标数:
1,237
分叉数:
141
简介:
The official Pytorch implementation of OCNet, OCRNet, and SegFix.
AGI-Edgerunners/LLM-Adapters11,022
语言:
Python
星标数:
1,236
分叉数:
117
简介:
Code for our EMNLP 2023 Paper: "LLM-Adapters: An Adapter Family for Parameter-Efficient Fine-Tuning of Large Language Models"
SciML/NeuralPDE.jl11,024
语言:
Julia
星标数:
1,236
分叉数:
252
简介:
Physics-Informed Neural Networks (PINN) Solvers of (Partial) Differential Equations for Scientific Machine Learning (SciML) accelerated simulation
facebookresearch/simsiam11,026
语言:
Python
星标数:
1,236
分叉数:
174
简介:
PyTorch implementation of SimSiam https//arxiv.org/abs/2011.10566
BR-IDL/PaddleViT11,029
语言:
Python
星标数:
1,235
分叉数:
328
简介:
:robot: PaddleViT: State-of-the-art Visual Transformer and MLP Models for PaddlePaddle 2.0+
jakesnell/prototypical-networks11,031
语言:
Python
星标数:
1,235
分叉数:
270
简介:
Code for the NeurIPS 2017 Paper "Prototypical Networks for Few-shot Learning"
jfzhang95/pytorch-video-recognition11,038
语言:
Python
星标数:
1,234
分叉数:
251
简介:
PyTorch implemented C3D, R3D, R2Plus1D models for video activity recognition.
python-adaptive/adaptive11,050
语言:
Python
星标数:
1,230
分叉数:
64
简介:
:chart_with_upwards_trend: Adaptive: parallel active learning of mathematical functions
关键参数与规格
关键参数与规格
参数值
语言Java
类别Model Development
子类别Deep Learning Frameworks
星标数1,236
分叉数345
贡献者6
创建日期2013-09-02
更新日期2026-07-27
1 天星标数0
7 天星标数0
排名11,027
上次排名10,984
排名变化-43
7 天星标排名12,857
上次 7 天星标排名12,876
7 天星标排名变化19
总星标排名9,468
上次总星标排名9,458
总星标排名变化-10
国家Bulgaria
README 摘录

Deep Neural Networks with GPU support **Update** _This is a newer version of the framework, that I developed while working at ExB Research. Currently, you can build the project, but some of the tests are not working. If you want to access the previous version it's available in the old branch. _ This is a Java implementation of some of the algorithms for training deep neural networks. GPU support is provided via the OpenCL and Aparapi. The architecture is designed with

modularity, extensibility and pluggability in mind. Git structure I'm using the git-flow model. The most stable (but older) sources are available in the _master_ branch, while the latest ones are in the _develop_ branch. **If you want to use the previous Java 7 compatible version you can check out this release. ** Neural network types Multilayer perceptron Convolutional networks with max pooling, average poolng and stochastic pooling. Restricted Boltzmann Machine Autoencoder Deep belief network Stacked autoencodeer Training algorithms Backpropagation - supports

multilayer perceptrons, convolutional networks and dropout. Contrastive divergence and persistent contrastive divergence implemented using these and these guidelines. Greedy layer-wise training for deep networks - works for stacked autoencoders and DBNs, but supports any kind of training. All the algorithms support GPU execution. Out of the box supported datasets are MNIST, CIFAR-10/CIFAR-100, IRIS and XOR, but you can easily implement your own. Experimental support of RGB image preprocessing operations - affine transformations, cropping, and color scaling (see Generaltest

. Activation functions Sigmoid Tanh ReLU LRN Softplus Softmax All the functions support GPU execution. They can be applied to all types of networks and all training algorithms. Depending on your environment you might need to download the relevant aparapi . so file (located in the root of each archive) from here and add it's location to the system PATH variable. (This)[ is a guide on how to set up OpenCL in linux environment. How to run the samples The samples are

organized as unit tests. If you want see examples on various popular datasets you can go to nn-samples/src/test/java/com/github/neuralnetworks/samples/. Library structure There are two projects: nn-core - contains the full implementation. nn-samples - contains implementations of popular datasets and nn-performance - some performance metrics. nn-userinterface - unfinished work on visual network representation. The software design is tiered, each tier depending on the previous ones. Network architecture This is the first "tier". Each network

is defined by a list of layers. Each layer has a set of connections that link it to the other layers of the network, making the network a directed acyclic graph. This structure can accommodate simple feedforwad nets, but also more complex architectures like You can build your own specific network. Data propagation This tier is propagating data through the network. It takes advantage of it's graph structure. There are two main base components: _LayerCalculator_ - propagates data through the graph

. It receives target layer and input data clamped to a given layer (considered an input layer). It ensures that the

常见问题

记录了多少星标和分叉?

ivan-vasilev/neuralnetworks 有 1,236 个星标和 345 个分叉。

仓库排名是多少?

ivan-vasilev/neuralnetworks 排名第 11,027。

记录的语言和类别是什么?

ivan-vasilev/neuralnetworks 有 1,236 个星标,语言为 Java,类别为 Model Development。

哪个仓库排名最接近?

ivan-vasilev/neuralnetworks 与 facebookresearch/simsiam 比较,后者排名第 11,026,有 1,236 个星标。

README

Deep Neural Networks with GPU support

Update This is a newer version of the framework, that I developed while working at ExB Research. Currently, you can build the project, but some of the tests are not working. If you want to access the previous version it's available in the old branch.

This is a Java implementation of some of the algorithms for training deep neural networks. GPU support is provided via the OpenCL and Aparapi. The architecture is designed with modularity, extensibility and pluggability in mind.

Git structure

I'm using the git-flow model. The most stable (but older) sources are available in the master branch, while the latest ones are in the develop branch.

If you want to use the previous Java 7 compatible version you can check out this release.

Neural network types

  • Multilayer perceptron
  • Convolutional networks with max pooling, average poolng and stochastic pooling.
  • Restricted Boltzmann Machine
  • Autoencoder
  • Deep belief network
  • Stacked autoencodeer

Training algorithms

  • Backpropagation - supports multilayer perceptrons, convolutional networks and dropout.
  • Contrastive divergence and persistent contrastive divergence implemented using these and these guidelines.
  • Greedy layer-wise training for deep networks - works for stacked autoencoders and DBNs, but supports any kind of training.

All the algorithms support GPU execution.

Out of the box supported datasets are MNIST, CIFAR-10/CIFAR-100, IRIS and XOR, but you can easily implement your own.

Experimental support of RGB image preprocessing operations - affine transformations, cropping, and color scaling (see Generaltest.java -> testImageInputProvider).

Activation functions

  • Sigmoid
  • Tanh
  • ReLU
  • LRN
  • Softplus
  • Softmax

All the functions support GPU execution. They can be applied to all types of networks and all training algorithms. You can also implement new activations.

How to build the library

  • Java 8.
  • To build the project you need maven.
  • Depending on your environment you might need to download the relevant aparapi .dll or .so file (located in the root of each archive) from here and add it's location to the system PATH variable. (This)[https://code.google.com/p/aparapi/wiki/DevelopersGuideLinux] is a guide on how to set up OpenCL in linux environment.

How to run the samples

The samples are organized as unit tests. If you want see examples on various popular datasets you can go to nn-samples/src/test/java/com/github/neuralnetworks/samples/.

Library structure

There are two projects:

  • nn-core - contains the full implementation.
  • nn-samples - contains implementations of popular datasets and
  • nn-performance - some performance metrics.
  • nn-userinterface - unfinished work on visual network representation.

The software design is tiered, each tier depending on the previous ones.

Network architecture

This is the first "tier". Each network is defined by a list of layers. Each layer has a set of connections that link it to the other layers of the network, making the network a directed acyclic graph. This structure can accommodate simple feedforwad nets, but also more complex architectures like http://www.cs.toronto.edu/~hinton/absps/imagenet.pdf. You can build your own specific network.

Data propagation

This tier is propagating data through the network. It takes advantage of it's graph structure. There are two main base components:

  • LayerCalculator - propagates data through the graph. It receives target layer and input data clamped to a given layer (considered an input layer). It ensures that the data is propagated through the layers in the correct order and that all the connections in the graph are calculated. For example, during the feedforward phase of backpropagation the training data is clamped to the input layer and is propagated to the target layer (the output layer of the network). In the bp phase the output error derivative is clamped as "input" to the layer and the weights are updated using breadth-first graph traversal starting from the output layer. Essentially the role of the LayerCalculator is to provide the order, in which the network layers are calculated.
  • ConnectionCalculator - base class for all neuron types (sigmoid, rectifiers, convolutional etc.). After the order of calculation of the layers is determined by the LayerCalculator, then the list of input connections for each layer is calculated by the ConnectionCalculator.

GPU

Most of the ConnectionCalculator implementations are optimized for GPU execution. There are two implementations - Native OpenCL and Aparapi. Aparapi imposes some important restrictions on the code that can be executed on the GPU. The most significant are:

  • only one-dimensional arrays (and variables) of primitive data types are allowed. It is not possible to use complex objects.
  • only member-methods of the Aparapi Kernel class itself are allowed to be called from the GPU executable code.

Therefore before each GPU calculation all the data is converted to one-dim arrays and primitive type variables. Because of this all Aparapi neuron types are using either AparapiWeightedSum (for fully connected layers and weighted sum input functions), AparapiSubsampling2D (for subsampling layers) or AparapiConv2D (for convolutional layers). Most of the data is represented as one-dimensional array by default (for example Matrix).

The native OpenCL implementation does not have these restrictions.

Training

All the trainers are using the Trainer base class. They are optimized to run on the GPU, but you can plug-in other implementations and new training algorithms. The training procedure has training and testing phases. Each Trainer receives parameters (for example learning rate, momentum, etc) via Properties (a HashMap). For the supported properties for each trainer please check the TrainerFactory class.

Input data

Input is provided to the neural network by the trainers via TrainingInputProvider interface. Each TrainingInputProvider provides training samples in the form of TrainingInputData (default implementation is TrainingInputDataImpl). The input can be modified by a list of modifiers - for example MeanInputFunction (for subtracting the mean value) and ScalingInputFunction (scaling within a range). Currently MnistInputProvider and IrisInputProvider are implemented.

Author

Ivan Vasilev (ivanvasilev [at] gmail (dot) com)

License

MIT License

排名相邻
同类项目