keras - 使用 deeplearning4j 在 Java 中加载 Keras 模型时出现异常

标签 keras deeplearning4j

我目前正在尝试实现本指南: https://towardsdatascience.com/deploying-keras-deep-learning-models-with-java-62d80464f34a

我已经使用 tf 和 Keras 训练了一个模型并将其导出到文件中。我想在java中使用模型并尝试使用deeplearning4j加载它。

我已经看过其他帖子,似乎没有人遇到同样的异常。

训练模型:

model = keras.Sequential()
...
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
...
history = model.fit(X, y, epochs=30, batch_size=512, validation_split=0.1)
model.save("model.h5")

用 Java 加载:

...
String simpleMlp = new ClassPathResource(path).getFile().getPath();
model = KerasModelImport.importKerasSequentialModelAndWeights(simpleMlp);
...

或者

...
String json = new ClassPathResource(path1).getFile().getPath();
String weights = new ClassPathResource(path2).getFile().getPath();
model = KerasModelImport.importKerasSequentialModelAndWeights(json, weights);
...

我收到以下异常(对于两个 java 代码):

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class java.util.List (java.util.LinkedHashMap and java.util.List are in module java.base of loader 'bootstrap')
    at org.deeplearning4j.nn.modelimport.keras.KerasSequentialModel.<init>(KerasSequentialModel.java:102)
    at org.deeplearning4j.nn.modelimport.keras.KerasSequentialModel.<init>(KerasSequentialModel.java:61)
    at org.deeplearning4j.nn.modelimport.keras.utils.KerasModelBuilder.buildSequential(KerasModelBuilder.java:320)
    at org.deeplearning4j.nn.modelimport.keras.KerasModelImport.importKerasSequentialModelAndWeights(KerasModelImport.java:195)
    at seminar.java_model_loading.machinelearning.Predictor.<init>(Predictor.java:19)
    at seminar.java_model_loading.App.main(App.java:27)

最佳答案

结果我必须更新 deeplearning4j 的 Maven 依赖项:

使用

...
version>1.0.0-beta4</version>
...

而不是

...
version>1.0.0-beta2</version>
...

所以该指南已经过时且错误。

关于keras - 使用 deeplearning4j 在 Java 中加载 Keras 模型时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56276832/

相关文章:

python - Keras 损失函数取决于批量大小

deeplearning4j - 如何在deeplearning4j中创建训练和测试DataSetIterators?

java - 使用 Datavec 变换滞后值

java - 在 Windows 上安装 DL4J

machine-learning - 多层网络预测简单函数

python - 从 python 列表创建动态形状的张量以提供 tensorflow RNN

python - TF/keras 子类在 Eager Execution 中完美工作,并且在没有它的情况下抛出巨大的无法追踪的错误?

python - 测试数据用于 keras fit_generator 中的验证数据

machine-learning - 输入 channel 数与 Keras 中过滤器的相应维度不匹配

scala - 如何为 nd4j 和 deeplearning4j 设置 scala sbt 项目