问题标签 [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.

0 投票
1 回答
87 浏览

java - 将 ComputationGraph 放在 JAR DL4j 的资源目录中

在正常情况下,我可以将 ComputationGraph(卷积神经网络)保存到文件中并在以后的运行中加载它,它工作正常。

但是,当我将它包含在一个 jar 中并尝试加载它时,它会失败。

有没有办法从 Jar 内部加载 ComputationGraph 对象作为资源?

我让它适用于 Word2Vec 对象,但它在 ComputationGraph 对象上失败。

谢谢

0 投票
0 回答
350 浏览

sbt - 在 Scala 中使用 DL4J 并没有找到后端

我正在为 dl4j 编写一个简单的 scala 项目。我需要在 cuda(用于培训)和 native 之间切换以进行生产。我似乎在组装的 jar 中使用 native 时遇到问题。我收到以下错误:

我的构建文件是:

当我访问http://nd4j.org/getstarted.html了解noAvailableBackendException我看到 build.sbt 应该有以下行:

classpathTypes += "maven-plugin"

我已经将它包含在上面的 build.sbt 中并且没有任何运气。在查看了 gradle 说明后,我尝试添加"org.bytedeco.javacpp-presets" % "openblas" % "0.2.20-1.3" classifier "linux-x86_64"依赖项,但这也没有帮助。

我试过多次删除~/.javacpp/cache~/.ivy2/cache但没有任何运气。此示例的存储库位于https://github.com/tomlue/dl4j_scala_troubleshoot

0 投票
2 回答
1789 浏览

java - Android:ZipFile() java.util.zip.ZipException:文件太短而不能成为 zip 文件:0

我正在开发一个项目(使用 Android Studio 3.1.4),该项目读取存储为 .zip 文件的神经网络,以便在 Android 中进一步与 DL4J 一起使用。

我正在尝试打开位于我的项目 res\raw 目录中的这个 .zip 文件。为此,我尝试使用 java.util.zip 中的 ZipFile() 方法。

神经网络.zip的位置截图

问题:

以下代码引发异常:

例外:

“java.util.zip.ZipException:文件太短而不能成为 zip 文件:0”

因此我无法加载模型。在运行 Android API 24 的模拟设备上进行测试

在 API 26 上,例外情况有所不同:

java.io.FileNotFoundException:文件不存在:android.content.res.AssetManager$AssetInputStream@ddde727

有人有使用 ZipFile() 或在 Android 中使用 DL4J 加载神经网络模型的经验吗?

build.gradle 中是否需要一些特殊的东西?

任何输入表示赞赏!

我试过的:

  • 检查 .zip 文件确保它存在。
  • 确保 .zip 只是一个容器,并且文件没有被压缩,方法是使用 7Zip 将包含 3 个文件存档,而不压缩为 .zip
  • 检查了 READ_EXTERNAL_STORAGE 权限,即使我认为它不应该是必需的
  • 尝试使用完整路径而不是使用 this.getResources().openRawResource(R.raw.neuralnet)

Android 权限:我正在运行 android api > 23,并且我在运行时请求 READ_EXTERNAL_STORAGE 权限。

清单包括:

谢谢,

0 投票
1 回答
508 浏览

scala - 将数据帧从 Spark 转换为 DL4j 使用的类型

有什么方便的方法可以将 Dataframe 从 Spark 转换为 DL4j 使用的类型?目前在 DL4j 算法中使用 Daraframe 时出现错误:“类型不匹配,预期:RDD [DataSet],实际:Dataset [Row]”。

0 投票
0 回答
3097 浏览

java - 使用 restoreMultiLayerNetwork() 加载 DL4J 模型时,“类加载器命名空间”无法访问库

我无法找到如何摆脱/解决以下错误,这些错误在 使用 Android API >= 24的 DL4J 方法restoreMultiLayerNetwork加载神经网络模型时发生:

调用方法restoreMultiLayerNetwork中的以下行时会发生错误:

“coefficients.bin”是系数文件,在导出 DL4J 神经网络时通过以下方法从 DL4J 创建:

错误:“类加载器命名空间”无法访问库

E/链接器:库“/vendor/lib64/libcutils.so”(“/vendor/lib64/libcutils.so”)需要或由“/data/app/com.arai.arai-1/lib/arm64/libjnind4jcpu .so" 不可用于命名空间:[name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.arai.arai-1/lib/arm64:/system/fake-libs64 :/data/app/com.arai.arai-1/base.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_dependencies_apk.apk!/lib/arm64-v8a:/数据/app/com.arai.arai-1/split_lib_slice_0_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_1_apk.apk!/lib/arm64-v8a:/data/ app/com.arai.arai-1/split_lib_slice_2_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_3_apk.apk!/lib/arm64-v8a:/data/app/ com.arai.arai-1/split_lib_slice_4_apk.apk!/lib/arm64-v8a:/data/app/com.arai。arai-1/split_lib_slice_5_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_6_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai- 1/split_lib_slice_7_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_8_apk.apk!

库“/vendor/lib64/libutils.so”(“/vendor/lib64/libutils.so”)需要或“/data/app/com.arai.arai-1/lib/arm64/libjnind4jcpu.so”是命名空间不可访问:[name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.arai.arai-1/lib/arm64:/system/fake-libs64:/data/ app/com.arai.arai-1/base.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_dependencies_apk.apk!/lib/arm64-v8a:/data/app/ com.arai.arai-1/split_lib_slice_0_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_1_apk.apk!/lib/arm64-v8a:/data/app/com. arai.arai-1/split_lib_slice_2_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_3_apk.apk!/lib/arm64-v8a:/data/app/com.arai。 arai-1/split_lib_slice_4_apk.apk!/lib/arm64-v8a:/data/app/com.arai。arai-1/split_lib_slice_5_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_6_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai- 1/split_lib_slice_7_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_8_apk.apk!/l

W/链接器:库“/system/lib64/libbinder.so”(“/system/lib64/libbinder.so”)需要或由“/data/app/com.arai.arai-1/lib/arm64/libjnind4jcpu .so" 对于命名空间 "classloader-namespace" 是不可访问的 - 作为http://b/26394120的解决方法临时授予访问权限,请注意,该访问权限将在未来的 Android 版本中删除。

E/链接器:库“/vendor/lib64/libnativeloader.so”(“/vendor/lib64/libnativeloader.so”)需要或由“/data/app/com.arai.arai-1/lib/arm64/libjnind4jcpu命名空间无法访问 .so":[name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.arai.arai-1/lib/arm64:/system/fake-libs64 :/data/app/com.arai.arai-1/base.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_dependencies_apk.apk!/lib/arm64-v8a:/数据/app/com.arai.arai-1/split_lib_slice_0_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_1_apk.apk!/lib/arm64-v8a:/data/ app/com.arai.arai-1/split_lib_slice_2_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_3_apk.apk!/lib/arm64-v8a:/data/app/ com.arai.arai-1/split_lib_slice_4_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_5_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slice_6_apk.apk!/lib/arm64-v8a:/data /app/com.arai.arai-1/split_lib_slice_7_apk.apk!/lib/arm64-v8a:/data/app/com.arai.arai-1/split_lib_slic

W /链接器:库“/system/lib64/libandroid_runtime.so”(“/system/lib64/libandroid_runtime.so”)需要或由“/data/app/com.arai.arai-1/lib/arm64/libjnind4jcpu .so" 对于命名空间 "classloader-namespace" 是不可访问的 - 作为http://b/26394120的解决方法临时授予访问权限,请注意,该访问权限将在未来的 Android 版本中删除。

Android 版本:API >= 24

从 build.gradle 中提取,其中设置了 ND4J 依赖项:

0 投票
1 回答
273 浏览

android - 不同的预测:Keras vs. Android + DL4J

在比较使用 Python(3.5.5)+ Keras(版本 2.0.8)在 GPU 上训练的神经网络的输出与使用 DL4J 在 Android(API 24)上的相同神经网络的输出时,我遇到了截然不同的预测结果(1.0.0-beta2)。

这将非常有帮助,如果有人可以分享他们如何解决这个问题的经验,谢谢!

将模型导入 Android

通过使用以下命令导入神经网络,将其转换为 DL4J 格式:

并使用 DL4Js ModelSerializer存储它。

使用 DL4J 方法restoreMultiLayerNetwork()将模型导入 Android 应用程序

模型输出

神经网络旨在对具有固定输入形状的图像进行预测:固定高度、宽度、3 个通道。

Android中的图像预处理管道:

图像作为输入流从设备加载并将其存储在 INDarray 中:

AndroidNativeImageLoader()加载并重新缩放图像。

INDarray 'indarray1' 被重新缩放以包含范围 [0,1] 中的值:

INDarray 通过网络传递以计算输出:

Python中的图像预处理管道:

问题:

使用 Python 和 Keras 的预测与 Android 中使用 DL4J 的预测有很大不同。输出是一个包含 2 个值的数组,每个值都是 [0,1] 中的浮点数。相机拍摄的普通 .bmp 图片的预测差异高达该输出数组的每个元素 0.99。

到目前为止完成的测试:

当使用单色 .bmp 图像(仅红色或仅蓝色或仅绿色或完全白色)时,两种环境的预测结果几乎相同。它们仅相差 10e-3,这可以通过在 GPU 上训练和在 CPU 上应用来解释。

结论: 到目前为止,我认为 Android 上的图像预处理与 Python 中的图像预处理方式不同,因为单色图片的模型输出是相同的。

有人遇到过类似的问题吗?任何帮助深表感谢!

0 投票
1 回答
350 浏览

deeplearning4j - Wildfly 中的 org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException

我正在将 deeplearning4j 与 JBOSS wildfly 一起使用。我已将下面提到的所有模块放在类路径中:

我仍然收到异常 java.lang.RuntimeException:

知道这里会发生什么吗?

0 投票
1 回答
529 浏览

python - 将 DL4J 训练的 Word2Vec 模型加载到 gensim

您好,我有一些 word2vec 模型使用 DL4J 中的 Word2Vec java 实现生成通过调用保存

其输出是一个包含一堆 txt 文件的 zip 文件。我可以使用 DL4j 成功加载和使用模型

我现在正在尝试在 python 中读取该模型,使用gensim

但我收到以下错误:

我也尝试使用 binary=True 并得到相同的结果。

如果我提取 DL4J 生成的模型,我会得到以下文件:

文件列表

有没有办法在 python 中读取该模型genism

0 投票
2 回答
163 浏览

deep-learning - 如何在深度学习中获得分类器对测试数据的准确性

我正在尝试使用 DL4J 进行深度学习,并提供了带有标签的训练数据。然后我试图通过分配一个虚拟标签来发送测试数据。如果不提供虚拟标签,则会出现运行时错误。我不明白为什么我们需要为测试数据分配标签。
另外,我想知道预测的准确性是多少。根据我在 dl4j 文档中看到的内容,生成了一种称为混淆矩阵的东西。我知道这只是让我们了解训练数据对系统的训练效果如何。有没有办法获得对测试数据的预测准确性?由于我们为测试数据提供了一个虚拟标签,我觉得混​​淆矩阵也没有正确生成。

0 投票
2 回答
214 浏览

java - Deeplearning4j (DL4J) 低精度、召回率和 F1

我将使用 DL4J 针对条件矩阵找到一个好的模型。我已经准备好类似 CSV 的数据集(示例如下),在微调超参数并多次训练模型后,我仍然无法获得合理的 Precision、Recall 和 F1 结果。请问我是不是执行错了什么?

样本数据集:

## 基本上每一列都定义了每个样本的条件是否存在(1)或不存在(0)。第一列是标签类只有2个输出,即1/0

数据向量部分:

模型:

训练和测试代码

结果:

无论我如何调整学习率、输入和输出激活方法、更新器、规则等,我仍然无法获得满意的结果。如果您能帮助我如何更好地操作 DL4J,将不胜感激。我在 Arbiter 上工作,但没有运气。不确定我是否使用的是 0.9.1 稳定版本。

谢谢十亿!