将 Keras 模型导入 DL4J 时出错 - “Batch norm layer expected input of type CNN, CNN Flat or FF...”

问题描述

我正在尝试使用 DL4J 导入在 Python 中训练的 Keras 模型,但出现以下错误

11:39:22.588 [main] Exception in thread "main" java.lang.IllegalStateException: Invalid input type: Batch norm layer expected input of type CNN,CNN Flat or FF,got InputTypeRecurrent(10,timeSeriesLength=24,format=NWC) for layer index -1,layer name = batch_normalization_1
    at org.deeplearning4j.nn.conf.layers.Batchnormalization.getoutputType(Batchnormalization.java:130)
    at org.deeplearning4j.nn.modelimport.keras.layers.normalization.KerasBatchnormalization.getoutputType(KerasBatchnormalization.java:165)
    at org.deeplearning4j.nn.modelimport.keras.KerasModel.inferOutputTypes(KerasModel.java:473)
    at org.deeplearning4j.nn.modelimport.keras.KerasModel.<init>(KerasModel.java:186)
    at org.deeplearning4j.nn.modelimport.keras.KerasModel.<init>(KerasModel.java:99)
    at org.deeplearning4j.nn.modelimport.keras.utils.KerasModelBuilder.buildModel(KerasModelBuilder.java:311)
    at org.deeplearning4j.nn.modelimport.keras.KerasModelImport.importKerasModelAndWeights(KerasModelImport.java:167)
    at edu.mit.ll.seamnet.SpeechEnhancement.runBatchnormErrModel(SpeechEnhancement.java:161)
    at edu.mit.ll.seamnet.SpeechEnhancement.main(SpeechEnhancement.java:172)

错误似乎已记录在案,并且根据问题报告,在 DL4J 的更高版本中实施了修复。也就是说,我仍然看到这个错误。我错过了什么吗?

我使用的是 DL4J 版本 1.0.0-M1

保存生成错误的简单模型的 Python 代码

in_layer = Input((25,25,))
x = Conv1D(filters=10,kernel_size=2)(in_layer)
out_layer = Batchnormalization()(x)
model = Model(in_layer,out_layer)
model.save("batchnormError.h5")

这是我用来导入模型的 DL4J 代码

String modelPath ="batchnormError.h5";
computationGraph model = KerasModelImport.importKerasModelAndWeights(modelPath);

任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)