Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Gleethos/neureka
A platform independent tensor library with autograd for the JVM
https://github.com/Gleethos/neureka
deep-neural-networks java library
Last synced: about 2 months ago
JSON representation
A platform independent tensor library with autograd for the JVM
- Host: GitHub
- URL: https://github.com/Gleethos/neureka
- Owner: Gleethos
- License: mit
- Created: 2019-09-11T21:44:34.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-02-21T17:51:41.000Z (4 months ago)
- Last Synced: 2024-05-02T01:01:47.503Z (about 2 months ago)
- Topics: deep-neural-networks, java, library
- Language: Java
- Homepage: https://gleethos.github.io/neureka/index.html
- Size: 472 MB
- Stars: 64
- Watchers: 4
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Lists
- awesome-java - Neureka - A lightweight, platform independent, OpenCL accelerated nd-array/tensor library. (Projects / Machine Learning)
README
NEUREKA
A lightweight
platform independent
tensor library for the JVMOpenCL accelerated nd-arrays / tensors for Java, Kotlin, Groovy, Scala, Jython, JRuby...
| Current Build | Code Coverage | Version | Code Quality | Licence | Size |
|:-------------:|:-------------:|:--------:|:------------:|:-------:|:----:|
| [![Build Status](https://circleci.com/gh/Gleethos/neureka.svg?branch=master&style=shield)](https://app.circleci.com/pipelines/github/Gleethos/neureka) | [![Codacy Badge](https://app.codacy.com/project/badge/Coverage/6bfd22ba9b8c410285b19e3d37f4fbc6)](https://www.codacy.com/gh/Gleethos/neureka/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Gleethos/neureka&utm_campaign=Badge_Coverage) | [![GitHub version](https://badge.fury.io/gh/Gleethos%2Fneureka.svg)](https://github.com/Gleethos/neureka) ![Java Version](https://img.shields.io/static/v1.svg?label=Java&message=8%2B&color=blue) | [![Codacy Badge](https://api.codacy.com/project/badge/Grade/6bfd22ba9b8c410285b19e3d37f4fbc6)](https://www.codacy.com/manual/Gleethos/neureka?utm_source=github.com&utm_medium=referral&utm_content=Gleethos/neureka&utm_campaign=Badge_Grade) | [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) |![Size](https://img.badgesize.io/Gleethos/neureka/master/production/lib/neureka-1.0.0.jar) |---
## :hammer_and_wrench: Features ##
- [tensors & nd-arrays](docs/markdown/tensors_or_nd-arrays.md)
- convolution
- broadcasting
- dynamic computation graph
- autograd
- flexible indexing and slicing
- seeding
- labeling
- jpg, png, idx support
- [highly extensible backend](docs/markdown/extending_neureka.md)### Take a quick look :eyes: ###
Impress me!
Show me more
Documentation
- [ANN in 11 Lines of Code!](docs/markdown/impressive.md)
- [Neureka with Java](docs/markdown/java_example.md) :coffee:
- [Neureka with Groovy](docs/markdown/groovy_example.md) :star:
- [living
documentation](https://gleethos.github.io/neureka/showcase.html)
- [Javadocs](https://gleethos.github.io/neureka/jdocs/index.html) :book:
---
## :robot: Tech ##
### Dynamic Autograd : Recording the Computation-Graph ###
Neureka trains your neural network using a computation graph recorder.
This is contrary to the approaches found in other frameworks such as TensorFlow, Theano, Caffe, and CNTK
which require the definition of a computation graph ahead of time.
This means a developer has to build a neural network structure which
cannot change during runtime.Neureka, uses the recorded computation graph in order to apply a technique called reverse-mode auto-differentiation,
which allows your network structure to change during runtime arbitrarily with zero lag or overhead.
This powerful feature has been inspired by PyTorch:
- [Motivation](docs/markdown/motivation.md) :fire:
### Main-Package Overview ###
| Package | Description |
| ---- | --- |
| [**neureka**](src/main/java/neureka/README.md) | the root package containing the tensor class and the following sub-packages |
| [**neureka.devices**](src/main/java/neureka/devices/README.md) | a sub-package which enables cross platform acceleration (`OpenCLDevice`) and tensor persistence (`FileDevice`) |
| [**neureka.math**](src/main/java/neureka/math/README.md) | a sub-package containing collections of functions and the ability to create custom ones |
| [**neureka.optimization**](src/main/java/neureka/optimization/README.md) | a sub-package for weight-gradient optimization |
| [**neureka.autograd**](src/main/java/neureka/autograd/README.md) | the guts of Neurekas autograd system |
| [**neureka.backend**](src/main/java/neureka/backend/README.md) | the backend containing both a consistent API and a standard implementation |
---
## Getting started with Apache Maven ##```
com.github.gleethos
neureka
1.0.0```
---## Getting started with Gradle ##
Groovy DSL:
```
implementation 'com.github.gleethos:neureka:1.0.0'
```
Kotlin DSL:
```
implementation("com.github.gleethos:neureka:1.0.0")
```
---## Getting started with [![](https://jitpack.io/v/Gleethos/neureka.svg)](https://jitpack.io/#Gleethos/neureka) ##
**1. Add the JitPack url in your root `build.gradle` at the end of `repositories`**
```
allprojects {
repositories {
//...
maven { url 'https://jitpack.io' }
}
}
```
**2. Add Neureka as dependency**...either by specifiying the version tag:
```
dependencies {
implementation 'com.github.Gleethos:neureka:v1.0.0'
}
```
...or by using a custom commit hash instead:
```
dependencies {
implementation 'com.github.Gleethos:neureka:8485bca'//Any commit hash...
}
```
---## Getting started with Groovy Grape ##
```
@GrabResolver(name = 'jitpack.io', root = 'https://jitpack.io')
@Grab('com.github.Gleethos:neureka:v1.0.0')import neureka.*
```- [Start scripting with just a few terminal commands!](docs/markdown/cookbook/neureka_in_groovy_scripts.md)
---
## :rocket: Building from source ##
Execute the following:
```sh
gradlew build
```Tests:
```sh
gradlew check
```Jar file:
```sh
gradlew jar
```Min-jar file:
```sh
gradlew proguard
```---
## :mount_fuji: Dependencies ##
- JOCL 2.+ - (OpenCL binding)
- SLF4J 1.7.+ - (Logging API allowing for custom backends)---
## :book: Documentation ###
- [Living Documentation](https://gleethos.github.io/neureka/showcase.html)
- [GitHub Wiki](https://github.com/Gleethos/neureka/wiki)
- [Java-Docs](https://gleethos.github.io/neureka/jdocs/index.html)---
## :microscope: Tests & Specs :scroll: ###
- BDD & living documentation with Spock!
- Yes! A browsable test suite. [Check it out!](https://gleethos.github.io/neureka/showcase.html)!---
## :seedling: Development [![Commit activity 1 year](https://img.shields.io/github/commit-activity/y/Gleethos/neureka.svg?style=flat)]() [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Gleethos/neureka/graphs/commit-activity) [![GitHub commits](https://img.shields.io/github/commits-since/Gleethos/neureka/v0.0.0.svg)](https://GitHub.com/Gleethos/neurka/commit/) ##
Want to contribute? Don't worry:
> **There is plenty of developer friendly highly readable [living documentation](https://gleethos.github.io/neureka/showcase.html)
> to go through which explains the inner and outer workings of this project very well!**If you want to dive right into it, start off by [extending the backend](docs/markdown/extending_neureka.md)
for additional types of operations or data type support.> Any feedback or contribution, even as simple as a typo fix, is always greatly appreciated!
---
## :memo: Todos - [![Issues](https://img.shields.io/github/issues-raw/Gleethos/neureka.svg?maxAge=25000)](https://github.com/Gleethos/neureka/issues) ##
- Make a wish! :)
---
## :balance_scale: License ##
- MIT -> **It's Free!** ...
[![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.png?v=103)](https://github.com/ellerbrock/open-source-badges/)---
[![Tweet](https://img.shields.io/twitter/url/https/github.com/Gleethos/neureka.svg?style=social)](https://twitter.com/intent/tweet?text=Check%20out%20Neureka!%20https://github.com/Gleethos/neureka)