keras模型序列化model_from_yaml/jason(yamll/jason_string)总结

1、序列化方式

model.to_yaml()
model.to_json()

注意:子类化模型不可序列化,即以

class xxx_model(tensorflow.keras.Model):

定义模型的方式不能序列化,而以这种方式:

rom __future__ import absolute_import, division, print_function
import tensorflow as tf
tf.keras.backend.clear_session()
from tensorflow import keras
from tensorflow.keras import layers

inputs = keras.Input(shape=(5,7), name='digits')

x = Time2Vector()(inputs)
x = TransformerEncoder()(x)
outputs = layers.Dense(10, activation='softmax', name='predictions')(x)

model = keras.Model(inputs=inputs, outputs=outputs, name='3_layer_mlp')

定义的模型的方式才可以序列化

2、反序列化方式

fresh_model = tf.keras.models.model_from_yaml(yaml_string)
fresh_model = tf.keras.models.model_from_json(json_string)

注意:

1、当模型中有自定义层

反序列化方式:

custom_ob = {'Custom_Lay1':Custom_Lay1,'Custom_Lay2': Custom_Lay2}
model = model_from_yaml(yaml_string, custom_ob)

第二个参数要传入一个字典,键为自定义层的名字,值为对应的自定层类。

2、自定义层要注意

class Custom_Layer(Layer):
    def __init__(self, **kwargs):  
        super(TransformerEncoder, self).__init__( **kwargs)
        self.d_k = 100
__init__(self,**kwargs)和 
super(TransformerEncoder, self).__init__( **kwargs)

中的**kwargs一定不能省略!

你可能感兴趣的:(神经网络,tensorflow)