ND4J is an Apache 2.0-licensed scientific computing library for the JVM. By contributing code to this repository, you agree to make your contribution available under an Apache 2.0 license.
It is meant to be used in production environments rather than as a research tool, which means routines are designed to run fast with minimum RAM requirements.
Please search for the latest version on search.maven.org.
Or use the versions displayed in: https://github.com/deeplearning4j/dl4j-0.4-examples/blob/master/pom.xml
- Versatile n-dimensional array object
- Multiplatform functionality including GPUs
- Linear algebra and signal processing functions
Specifics
- Supports GPUs via with the CUDA backend nd4j-cuda-7.5 and Native via nd4j-native.
- All of this is wrapped in a unifying interface.
- The API mimics the semantics of Numpy, Matlab and scikit-learn.
Several of these modules are different backend options for ND4J (including GPUs).
- api = core
- instrumentation
- jdbc = Java Database Connectivity
- jocl-parent = Java bindings for OpenCL
- scala-api = API for Scala users
- scala-notebook = Integration with Scala Notebook
It is possible to build the project without the native bindings. This can be done by specic targeting of the project to build.
mvn clean package test -pl :nd4j-api
Documentation is available at nd4j.org. Access the JavaDocs for more detail.
To install ND4J, there are a couple of approaches, and more information can be found on the ND4J website.
- Search for nd4j in the Maven Central Repository to find the available nd4j jars.
- Include the appropriate dependency in your pom.xml.
ND4J is actively developed. You can clone the repository, compile it, and reference it in your project.
Clone the repository:
$ git clone https://github.com/deeplearning4j/nd4j.git
Compile the project:
$ cd nd4j
$ mvn clean install -DskipTests=true -Dmaven.javadoc.skip=true
Add the local compiled file dependency (choose the module for your backend) to your pom.xml file:
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-native</artifactId>
<version>${nd4j.version}</version>
</dependency>
Create a yum repo and run yum install to load the Red Hat Package Management (RPM) files. First create the repo file to setup the configuration locally.
$ sudo vi /etc/yum.repos.d/dl4j.repo
Add the following to the dl4j.repo file:
'''
[dl4j.repo]
name=dl4j-repo
baseurl=http://ec2-52-5-255-24.compute-1.amazonaws.com/repo/RPMS
enabled=1
gpgcheck=0
'''
Then run the following command on the dl4j repo packages to install them on your machine:
$ sudo yum install [package name] -y
$ sudo yum install nd4j-cli -y # for example
Note, be sure to install the nd4j modules you need first, especially the backend and then install DataVec & dl4j.
Run the following command to execute all tests at once.
mvn test
Or, run the following command to execute TestSuite with only specified backend e.g. nd4j-cuda-7.5 on GPU.
mvn test -pl nd4j-XXX
- nd4j-cuda-7.5
- nd4j-native
Or, run the following command to execute only specified tests in TestSuite with only specified backend.
mvn test -pl nd4j-XXX -Dorg.nd4j.linalg.tests.classestorun=org.nd4j.linalg.YYY -Dorg.nd4j.linalg.tests.methods=ZZZ
-
Check for open issues, or open a new issue to start a discussion around a feature idea or a bug.
-
If you feel uncomfortable or uncertain about an issue or your changes, feel free to contact us on Gitter using the link above.
-
Fork the repository on GitHub to start making your changes to the master branch (or branch off of it).
-
Write a test, which shows that the bug was fixed or that the feature works as expected.
-
Note the repository follows the Google Java style with two modifications: 120-char column wrap and 4-spaces indentation. You can format your code to this format by typing
mvn formatter:format
in the subproject you work on, by using thecontrib/formatter.xml
at the root of the repository to configure the Eclipse formatter, or by using the INtellij plugin. -
Send a pull request, and bug us on Gitter until it gets merged and published.