Как загрузить файл модели Keras в DL4J, который был обучен на Python с использованием настраиваемой функции потерь

Я использую модель Keras, которая была обучена на Python в процессе Java с DL4J. В целом это работало нормально, но теперь перешли на использование настраиваемой функции потерь.

Модель обучалась на Python с помощью специальной функции потерь:

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

Я пытаюсь использовать его в Java с dl4j (версия: 1.0.0-beta6) для загрузки модели:

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? Или есть способ загрузить его без функции потерь?

Спасибо


person Ch2231    schedule 20.03.2020    source источник


Ответы (1)


К сожалению, DL4J не поддерживает регистрацию пользовательской функции потери для импорта keras, начиная с beta6.

Если вы просто хотите загрузить обученную модель для вывода, вы сможете обойти проблему, изменив функцию потерь в keras на одну из поддерживаемых (см. https://deeplearning4j.konduit.ai/keras-import/supported-features#loss), а затем снова экспортируйте его.

person Paul Dubs    schedule 20.03.2020