【keras】models.load_model() 报错问题 Unknown entry in loss dictionary:

在试用tf2.0.keras建立的一个简单的神经网络时,发现模型保存之后重新加载会出问题
【【keras】models.load_model() 报错问题 Unknown entry in loss dictionary:】代码如下:

# 创建模型 inputs = tf.keras.Input(shape= (17,),name= 'inputs') hidden_1 = layers.Dense(48,activation='linear',name= 'hidden_1')(inputs) dropout_1 = layers.Dropout(rate= 0.1,seed= 10,name= 'dropout_1')(hidden_1) outputs = layers.Dense(93,activation='linear',name= 'outputs')(dropout_1) model = tf.keras.Model(inputs= inputs,outputs= outputs,name= 'model_T') # 模型摘要 model.summary()# 模型编译 model.compile(optimizer= tf.keras.optimizers.Adam(learning_rate= 0.001), loss= tf.losses.MeanSquaredError(), metrics= [])# 训练 history = model.fit(x= data_train[:,idx_bt], y= data_train[:,idx_t], batch_size= None, epochs= 50, #validation_split= 0.1, validation_data=https://www.it610.com/article/(data_test[:,idx_bt],data_test[:,idx_t]), verbose= 1)# 保存模型 model.save('model_save.h5')#加载模型 # del model model = tf.keras.models.load_model('model_save_5.h5')

报错:
ValueError: Unknown entry in loss dictionary: class_name. Only expected following keys: ['outputs']

后来发现在model.compile()中,loss那里,把 tf.losses.MeanSquaredError() 改成 'mean_squared_error',即:
# 模型编译 model.compile(optimizer= tf.keras.optimizers.Adam(learning_rate= 0.001), loss= 'mean_squared_error',metrics= [])

即可加载成功。

    推荐阅读