【keras】models.load_model() 報錯問題 Unknown entry in loss dictionary:

在試用tf2.0.keras建立的一個簡單的神經網絡時,發現模型保存之後重新加載會出問題

代碼如下:

# 創建模型
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=(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= [])

即可加載成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章