问题标签 [dl4j]
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 - DeepLearning4j 抛出“英特尔 MKL 致命错误:无法加载 mkl_intel_thread.dll。” 错误
最近我开始学习 DeepLearning4j 库,所以我克隆了一个 dl4j 项目并在 eclipse 中执行。
执行后,显示如下错误:
我检查了我的 Windows 路径变量,但找不到任何名为 MKL 的变量。
以下是我在 pom.xml 中使用的依赖项:
machine-learning - 如何使用 deeplearning4j 将混合类型输入连接到多层网络?
我有一个数据集,其中一些特征是数字的,一些是分类的,还有一些是字符串的(例如描述)。举个例子,假设我有三个特征:
我可以将它们全部作为 dl4j 中多层网络的输入,其中数值和分类将是常规输入特征,但字符串注释特征将首先由简单的 RNN 处理为单词系列(例如嵌入 - > LSTM) ? 换句话说,架构应该是这样的:
我认为在 Keras 中,这可以通过 Concatenate 层来实现。DL4J 中有这样的东西吗?
deeplearning4j - 有什么方法可以在 DL4J 训练期间打印每一行的输入和输出数据?
我的模型的分数下降得太快了。对于一个巨大的数据集,它在第一个 epoch 完成之前从 > 5 下降到 0。
我怀疑我可能以某种方式错误地配置了它,也许每批都包含相同的数据。
有没有办法在训练期间打印出每一行的输入和输出,以便我可以测试这个理论?
machine-learning - F1 分数不是精度和召回率的调和平均值的原因可能是什么
[![在此处输入图像描述][1]][1]F1 分数不是精度和召回率调和平均值的原因是什么?我的数据集不平衡,预测有偏差。
dl4j - 如何使用现有的 DL4J 训练模型对新输入进行分类
我有一个 DL4J LSTM 模型,可以生成顺序输入的二进制分类。我已经对模型进行了训练和测试,并对精度/召回率感到满意。现在我想用这个模型来预测新输入的二元分类。我该怎么做呢?即我如何给训练好的神经网络一个输入(包含特征行序列的文件)并得到这个输入文件的二进制分类。
这是我原来的训练数据集迭代器:
这是我的模型:
我在 N 个时期训练模型以获得我的最佳分数。我保存了模型,现在我想打开模型并获取新的顺序特征文件的分类。
如果有这样的例子 - 请让我知道在哪里。
谢谢
安东
keras - 在DL4J模型中转换keras模型
我必须在 java 中保存和加载一个 keras 模型,然后我想我可以使用 DL4J。问题是当我保存我的模型时,它没有带有他自己权重的嵌入层。我在 keras 中重新加载模型时遇到了同样的问题,但在这种情况下,我可以创建相同的架构并仅加载模型的重量。
特别是我从这样的架构开始:
保存并加载后,我得到了这个(在 keras 和 DL4J 中):
在java中有解决方案或解决方法吗?1)是否可以正确保存和加载keras中的结构和重量?
2) 是否可以使用 DL4J 或其他库在 java 中创建这种类型的模型?
3)是否可以在函数中实现转换词到嵌入,然后将先前在嵌入中转换的输入提供给神经网络?
4) 我可以使用 DL4J 在 java 的嵌入层中加载权重吗?
这是我的网络的代码:
提前致谢。
java - Deeplearning4j 错误:java.library.path 中没有 jniopenblas
这个周末我第一次开始使用 Deeplearning4j。我查看了https://deeplearning4j.org/docs/latest/deeplearning4j-quickstart的页面,看到了“没有 Maven 的 Eclipse 设置”的选项。由于我习惯使用 Eclipse 并且以前从未听说过 Maven,因此我决定按照这些说明进行操作。
设置完成后,我在 YouTube 上找到了一个教程,但是当我运行该项目时,我收到此错误:
java - Seq2Seq 模型 (DL4J) 做出荒谬的预测
我正在尝试在 DL4J 中实现 Seq2Seq 预测器模型。我最终想要的是使用数据点的时间序列来使用这种类型的模型INPUT_SIZE
来预测以下数据点的时间序列。OUTPUT_SIZE
每个数据点都有numFeatures
特征。现在,DL4J 有一些示例代码来解释如何实现一个非常基本的 Seq2Seq 模型。我在将他们的例子扩展到我自己的需要方面取得了一些进展;下面的模型可以编译,但它所做的预测是荒谬的。
我构建输入/标记数据的方式是将输入数据拆分为第一个INPUT_SIZE - 1
时间序列观察(对应in_data
于 ComputationGraph 中的输入)和最后一个时间序列观察(对应于lastIn
输入)。标签是未来的一个时间步长;为了做出预测,我只需调用net.output()
OUTPUT_SIZE
时间来获得我想要的所有预测。为了更好地看到这一点,这就是我初始化输入/标签的方式:
我相信我的错误来自我的计算图架构中的错误,而不是我如何准备数据/进行预测/其他东西,因为我已经完成了其他具有更简单架构的小型项目并且没有任何问题。
我的数据被归一化为均值 0 和标准值。偏差为 1。因此,大多数条目应该在 0 左右,但是,我得到的大多数预测都是绝对值远大于零的值(大约 10s-100s)。这显然是不正确的。我已经为此工作了一段时间,但一直无法找到问题;任何有关如何解决此问题的建议将不胜感激。
我使用的其他资源:示例 Seq2Seq 模型可以在这里找到,从第 88 行开始。计算图文档可以在这里找到;我已经广泛阅读了这篇文章,看看我是否能找到一个无济于事的错误。
slice - ND4J 切片是否会复制原始数组?
ND4JINDArray
切片是通过javaget()
中回答的一种重载方法实现的- 获取 Nd4j 数组的任意切片 - 代码日志。作为INDArray
一个连续的本机内存块,使用切片是否get()
会复制原始内存(尤其是行切片,其中可以创建一个INDArray
具有相同后备内存的新内存)?
我找到了另一种INDArray
方法subArray()
。这个有什么区别吗?
我问这个是因为我正在尝试创建一个DatasetIterator
可以直接从INDArray
s 中提取数据的程序,并且我想消除可能的开销。源代码中有太多抽象,我自己找不到实现。
在python - Numpy: views vs copy by slicing - Stack Overflow中提出了一个关于 NumPy 的类似问题,答案可以在Indexing - NumPy v1.16 Manual中找到:
这里的经验法则可以是:在左值索引的上下文中(即索引放置在赋值的左侧值中),不创建数组的视图或副本(因为没有必要)。但是,对于常规值,上述创建视图的规则确实适用。