ND4J¶
概要¶
N-Dimensional Arrays for Java(ND4J)は、N次元配列を扱うオープンソースの科学計算ライブラリで、PythonのNumPyを参考に作られています。開発元は、Skymind社です。ネイティブライブラリを含み、また、GPGPUを用いて計算することができます。Githubでホストされています。
入手と設定¶
ND4Jの公式サイト から、Get Startedのリンクをたどるとインストールの説明が参照できます。maven前提の説明となっています。
CPUで実行する用とGPUで実行する用とで指定するライブラリ名が変わります。
- CPUで実行する場合、nd4j-native-platform を指定します。
maven¶
nd4j-native-platform¶
<properties>
<nd4j.version>0.7.2</nd4j.version>
</properties>
:
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-native-platform</artifactId>
<version>${nd4j.version}</version>
</dependency>
Ant¶
Antで使用するためのライブラリ入手¶
mavenリポジトリから、nd4j-native-platform-0.7.2.jar をダウンロードしてみたところ、jarファイルの中には、pom.xmlだけが含まれ、Javaのコードは含まれていませんでした。このpomを紐解くと、nd4j-nativeに依存しているようです。
次にmavenリポジトリから、nd4j-native-0.7.2.jar をダウンロードしてみました。jarファイルの中には、classファイルとpom.xmlも含まれています。このpom.xmlはかなり複雑で依存関係が紐解き難いので、jdepsコマンドでnd4j-native-0.7.2.jarを検査してみました。
jdepsコマンドの実行結果 表示
いったん、mavenで依存するライブラリをダウンロードさせることとします。
次のダミーのpomファイルを記述します。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://mave.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>0.1</version>
<dependencies>
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-native</artifactId>
<version>0.7.2</version>
</dependency>
</dependencies>
</project>
依存関係のartifactを指定のディレクトリにダウンロードさせます。
work$ mvn dependency:copy-dependencies -DoutputDirectory=lib : work$ ls lib annotations-2.0.1.jar nd4j-native-0.7.2.jar commons-io-2.4.jar nd4j-native-0.7.2-windows-x86_64.jar commons-lang3-3.3.1.jar nd4j-native-api-0.7.2.jar commons-math3-3.4.1.jar openblas-0.2.19-1.3.jar guava-18.0.jar openblas-0.2.19-1.3-android-arm.jar jackson-0.7.2.jar openblas-0.2.19-1.3-android-x86.jar javacpp-1.3.1.jar openblas-0.2.19-1.3-linux-ppc64le.jar javassist-3.19.0-GA.jar openblas-0.2.19-1.3-linux-x86_64.jar joda-time-2.2.jar openblas-0.2.19-1.3-macosx-x86_64.jar lombok-1.16.10.jar openblas-0.2.19-1.3-windows-x86_64.jar nd4j-api-0.7.2.jar reflections-0.9.10.jar nd4j-buffer-0.7.2.jar slf4j-api-1.7.10.jar nd4j-common-0.7.2.jar snakeyaml-1.12.jar nd4j-context-0.7.2.jar stax2-api-3.1.4.jar
gradle¶
mavenリポジトリを利用し、nd4j-native-platformを依存関係に指定します。
repositories {
mavenCentral()
}
dependencies {
compile 'org.nd4j:nd4j-native-platform:0.7.2'
}
最初、ND4Jの公式ドキュメント にある次の記述をしたところ、エラーとなってしまいました。
repositories {
mavenCentral()
}
dependencies {
compile 'org.nd4j:nd4j-native-platform:'
}
エラーメッセージ
* What went wrong:
Could not resolve all dependencies for configuration ':compileClasspath'.
> Could not find org.nd4j:nd4j-native-platform:.
Searched in the following locations:
https://repo1.maven.org/maven2/org/nd4j/nd4j-native-platform//nd4j-native-platform-.pom
https://repo1.maven.org/maven2/org/nd4j/nd4j-native-platform//nd4j-native-platform-.jar
Required by:
project :
バージョン番号を省略することはできないようです。