问题标签 [nd4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
115 浏览

java - 如何在数据集中存储 INDArray 的列表

对于强化学习,我创建了两个List<INDArray>状态以及相应的移动预测和奖励值。我怎样才能将这两个Lists 变成一个org.nd4j.linalg.dataset.api.DataSet

0 投票
1 回答
227 浏览

java - 是否有 INDArray 的方法来执行两个 INDArray(具有不同大小)的相加?

想象两个 INDArray:

  • a1.shape() = [2, 3] 和 a1 满是 1;

  • a2.shape() = [1, 2] 并且 a2 是 2。

我想在它们之间进行添加,例如:

我尝试先选择一个子数组:

执行添加:

但我不知道如何将“子数组”插入到“a1”的好位置......

注意:为了解释,我简化了问题。正在处理的数组是 4D 数组。

0 投票
0 回答
206 浏览

java - 适用于 Android 的 DL4J 库中的 OpenBLAS 预设

我正在尝试在DL4J 库中运行OpenBLAS预设,但我遇到了问题SetNumThreads.allocate()

库实现build.gradle

multiDexEnabled true

当我在我的 android 应用程序中运行此方法时:

我收到此错误消息:

0 投票
1 回答
523 浏览

linux - 尝试分配内存映射的 INDArray 时出现内存不足错误

我正在尝试分配一个比 RAM 更大的大型内存映射二维数组,并且由于内存不足错误而不断失败。我正在使用 java8、linux-amd64 和 nd4j 1.0.0-beta4。根据文档(https://deeplearning4j.org/docs/latest/deeplearning4j-config-memory),我的理解是我应该能够分配一个比 RAM 大得多的数组,因为它将使用临时文件和然后依靠操作系统根据需要进行分页(例如使用 mmap)

更新 - 重新启动后我得到了一些间歇性的成功 - 我想知道大型阵列分配例程是否需要一些基本的 RAM 量?也许归零?我回来汇报...

我尝试了一些不同的策略选项,确保临时文件所在的磁盘有足够的空闲空间,并进行了一些调试以查看内存分配代码的内部情况,但无济于事。抱怨没有足够的物理内存似乎总是失败 - 这是正确的,没有足够的内存来做到这一点,这就是重点

这是输出到free,

我运行 main 方法,但无法分配数组:

0 投票
1 回答
25 浏览

gpu - 以矢量方式计算期权收益(无循环)

大家好

我想用 Nd4J 为普通期权定价。

所以我希望用 Nd4J 实现操作

最大值(0,X[i]-K)=> Y[i]

X 输入 INDArray K 浮点数 Y 输出 INDArray

有人知道如何进行吗?

提前感谢您给我的时间

0 投票
2 回答
822 浏览

pandas - 如何在 ND4j 中读取 numpy 数组

我也有处理 n 维数组的组件。一个组件是用 python 编写的,它处理数据并将处理后的 ndarray 保存为tobytes(). 现在另一个组件是用java编写的,需要读取第一个组件产生的序列化ndarray。

我很好奇是否有任何现有的 java 库可以读取序列化的 numpy 数组。或者有更好的方式在 java 和 python 之间通信 ndarray。

任何建议表示赞赏!

谢谢!

0 投票
1 回答
457 浏览

java - 如何从 ND4j 中的 NDArray 中选择给定的一组索引,类似于 numpy 的 arraydata[arrayIndex]?

我正在使用 ND4j(目前版本 1.0.0-beta5)开发一个严重依赖于 Java 数组操作的科学应用程序。在我的整个管道中,我需要动态选择 [2,195102] 矩阵的非连续子集(更准确地说是几十/几百列)。知道如何在这个框架中实现这一点吗?

简而言之,我正在尝试实现这个 python/numpy 操作:

到目前为止,我设法使用NDArray.getColumns函数选择了所需的列(以及 indexArray 中的 NDArray.data().asInt() 以提供索引的值)。问题是文档明确指出,关于在计算期间检索信息,“请注意,这不应该用于速度”(请参阅​​ NDArray.ToIntMatrix()的文档以查看完整消息 - 不同的方法,相同的操作)。

我查看了NDArray.get()的不同原型,似乎没有一个符合要求。我想NDArray.getWhere()可能会起作用——如果它,正如我所假设的那样,只返回满足条件的元素——但到目前为止,它没有成功使用它。在解释所需的参数/用法时,文档相对较少。

谢谢大家的时间和帮助:)

编辑(2019 年 4 月 11 日):关于我尝试过的一些精确度。我玩弄了 NDArray.get() 并使用了索引:

在不知道我正在运行什么机器的情况下,这些速度似乎还不错,但是等效的 python 代码会产生:

  • 选择 2 列(arrayIndex = {1, 5}),==> 171 毫秒,100000 次迭代
  • 选择了 3 列(arrayIndex = {1, 5, 6}),==> 173 毫秒,100000 次迭代
  • 选择了 4 列(arrayIndex = {1, 5, 6 ,2}),==> 173 毫秒,100000 次迭代

这些 java 实现最多比 python-numpy 慢 20 倍。

0 投票
1 回答
215 浏览

java - org.deeplearning4j.exception.DL4JInvalidInputException:使用要预测的数据创建数组时出现问题

当我运行以下代码时:

我收到错误:

我将数据创建为float[]数组,长度 = 240。INDArray 的创建:

这是我的 keras 模型:

其中 PERIOD = 80,N_FEATURES = 3

如果我将形状设置为:

那么错误是:

0 投票
1 回答
293 浏览

macos - 即使有 dylib 符号也无法读取

运行我的 java 程序时出现此错误。(在intellij ide上。)

dyld:惰性符号绑定失败:找不到符号:___emutls_get_address 引用自:/Users/xxx/.javacpp/cache/nd4j-native-1.0.0-beta5-macosx-x86_64.jar/org/nd4j/nativeblas/macosx-x86_64 /libnd4jcpu.dylib 预期在:/usr/lib/libSystem.B.dylib

dyld:找不到符号:___emutls_get_address 引用自:/Users/xxx/.javacpp/cache/nd4j-native-1.0.0-beta5-macosx-x86_64.jar/org/nd4j/nativeblas/macosx-x86_64/libnd4jcpu.dylib 预期在:/usr/lib/libSystem.B.dylib

我检查了/usr/lib/路径但libSystem.B.dylib存在。

你有解决方案吗?

后记 我能够在同一台 Mac 上运行相同版本的 DL4J (ND4J)。但是,在更新了mac和xcode之后,这个错误很快就出来了。

xcode-select --install已被执行。

0 投票
2 回答
586 浏览

java - 尝试使用 Cuda 运行 Nd4j 时出错

我已经关注了我能找到的每一个教程,但不知何故,我似乎无法让 Nd4j 与 Cuda 后端一起工作。我想我缺少一个库,但我不知道是哪一个或在哪里下载它。

我得到的错误是:

我正在使用 Nd4j,并且(在一大堆其他人中)我的类路径上有以下 jar:

Cuda 10.0 安装成功:

我试图将 Java 指向 Cuda bin 目录,如下所示:

但这没有什么区别。此外,我在 nd4j-cuda-10.0-platform-1.0.0-beta3.jar 和 cuda-platform-10.0-7.3-1.4.3.jar 中的 pom.xml 上尝试了 mvn 命令,结果可以下载很多罐子,但似乎没有一个包含我缺少的 dll。

在四处搜索时,我发现其他用户在谈论像“cuda-10.0-7.3-1.4.3-windows-x86_64.jar”这样应该包含 jnicudart.dll 的 jar,但我在任何地方都找不到这样的 jar。我在这里想念什么?

--UPDATE-- 我已将所有内容更新到 beta5,并找到了一个包含丢失的 jnicudart.dll 的 cuda jar,但我仍然遇到相同的错误。我使用 Dependencies 来检查出了什么问题,结果如下: 在此处输入图像描述

它说 NVidia cudart64_100.dll 的校验和不正确。这是否与 NVidia Cuda10 不支持我的 Geforce GT 730 相关,因为它是 Fermi 架构?或者是cuda安装损坏还是什么?