采用keras库保存、读取模型
创建模型
以手写数字集mnist为例,加载数据,创建简单模型
import tensorflow as tf
from tensorflow import keras
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()
train_images = train_images.reshape(-1, 28 * 28) / 255.0
test_images = test_images.reshape(-1, 28 * 28) / 255.0
# 定义一个简单的序列模型
def create_model():
model = tf.keras.models.Sequential([
keras.layers.Dense(512, activation='relu', input_shape=(784,)),
keras.layers.Dropout(0.2),
keras.layers.Dense(10)
])
model.compile(optimizer='adam',
loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
return model
保存模型
方法:tf.keras.models.save_model
保存模型作为TensorFlow SavedModel或HDF5文件。
1、保存为SavaModel格式
# SavaModel格式保存
export_dir = 'model/my_model'
model.save(export_dir)
2、保存为HDF5格式
# HDF5格式保存
model.save('model/my_model.h5')
读取模型
方法:tf.keras.models.load_model
通过加载保存的模型model.save()
1、读取SavaModel格式模型
model = tf.keras.models.load_model('model/my_model')
2、读取HDF5格式模型
new_model = tf.keras.models.load_model('model/my_model.h5')
转换模型给移动设备使用(.tflite文件)
方法:tf.lite.TFLiteConverter
将TensorFlow模型转换为TensorFlow Lite模型。
用法:
# 转换模型。
converter = tf.lite.TFLiteConverter.from_saved_model(export_dir)
tflite_model = converter.convert()
open("model/mnist_model.tflite", "wb").write(tflite_model)