⽅法1:只保存模型的权重和偏置
这种⽅法不会保存整个⽹络的结构,只是保存模型的权重和偏置,所以在后期恢复模型之前,必须⼿动创建和之前模型⼀模⼀样的模型,以保证权重和偏置的维度和保存之前的相同。
del类中的save_weights⽅法和load_weights⽅法,参数解释我就直接搬运官⽹的内容了。
save_weights(
filepath,
overwrite=True,
save_format=None
)
Arguments:
filepath: String, path to the file to save the weights to. When saving in TensorFlow format, this is the prefix used for checkpoint files (multiple files are generated). Note that the '.h5' suffix causes weights to be saved in HDF5 format. overwrite: Whether to silently overwrite any existing file at the target location, or provide the user with a manual prompt. save_format: Either 'tf' or 'h5'. A filepath ending in '.h5' or '.keras' will default to HDF5 if save_format is None. Otherwise None defaults to 'tf'.
load_weights(
filepath,
by_name=False
)
实例1:
import tensorflow as tf
国产特斯拉交付from tensorflow import keras
from tensorflow.keras import datasets, layers, optimizers
# step1 加载训练集和测试集合
mnist = tf.ist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# step2 创建模型
def create_model():
return dels.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
]
)性价比较高的suv
model = create_model()
# step3 编译模型主要是确定优化⽅法,损失函数等
modelpile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# step4 模型训练训练⼀个epochs
model.fit(x=x_train,
y=y_train,
epochs=1,
)
# step5 模型测试
loss, acc = model.evaluate(x_test, y_test)
print("train model, accuracy:{:5.2f}%".format(100 * acc))
# step6 保存模型的权重和偏置
江铃凯威model.save_weights('./save_weights/my_save_weights')
# step7 删除模型
del model
# step8 重新创建模型
model = create_model()
modelpile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# step9 恢复权重
model.load_weights('./save_weights/my_save_weights')
# step10 测试模型
loss, acc = model.evaluate(x_test, y_test)
print("Restored model, accuracy:{:5.2f}%".format(100 * acc))
train model, accuracy:96.55%
Restored model, accuracy:96.55%
可以看到在模型的权重和偏置恢复之后,在测试集合上同样达到了训练之前相同的准确率。
⽅法2:直接保存整个模型
这种⽅法会将⽹络的结构,权重和优化器的状态等参数全部保存下来,后期恢复的时候就没必要创建新的⽹络了。
del类中的save⽅法和load_model⽅法
save(
filepath,
overwrite=True,
include_optimizer=True,
save_format=None
)
Arguments:
filepath: String, path to SavedModel or H5 file to save the model.
overwrite: Whether to silently overwrite any existing file at the target location, or provide the user with a manual prompt. include_optimizer: If True, save optimizer's state together.
菲亚特suv
save_format: Either 'tf' or 'h5', indicating whether to save the model to Tensorflow SavedModel or HDF5. The default is currently 'h5', but will switch to 'tf' in TensorFlow 2.0. The 'tf' option is currently disabled (use instead).
实例2:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import datasets, layers, optimizers
# step1 加载训练集和测试集合
mnist = tf.ist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# step2 创建模型途观汽车
def create_model():
return dels.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model = create_model()
# step3 编译模型主要是确定优化⽅法,损失函数等
宾利飞驰modelpile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# step4 模型训练训练⼀个epochs
model.fit(x=x_train,
y=y_train,
epochs=1,
)
# step5 模型测试
loss, acc = model.evaluate(x_test, y_test)
print("train model, accuracy:{:5.2f}%".format(100 * acc))
# step6 保存模型的权重和偏置
model.save('my_model.h5') # creates a HDF5 file 'my_model.h5'
# step7 删除模型
del model # deletes the existing model
# step8 恢复模型
# returns a compiled model
# identical to the previous one
restored_model = dels.load_model('my_model.h5')
# step9 测试模型
loss, acc = restored_model.evaluate(x_test, y_test)
print("Restored model, accuracy:{:5.2f}%".format(100 * acc))
train model, accuracy:96.94%
Restored model, accuracy:96.94%
⽅法3:使⽤tf.keras.callbacks.ModelCheckpoint⽅法在训练过程中保存模型
该⽅法继承⾃tf.keras.callbacks类,⼀般配合mode.fit函数使⽤
以上这篇tensorflow2.0保存和恢复模型3种⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
发布评论