一、保存模型
mynetwork為keras模型對象,通過mynetwork =tf.keras.models.Sequential
(...)類似方法建立;
tf.saved_model.save(mynetwork, 'saved_model')##保存模型,說明文件夾即可
二、載入保存的模型並進行推理
import tensorflow as tf import numpy as np gpus = tf.config.experimental.list_physical_devices('GPU')##獲取可用GPU for gpu in (gpus): tf.config.experimental.set_memory_growth(gpu, True)##設置顯存使用方式 (x_train, y_train),(x_test, y_test) = tf.keras.datasets.mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 ##數據預處理歸一化 x_train = x_train[..., tf.newaxis] ##增加一個channle維數 x_test = x_test[..., tf.newaxis] x_train = x_train.astype(np.float32)##原始數據類型為float64,因為調用了cudnn加速,需要轉換為float32 x_test = x_test.astype(np.float32) train_set = tf.data.Dataset.from_tensor_slices((x_train, y_train)).shuffle(10000).batch(32) test_set = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32) infer = tf.saved_model.load("saved_model")##讀取模型 train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='train_accuracy')##准確率定義 test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='test_accuracy') for x, y in train_set: pre_train = infer.call(x) acc_train = train_accuracy(y, pre_train) for x, y in test_set: pre_test = infer.call(x) acc_test = test_accuracy(y, pre_test) print(acc_train)##輸出准確率張量 print(acc_test)
三、預測結果