问题标签 [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.
java - 如何在数据集中存储 INDArray 的列表
对于强化学习,我创建了两个List<INDArray>
状态以及相应的移动预测和奖励值。我怎样才能将这两个List
s 变成一个org.nd4j.linalg.dataset.api.DataSet
java - 是否有 INDArray 的方法来执行两个 INDArray(具有不同大小)的相加?
想象两个 INDArray:
a1.shape() = [2, 3] 和 a1 满是 1;
a2.shape() = [1, 2] 并且 a2 是 2。
我想在它们之间进行添加,例如:
我尝试先选择一个子数组:
执行添加:
但我不知道如何将“子数组”插入到“a1”的好位置......
注意:为了解释,我简化了问题。正在处理的数组是 4D 数组。
java - 适用于 Android 的 DL4J 库中的 OpenBLAS 预设
我正在尝试在DL4J 库中运行OpenBLAS预设,但我遇到了问题SetNumThreads.allocate()
库实现build.gradle
:
和 multiDexEnabled true
。
当我在我的 android 应用程序中运行此方法时:
我收到此错误消息:
linux - 尝试分配内存映射的 INDArray 时出现内存不足错误
我正在尝试分配一个比 RAM 更大的大型内存映射二维数组,并且由于内存不足错误而不断失败。我正在使用 java8、linux-amd64 和 nd4j 1.0.0-beta4。根据文档(https://deeplearning4j.org/docs/latest/deeplearning4j-config-memory),我的理解是我应该能够分配一个比 RAM 大得多的数组,因为它将使用临时文件和然后依靠操作系统根据需要进行分页(例如使用 mmap)
更新 - 重新启动后我得到了一些间歇性的成功 - 我想知道大型阵列分配例程是否需要一些基本的 RAM 量?也许归零?我回来汇报...
我尝试了一些不同的策略选项,确保临时文件所在的磁盘有足够的空闲空间,并进行了一些调试以查看内存分配代码的内部情况,但无济于事。抱怨没有足够的物理内存似乎总是失败 - 这是正确的,没有足够的内存来做到这一点,这就是重点
这是输出到free
,
我运行 main 方法,但无法分配数组:
gpu - 以矢量方式计算期权收益(无循环)
大家好
我想用 Nd4J 为普通期权定价。
所以我希望用 Nd4J 实现操作
最大值(0,X[i]-K)=> Y[i]
X 输入 INDArray K 浮点数 Y 输出 INDArray
有人知道如何进行吗?
提前感谢您给我的时间
pandas - 如何在 ND4j 中读取 numpy 数组
我也有处理 n 维数组的组件。一个组件是用 python 编写的,它处理数据并将处理后的 ndarray 保存为tobytes()
. 现在另一个组件是用java编写的,需要读取第一个组件产生的序列化ndarray。
我很好奇是否有任何现有的 java 库可以读取序列化的 numpy 数组。或者有更好的方式在 java 和 python 之间通信 ndarray。
任何建议表示赞赏!
谢谢!
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 倍。
java - org.deeplearning4j.exception.DL4JInvalidInputException:使用要预测的数据创建数组时出现问题
当我运行以下代码时:
我收到错误:
我将数据创建为float[]
数组,长度 = 240。INDArray 的创建:
这是我的 keras 模型:
其中 PERIOD = 80,N_FEATURES = 3
如果我将形状设置为:
那么错误是:
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
已被执行。
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安装损坏还是什么?