首页 > 解决方案 > ValueError:未知层:自定义>CTCLayer。请确保将此对象传递给“custom_objects”参数

问题描述

我想在另一个应用程序中使用Keras 的手写识别示例中描述的训练模型,并尝试使用以下内容加载模型;

from keras.models import load_model
from tensorflow import keras

model = keras.models.load_model("test4_20211113.h5", custom_objects={'CTCLayer': CTCLayer}) 

我收到“ValueError:未知层:自定义>CTCLayer。请确保将此对象传递给custom_objects参数。”

我添加了 custom_objects 参数并通过在本文后面添加 **kwargs 来修改 CTCLayer 类,“ ValueError: Unknown layer: CapsuleLayer ”。

class CTCLayer(keras.layers.Layer):
    def __init__(self, name=None, **kwargs):
        self.name = name
        super().__init__(**kwargs)
        self.loss_fn = keras.backend.ctc_batch_cost

    def call(self, y_true, y_pred):
        batch_len = tf.cast(tf.shape(y_true)[0], dtype="int64")
        input_length = tf.cast(tf.shape(y_pred)[1], dtype="int64")
        label_length = tf.cast(tf.shape(y_true)[1], dtype="int64")

        input_length = input_length * \
            tf.ones(shape=(batch_len, 1), dtype="int64")
        label_length = label_length * \
            tf.ones(shape=(batch_len, 1), dtype="int64")
        loss = self.loss_fn(y_true, y_pred, input_length, label_length)
        self.add_loss(loss)

        # At test time, just return the computed predictions.
        return y_pred

我是 Python 和 Keras 的初学者,如果你让我知道如何解决这个问题,我将不胜感激。

标签: pythontensorflowkerasvalueerrorcustom-object

解决方案


推荐阅读