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

Lists

README

        

NEUREKA

A lightweight
platform independent
tensor library for the JVM

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