Tensorflow-gpu保存keras模型為Savedmodel格式並載入進行推理


一、保存模型

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)

三、預測結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM