用Docker部署TensorFlow Serving服务
生活随笔
收集整理的這篇文章主要介紹了
用Docker部署TensorFlow Serving服务
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1. 安裝 Docker
- 2. 使用 Docker 部署
- 3. 請(qǐng)求服務(wù)
- 3.1 手寫數(shù)字例子
- 3.2 貓狗分類例子
參考:
https://tf.wiki/zh_hans/deployment/serving.html#
https://tensorflow.google.cn/tfx/serving/docker
1. 安裝 Docker
以下均為 centos7 環(huán)境
參考文章:docker安裝等操作
2. 使用 Docker 部署
- 拉鏡像 docker pull tensorflow/serving
- 模型路徑,版本號(hào)1,2,默認(rèn)加載最大數(shù)字的
- bash 輸入命令,注意路徑,mymodel跟請(qǐng)求的代碼保持一致
- 手寫數(shù)字識(shí)別 模型代碼+導(dǎo)出模型
3. 請(qǐng)求服務(wù)
3.1 手寫數(shù)字例子
import numpy as np import tensorflow as tf import json import requests import matplotlib.pyplot as pltclass MNistLoader():def __init__(self):data = tf.keras.datasets.mnist# 加載數(shù)據(jù)(self.train_data, self.train_label), (self.test_data, self.test_label) = data.load_data()# 擴(kuò)展維度,灰度圖1通道 [batch_size, 28, 28, chanels=1]self.train_data = np.expand_dims(self.train_data.astype(np.float32) / 255.0, axis=-1)self.test_data = np.expand_dims(self.test_data.astype(np.float32) / 255.0, axis=-1)self.train_label = self.train_label.astype(np.int32)self.test_label = self.test_label.astype(np.int32)# 樣本個(gè)數(shù)self.num_train_data, self.num_test_data = self.train_data.shape[0], self.test_data.shape[0]def get_batch(self, batch_size):# 從訓(xùn)練集里隨機(jī)取出 batch_size 個(gè)樣本idx = np.random.randint(0, self.num_train_data, batch_size)return self.train_data[idx, :], self.train_label[idx]size = 6 dataloader = MNistLoader()data = json.dumps({'instances': dataloader.test_data[0:size].tolist() })headers = {'content-type': 'application/json'}json_response = requests.post(url='http://localhost:8501/v1/models/mymodel:predict',data=data, headers=headers )pred = np.array(json.loads(json_response.text)['predictions']) print("預(yù)測(cè)結(jié)果:", np.argmax(pred, axis=-1))# 打印圖片 plt.subplots(1, size) idx = 1 for img in dataloader.test_data[0:size]:plt.subplot(1, size, idx)plt.imshow(img)idx += 1 plt.show()輸出:
預(yù)測(cè)結(jié)果: [7 2 1 0 4 1]跟圖片顯示一致
3.2 貓狗分類例子
模型代碼
訓(xùn)練完后,導(dǎo)出模型
tf.saved_model.save(model, './3') import numpy as np import tensorflow as tf import json import requests import matplotlib.pyplot as plttest_pic = ["./dogs-vs-cats/test/1.jpg","./dogs-vs-cats/test/7.jpg"]# 狗1, 貓0 test_data = np.array([_decode_and_resize(f).numpy() for f in test_pic])data = json.dumps({'instances': test_data.tolist() })headers = {'content-type': 'application/json'}json_response = requests.post(url='http://localhost:8501/v1/models/mymodel:predict',data=data, headers=headers ) pred = np.array(json.loads(json_response.text)['predictions']) print("預(yù)測(cè)結(jié)果:", np.argmax(pred, axis=-1))for img in test_data:plt.imshow(img)plt.show()輸出:
預(yù)測(cè)結(jié)果: [1 0] # 狗,貓總結(jié)
以上是生活随笔為你收集整理的用Docker部署TensorFlow Serving服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 497. 非重叠矩形中
- 下一篇: LeetCode 87. 扰乱字符串(记