标题说明了一切。当我使用model.save(path)保存模型时,我应该将所有数据存储在文件中吗?看起来好像不是。当我尝试使用保存的模型进行预测时,我得到了错误的输出(同样,如果首先保存模型,则它是工作文件)。我尝试打印砝码,但这不是问题,因为它们不会改变。真正奇怪的是,如果我训练模型,则将其保存,然后使用保存的模型(文件中的模型),一切都可以正常工作,但是即使我在同一执行中都完成了该工作。我也试着用泡菜保存。一样。
有几种保存和加载模型的方法。加载模型后,您可以获得完全相同的预测。使用model.save
和tf.keras.models.load_model
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test) # output [0.08162821573866531, 0.9737]
# save the model
model.save('./MyModel.h5', save_format ='h5')
loaded_model = tf.keras.models.load_model('./MyModel.h5')
loaded_model.evaluate(x_test, y_test) # output [0.08162821573866531, 0.9737]
如果您有权访问模型的体系结构,那么您也可以使用
# saving and loading weights
model.save_weights('./Mymodel_weights',save_format='tf')
# create a new model architecture
new_model = create_model()
new_model.load_weights('./Mymodel_weights')
以上两种方法都将在加载模型之前和之后提供相同的预测。