当我保存时,keras模型中的某些变化

问题描述 投票:-1回答:1

标题说明了一切。当我使用model.save(path)保存模型时,我应该将所有数据存储在文件中吗?看起来好像不是。当我尝试使用保存的模型进行预测时,我得到了错误的输出(同样,如果首先保存模型,则它是工作文件)。我尝试打印砝码,但这不是问题,因为它们不会改变。真正奇怪的是,如果我训练模型,则将其保存,然后使用保存的模型(文件中的模型),一切都可以正常工作,但是即使我在同一执行中都完成了该工作。我也试着用泡菜保存。一样。

python-3.x tensorflow keras model
1个回答
0
投票

有几种保存和加载模型的方法。加载模型后,您可以获得完全相同的预测。使用model.savetf.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')

以上两种方法都将在加载模型之前和之后提供相同的预测。

© www.soinside.com 2019 - 2024. All rights reserved.