從零基礎入門Tensorflow2.0 ----九、44.3 keras模型轉換成savedmodel
every blog every motto:
0. 前言
以fashion_mnist 為例,keras模型轉換成savedmodel
1. 程式碼部分
1. 匯入模組
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import keras
print(tf.__version__)
print(sys.version_info)
for module in mpl,np,pd,sklearn,tf,keras:
print(module.__name__,module.__version__)
2. 讀取資料
fashion_mnist = keras.datasets.fashion_mnist
# print(fashion_mnist)
(x_train_all,y_train_all),(x_test,y_test) = fashion_mnist.load_data()
x_valid,x_train = x_train_all[:5000],x_train_all[5000:]
y_valid,y_train = y_train_all[:5000],y_train_all[5000:]
# 列印格式
print(x_valid.shape,y_valid.shape)
print(x_train.shape,y_train.shape)
print(x_test.shape,y_test.shape)
3. 資料歸一化
# 資料歸一化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
# x_train:[None,28,28] -> [None,784]
x_train_scaled = scaler.fit_transform(x_train.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)
x_valid_scaled = scaler.transform(x_valid.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)
x_test_scaled = scaler.transform(x_test.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)
4. 構建模型
# tf.keras.models.Sequential()
# 構建模型
# 建立物件
"""model = keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[28,28]))
model.add(keras.layers.Dense(300,activation='sigmoid'))
model.add(keras.layers.Dense(100,activation='sigmoid'))
model.add(keras.layers.Dense(10,activation='softmax'))"""
# 另一種寫法
model = keras.models.Sequential([
keras.layers.Flatten(input_shape=[28,28]),
keras.layers.Dense(300,activation='sigmoid'),
keras.layers.Dense(100,activation='sigmoid'),
keras.layers.Dense(10,activation='softmax')
])
#
model.compile(loss='sparse_categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])
5. 訓練
# 開始訓練
history = model.fit(x_train_scaled,y_train,epochs=10,validation_data=(x_valid_scaled,y_valid))
6. 學習曲線
# 畫圖
def plot_learning_curves(history):
pd.DataFrame(history.history).plot(figsize=(8,5))
plt.grid(True)
plt.gca().set_ylim(0,1)
plt.show()
plot_learning_curves(history)
7. 測試集
model.evaluate(x_test_scaled,y_test,verbose=0)
8. keras模型轉換成savemodel
8.1 儲存成savemodel
# 儲存成savemodel
tf.saved_model.save(model,'keras_saved_graph')
8.2 展示save_model
注: jupyter notebook 中 以"!"開頭的為命令
# 命令列工具 !
!saved_model_cli show --dir keras_saved_graph --all
8.4 展示指定的簽名函式
!saved_model_cli show --dir keras_saved_graph --tag_set serve --signature_def serving_default
8.5 命令列測試
!saved_model_cli run --dir keras_saved_graph --tag_set serve --signature_def serving_default --input_exprs 'flatten_input=np.ones((1,28,28))'
8.6 用程式測試
# 用程式測試
load_saved_model = tf.saved_model.load('keras_saved_graph')
print(list(load_saved_model.signatures.keys()))
8.7 利用簽名函式
# 利用函式簽名
inference = load_saved_model.signatures['serving_default']
print(inference)
print(inference.structured_outputs)
results = inference(tf.constant(x_test_scaled[0:1]))
print(results)
print(results['dense_2'])
相關文章
- Keras 轉換成 Tensorflow 模型格式並使用Keras模型
- 如何將keras訓練的模型轉換成tensorflow lite模型Keras模型
- TensorFlow2.0教程-使用keras訓練模型Keras模型
- 運用預訓練 Keras 模型來處理影像分類請求,學習如何使用從 Keras 建立 SavedModelKeras模型
- 零基礎入門推薦系統-【排序模型+模型融合】排序模型
- Tensorflow SavedModel模型的儲存與載入模型
- 資料分析 | 零基礎入門資料分析(一):從入門到摔門?
- python萌新:從零基礎入門到放棄Python
- 零基礎入門前端,從小白到大神進階前端
- 神經網路基礎及Keras入門神經網路Keras
- 【6】TensorFlow光速入門-python模型轉換為tfjs模型並使用Python模型JS
- Datawhale零基礎入門金融風控 Task5 模型融合 打卡模型
- 零基礎入門gRPC:從 0 實現一個Hello WorldRPC
- 零基礎入門Serverless:Hello WorldServer
- Flask框架從入門到精通之轉換器(四)Flask框架
- TensorFlow2.0 + CNN + keras + 人臉識別CNNKeras
- 零基礎入門學習大資料可以從事哪些工作?大資料
- Python3 《零基礎小白從入門到實戰》之“列表”Python
- 零基礎入門Python的路徑Python
- 零基礎入門│帶你理解Kubernetes
- 《Kubernetes零基礎快速入門》簡介
- React 從入門到進階之路(九)React
- 零基礎入門金融風控之貸款違約預測—模型融合模型
- 關於Tensorflow2.0 keras的子類式多輸入多輸出Keras
- 零基礎入門前端的修煉之道前端
- Java零基礎入門(三)流程控制Java
- 零基礎學習Alfred(一):入門操作Alfred
- 給零基礎小白的Python入門教程Python
- Flask框架從入門到精通之Session(九)Flask框架Session
- 如何將keras訓練好的模型轉換成tensorflow的.pb的檔案並在TensorFlow serving環境呼叫Keras模型
- 【tf.keras】tf.keras載入AlexNet預訓練模型Keras模型
- Python從入門到轉行Python
- PS 零基礎入門到精通視訊教程
- 零基礎快速入門:java的命名規範Java
- (Python篇)零基礎入門第三篇Python
- C#零基礎小白快速入門指導C#
- 好程式設計師大資料影片教程從零基礎入門到精通程式設計師大資料
- Python3 《零基礎小白從入門到實戰》之“初識函式”Python函式