如何使用自定义损失函数在用Python训练的DL4J中加载Keras模型文件

时间:2020-03-20 07:47:06

标签: java python keras dl4j

我使用的是Keras模型,该模型在DL4J的Java进程中用Python训练。总体来说,这种方法一直运行良好,但现在转为使用自定义损失函数。

该模型使用自定义损失函数在Python中进行了训练:

model = load_model('modelFile' , custom_objects={'loss': my_custom_loss_function(weight)})

我尝试在dl4j(版本:1.0.0-beta6)的Java中使用它来加载模型:

String modelFile = "<location of hdf5 file on disk>";
MultiLayerNetwork multiLayerNetwork = KerasModelImport.importKerasSequentialModelAndWeights(modelFile);

但是现在抛出此错误:

org.deeplearning4j.nn.modelimport.keras.exceptions.UnsupportedKerasConfigurationException: 
Unknown Keras loss function loss. Please file an issue at https://github.com/eclipse/deeplearning4j/issues.

如何在Java中给它一个损失函数?还是有一种不给它损失函数的方式加载它的方法?

谢谢

1 个答案:

答案 0 :(得分:1)

不幸的是,DL4J不支持从beta6版本开始为喀拉拉河进口注册自定义丢失功能。

如果您只想加载经过训练的模型进行推理,则应该能够通过将keras中的损失函数更改为受支持的函数之一(请参阅https://deeplearning4j.konduit.ai/keras-import/supported-features#losses)来解决该问题,然后再次将其导出。