分享

tensorflow2.0保存和恢复模型

 乘舟泛海赏雨 2020-03-31

方式一:只保存模型的权重和偏置

import tensorflow as tf

from tensorflow import keras

from tensorflow.keras import datasets, layers, optimizers

# step1 加载训练集和测试集合

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

# step2 创建模型

def create_model():

  return tf.keras.models.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 编译模型 主要是确定优化方法,损失函数等

model.compile(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()

model.compile(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%


方式二:直接保存整个模型

import tensorflow as tf

from tensorflow import keras

from tensorflow.keras import datasets, layers, optimizers

# step1 加载训练集和测试集合

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

# step2 创建模型

def create_model():

  return tf.keras.models.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 编译模型 主要是确定优化方法,损失函数等

model.compile(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 = tf.keras.models.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%

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多