【发布时间】:2020-05-29 19:44:44
【问题描述】:
我正在使用 Anaconda Navigator,确切地说是 Jupyter。
import tensorflow as tf
from tensorflow import keras
print(tf.__version__)
>>> 1.14.0
这是我的模特
def create_model():
model = tf.keras.Sequential([
keras.layers.Dense(86, activation='relu', kernel_regularizer=keras.regularizers.l2(0.0001),input_shape=(129,)),
keras.layers.Dropout(0.2),
keras.layers.Dense(142, activation='relu', kernel_regularizer=keras.regularizers.l2(0.0001)),
keras.layers.Dropout(0.2),
keras.layers.Dense(4, activation='softmax')
])
return model
model = create_model()
# Display the model's architecture
model.summary()
在训练、预测和评估我的模型后,我决定使用
model.save('/Users/Jennifer/myproject/my_model.h5')
我用 h5py 文件检查了目录和文件夹。我决定使用
加载它new_model1 = tf.keras.models.load_model('/Users/Jennifer/myproject/my_model.h5')
我遇到了一个错误
ValueError: Unknown entries in loss dictionary: ['class_name', 'config']. Only expected following keys: ['dense_17']
请帮助我。我应该怎么办?我几乎花了一整天的时间来解决这个问题。谢谢
【问题讨论】:
-
我认为你错过了其中的一个关键部分,你传递了什么来编译?当您保存模型时,它将保存优化器/训练信息。您可以将 custom_objects 传递给 load_model 以加载这些对象。或者如果你不想要优化器的东西,你可以试试
load_weights。 -
@matt 编译:
model.compile(optimizer=tf.keras.optimizers.Adam(0.0001), loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True), metrics=['accuracy']). -
如果你在保存之前编译你的模型,比如model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy']),你还会得到这个错误吗?告诉我,我很好奇它是否能解决您的问题。
-
@TimbusCalin 不,我没有收到错误消息。它工作得很好。此错误是在保存模型后,我尝试使用命令在单独的 pyfile 中再次加载。
-
所以它解决了你的问题?
标签: tensorflow keras