前文已经比较详细的介绍了tf2.0构建网络的几种方式,当模型可以训练起来之后,可持久化就是下一个目标,保存和加载模型是不可或缺的部分。
Step1:构建一个网络结构用于测试
import tensorflow as tf
from tensorflow.keras import layers
import numpy as np
model = tf.keras.Sequential()
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
model.compile(optimizer=tf.keras.optimizers.Adam(0.001),
loss=tf.keras.losses.categorical_crossentropy,
metrics=[tf.keras.metrics.categorical_accuracy])
train_x = np.random.random((1000, 100))
train_y = np.random.random((1000, 10))
val_x = np.random.random((200, 100))
val_y = np.random.random((200, 10))
Step2:启动训练并保存模型
model.fit(train_x, train_y, epochs=10, batch_size=100,
validation_data=(val_x, val_y))
model.save_weight(./weight/model) # 保存权重文件 weight文件夹下三个文件
model.save_weight(./weight/model.h5) # 保存权重文件 weight文件夹下h5文件
model.save(all_model.h5) # 保存整个模型
Step3:加载模型测试
model.load_weights('./weight/model')
model.load_weights('./weight/model.h5')
model = tf.keras.models.load_model('all_model.h5')