Python Tensorflow 1.14+;序列化子类Keras层?
我已经阅读了Tensorflow 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
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})