Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow 1.14+;序列化子类Keras层?_Python_Tensorflow_Machine Learning_Keras_Deep Learning - Fatal编程技术网

Python Tensorflow 1.14+;序列化子类Keras层?

Python Tensorflow 1.14+;序列化子类Keras层?,python,tensorflow,machine-learning,keras,deep-learning,Python,Tensorflow,Machine Learning,Keras,Deep Learning,我已经阅读了Tensorflow Keras文档,例如 我有一个简单的子类层: class SimpleLayer(tf.keras.layers.Layer): def __init__(self, filters, kernel_size, **kwargs): super(SimpleLayer, self).__init__() self.filters = filters self.kernel_size = kernel

我已经阅读了Tensorflow Keras文档,例如

我有一个简单的子类层:

class SimpleLayer(tf.keras.layers.Layer):
    def __init__(self, filters, kernel_size, **kwargs):
        super(SimpleLayer, self).__init__()
        self.filters = filters
        self.kernel_size = kernel_size
        self.c1 = tf.keras.layers.Conv1D(filters, kernel_size, padding='same', activation='relu')
        self.c2 = tf.keras.layers.Conv1D(filters, kernel_size, padding='same')

    def call(self, inputs):
        x = inputs
        x = self.c1(x)
        x = self.c2(x)
        return x

    def get_config(self):
        # config = super(tf.keras.layers.Layer, self).get_config()
        config = {}
        config.update({
            'filters': self.filters,
            'kernel_size': self.kernel_size,
        })
        return config
然后有一个功能模型:


x=tf.keras.Inputs(…)
#一些干酪层
y=tf.keras.layers。。。(十)
#我的keras图层
y=简单层(…)(y)
#一些干酪层
y=tf.keras.layers。。。(y)
y=tf.keras.layers.致密(1)(y)
模型=tf.keras.model(输入=x,输出=y)
model.compile(…)
模型拟合(…)
model.save('model.h5')
然后我可以将模型加载为:

tf.keras.models.load_model('model.h5'))
但我得到:

ValueError: Unknown layer: SimpleLayer
从:

如果需要将自定义层序列化为功能模型的一部分,可以选择实现get_config方法

我有


我做错了什么?

您需要在加载过程中告诉keras您的自定义层,您可以使用
自定义对象
参数执行此操作:

tf.keras.models.load_model('model.h5', custom_objects = {'SimpleLayer': SimpleLayer})