首页 > 解决方案 > Keras H5 模型转换为 TensorflowJS - 未知层错误:确保将此对象传递给“自定义对象”参数

问题描述

我正在尝试使用 TensorFlowJS Converter v3.8.0 转换 .h5 keras 模型以进行前端部署。我使用的模型来自 - https://github.com/RaphaelMeudec/deblur-gan

我使用的是 repo 中的“generator.h5”模型。但它没有“model_config”,所以我再次将模型加载为“new_model.h5”并将其与权重一起保存。这解决了“null:model_config”错误。

现在我使用层模型使用 TensorflowJS 转换器转换了“new_model.h5”。该转换有效,但每当我尝试将其加载到我的 Javascript 文件中时。它给出了以下错误:

Uncaught (in promise) Error: Unknown layer: ReflectionPadding2D. This may be due to one of the following reasons:

1. The layer is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code.
2. The custom layer is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().
    at deserializeKerasObject (generic_utils.js?d611:227)
    at deserialize (serialization.js?7544:25)
    at processLayer (container.js?6887:1037)
    at fromConfig (container.js?6887:1059)
    at deserializeKerasObject (generic_utils.js?d611:258)
    at deserialize (serialization.js?7544:25)
    at loadLayersModelFromIOHandler (models.js?411e:222)

现在我还尝试使用 Graphs Model 方法转换“new_model.h5”。但是使用 TensorflowJS 的转换也不起作用。它给出以下错误 -

ValueError: Unknown layer: ReflectionPadding2D. Please ensure this object is passed to the `custom_objects` argument. See https://www.tensorflow.org/guide/keras/save_and_serialize#registering_the_custom_object for details.

我猜这个错误与“ReflectionPadding 2D”层有关。它需要自定义加载。但我不知道该怎么做。我在网上寻找了一些解决方案,但未能为此提出可行的解决方案。我是 Tensorflow 的新手,所以我的问题可能不是那么精确,请原谅。

如果有人可以帮助解决这个问题,我将非常感激!

标签: pythontensorflowkerastensorflowjs-converter

解决方案


推荐阅读