问题标签 [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 投票
2 回答
1128 浏览

maven - 在 Intellij 项目中使用 Nd4j

我正在尝试在 Intellij IDEA 的 Kotlin 项目中使用 Nd4j。在 Project Structure -> Libraries 中,我使用“From Maven”命令添加以下库。

使用这些库,我可以编译我的项目,但是当我运行它时,它会因异常而失败。

查看项目文件夹,我看到 IDEA 已经为 nd4j-native-platform 下载了很多 jar 文件,但是没有任何 JNI 库的迹象。我还需要做什么?

0 投票
0 回答
257 浏览

performance - Word2Vec 上的 Deeplearning4J 速度较慢

我想用这个配置尝试 word2vec:

包含句子的文件大约 15GB,每行一个句子。

我怎样才能调整它以使其不那么慢?仅仅构建词汇就需要超过 24 小时。

这些是我要处理的文本文件中的一些行:

杰登阿本德 sieht sie den schatten am fenster

dann weht ein eisiger hauch ins zimmer

der unheimliche besucher laessst sich nicht abwehren

bei seinem anblick erstarrt die frau vor entsetzen

denn sie kann nicht begreifen dass ploetzlich der mann vor ihr steht den sie vor vielen jahren begraben hat

dem unheimlichen besucher eine falle zu stellen

0 投票
0 回答
276 浏览

java - DL4J 尝试使用 cpu 而不是 cuda

我一直在使用移动 gpu 在笔记本电脑上运行 DL4J 项目。它运行良好,检测到 gpu 并且我的模型得到了训练。但是切换到独立显卡的桌面后,同样的程序尝试使用cpu!两台机器都运行 ubuntu 18.04 并安装了 cuda 9.0。

当程序启动时,我从笔记本电脑得到这个输出:

信息:已加载 [JCublasBackend] 后端 2018 年 12 月 5 日凌晨 3:26:33 org.nd4j.nativeblas.NativeOpsHolder 信息:用于 NativeOps 的线程数:2018 年 12 月 5 日 32:26:33 org.nd4j.nativeblas。 Nd4jBlas 信息:用于 BLAS 的线程数:0 Dec 05, 2018 3:26:33 AM org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner printEnvironmentInformation INFO:后端使用:[CUDA];操作系统:[Linux] 2018 年 12 月 5 日上午 3:26:33 org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner printEnvironmentInformation INFO:核心:[8];内存:[3.4GB];2018 年 12 月 5 日凌晨 3:26:33 org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner printEnvironmentInformation INFO:Blas 供应商:[CUBLAS] 2018 年 12 月 5 日凌晨 3:26:33 org.nd4j.linalg.jcublas。 ops.executioner.CudaExecutioner printEnvironmentInformation INFO:设备名称:[GeForce GTX 960M];抄送:[5.0];

这来自桌面:

03:29:44.843 [main] INFO org.nd4j.linalg.factory.Nd4jBackend - 加载 [CpuBackend] 后端

由于我的依赖项包括 nd4j-cuda-9.0-platform 而不是 nd4j-native-platform,因此立即发生崩溃。

我很确定 cuda 在桌面上工作,我已经在上面运行了 tensorflow-gpu 程序,没有任何问题。

我使用 gradle,这是我的 build.gradle 的依赖项部分:

我可能在这里遗漏了一些基本的东西。任何帮助是极大的赞赏。

0 投票
1 回答
243 浏览

nd4j - nd4j 中的矩阵乘法广播

在 python 中,假设

我们有

有人可以帮助我在没有 for 循环的情况下在 java nd4j中实现等效操作吗?我试过broadcast.mul了,但结果broadcast.mul是元素乘法。我没有找到任何针对 mmul 的广播操作。

0 投票
1 回答
129 浏览

java - 使用 nd4j 的 Sigmoid 导数

我执行 sigmoid 效果很好,但 sigmoidDerivative 给出的结果与 nd4j 中的 sigmoid 相同。Transforms.sigmoidDerivative(x)和 和有什么不一样Transforms.sigmoidDerivative(x, true)

给出输出:

与 python 的 numpy 比较:

Nd4j pom:

0 投票
1 回答
133 浏览

java - ND4J 在 GPU 上运行缓慢,但在 CPU 上运行速度快

今天我将尝试在我的 ND4J 和 Deeplearnint4j 项目中使用 CUDA。之后,Neural Net(从 Keras 导入)开始工作得更快。但是接下来的代码开始慢慢工作

我已经尝试将 ND4J 后端更改为本机(CPU)并且我得到了快速的结果。

promlem 部分用注释突出显示(在 2 行中)

我想从这个列表中获得一些东西:

  1. 获得更快的结果并使用 GPU

  2. 关闭这部分代码的 GPU 并为 NN 保留它

0 投票
0 回答
85 浏览

java - 如何从头开始实现多维数组库,如 nd4j 或 numpy

我正在用java制作一个像nd4j这样的numpy等效库,但我想自己实现它。但是,我在网上找不到任何资源来帮助我的研究。我希望支持基本的 numpy 功能,如 randn 和 shape 和 dot product

我制作了一个准系统 Matrix 类,但已经遇到了问题。它使用泛型来定义矩阵,但我必须使用 Object 类来存储 n 维矩阵。

该库应该执行矩阵运算,例如 numpy syntas,例如

我会将 java 文件转换为 kotlin,因为 kotlin 支持运算符重载

0 投票
1 回答
269 浏览

scala - 从 Scala 中的任意数组数据中获取 Spark DataFrame 的最简单方法是什么?

这几天我一直在为这个问题头疼。感觉它应该很容易直观......真的希望有人能提供帮助!

我已经org.nd4j.linalg.api.ndarray.INDArray从一些半结构化数据中构建了一个单词出现,如下所示:

到目前为止,一切都很好...

在这一点的下游,我需要将数据集成到 Spark 中的现有管道中,并使用 pca 等的实现,所以我需要创建一个 DataFrame,或者至少是一个 RDD。如果我提前知道单词和/或窗口的数量,我可以执行以下操作:

但是窗口和单词的数量是在运行时确定的。我正在寻找一个 WindowsxWordsorg.apache.spark.sql.DataFrame作为输出,输入是一个 WindowsxWordsorg.nd4j.linalg.api.ndarray.INDArray

提前感谢您提供的任何帮助。

0 投票
1 回答
199 浏览

java - 使用 Datavec 变换滞后值

我试图弄清楚如何在 datavec 转换步骤中获取字段的滞后值。

这是一个基于 dl4j 示例的小示例:

我正在寻找一个滞后值(由 排序DateTimeStringTransactionAmountUSD

我正在查看文档中的 sequenceMovingWindowReduce但无法弄清楚。在示例存储库中也无法真正找到任何与此类似的 示例。

0 投票
1 回答
494 浏览

slice - ND4J 切片是否会复制原始数组?

ND4JINDArray切片是通过javaget()中回答的一种重载方法实现的- 获取 Nd4j 数组的任意切片 - 代码日志。作为INDArray一个连续的本机内存块,使用切片是否get()会复制原始内存(尤其是行切片,其中可以创建一个INDArray具有相同后备内存的新内存)?

我找到了另一种INDArray方法subArray()。这个有什么区别吗?

我问这个是因为我正在尝试创建一个DatasetIterator可以直接从INDArrays 中提取数据的程序,并且我想消除可能的开销。源代码中有太多抽象,我自己找不到实现。

在python - Numpy: views vs copy by slicing - Stack Overflow中提出了一个关于 NumPy 的类似问题,答案可以在Indexing - NumPy v1.16 Manual中找到:

这里的经验法则可以是:在左值索引的上下文中(即索引放置在赋值的左侧值中),不创建数组的视图或副本(因为没有必要)。但是,对于常规值,上述创建视图的规则确实适用。