我使用的是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中给它一个损失函数?还是有一种不给它损失函数的方式加载它的方法?
谢谢
答案 0 :(得分:1)
不幸的是,DL4J不支持从beta6版本开始为喀拉拉河进口注册自定义丢失功能。
如果您只想加载经过训练的模型进行推理,则应该能够通过将keras中的损失函数更改为受支持的函数之一(请参阅https://deeplearning4j.konduit.ai/keras-import/supported-features#losses)来解决该问题,然后再次将其导出。