tensorboard ckpt pb 模型的输出节点_FlyAI小课堂:Tensorflow-模型和数据的保存和载入...
在開始學習之前推薦大家可以多在FlyAI競賽服務平臺多參加訓練和競賽,以此來提升自己的能力。FlyAI是為AI開發者提供數據競賽并支持GPU離線訓練的一站式服務平臺。每周免費提供項目開源算法樣例,支持算法能力變現以及快速的迭代算法模型。
目錄
附件一:sklearn上的用法
一、基本方法
1.1 保存
- 定義變量
- 使用saver.save()方法保存
1.2 載入
- 定義變量
- 使用saver.restore()方法載入
1.3 說明
2. 默認情況下:saver.save(sess,"save/model.ckpt")產生4個文件:
checkpoint文件保存最新的模型;
model.ckpt.data 以字典的形式保存權重偏置項等訓練參數
model.ckpt.index:存儲訓練好的參數索引
model.ckpt.meta : 元文件(meta) 中保存了MetaGraphDef 的持久化數據,即模型數據,計算圖的網絡結構信息,完整的graph、variables、operation、collection。
3. 如何知道tensor的名字,最好是定義tensor的時候就指定名字,如上面代碼中的name='w',如果你沒有定義name,tensorflow也會設置name,只不過這個name就是根據你的tensor或者操作的性質。所以最好還是自己定義好name。
【說明:這種方法不方便的在于,在使用模型的時候,必須把模型的結構重新定義一遍,然后載入對應名字的變量的值。但是很多時候我們都更希望能夠讀取一個文件然后就直接使用模型,而不是還要把模型重新定義一遍。所以就需要使用另一種方法。】
二、不需重新定義網絡結構的方法
tf.train.import_meta_graph
import_meta_graph(
meta_graph_or_file,
clear_devices=False,
import_scope=None,
**kwargs
)
這個方法可以從文件中將保存的graph的所有節點加載到當前的default graph中,并返回一個saver。也就是說,我們在保存的時候,除了將變量的值保存下來,其實還有將對應graph中的各種節點保存下來,所以模型的結構也同樣被保存下來了。
比如我們想要保存計算最后預測結果的y,則應該在訓練階段將它添加到collection中。具體代碼如下:
2.1 保存
和1.1一樣,保持不變
2.2 載入
import tensorflow as tf import numpy as np # W = tf.Variable(tf.truncated_normal(shape=(2,3)),dtype = tf.float32,name='w') # b = tf.Variable(tf.truncated_normal(shape=(1,3)),dtype = tf.float32,name='b')# saver = tf.train.Saver() with tf.Session() as sess:new_saver = tf.train.import_meta_graph("save/model.ckpt.meta")new_saver.restore(sess, "save/model.ckpt")【個人理解:model.ckpt.meta : 保存了TensorFlow計算圖的網絡結構信息,import_meta_graph("save/model.ckpt.meta")這句拉取了結構,故不用重新定義。】
三、saved_model方式
實現了 (y = x + b)當輸入一個x 那么輸出的結果y就等于輸入x加上b。
3.1 保存
# Author:yifan import os import tensorflow as tf # 以下所有代碼默認導入 from tensorflow.python.saved_model.signature_def_utils_impl import predict_signature_def # 保存模型路徑 PATH = './models' # 創建一個變量 one = tf.Variable(3.0) # 創建一個占位符,在 Tensorflow 中需要定義 placeholder 的 type ,一般為 float32 形式 num = tf.placeholder(tf.float32,name='input') # 創建一個加法步驟,注意這里并沒有直接計算 sum = tf.add(num,one,name='output') # 初始化變量,如果定義Variable就必須初始化 init = tf.global_variables_initializer() # 創建會話sess with tf.Session() as sess:sess.run(init)print(sess.run(sum, feed_dict={num: 5.0}))# #保存SavedModel模型,使用以下三句builder = tf.saved_model.builder.SavedModelBuilder(PATH)signature = predict_signature_def(inputs={'input':num}, outputs={'output':sum})builder.add_meta_graph_and_variables(sess,[tf.saved_model.tag_constants.SERVING],signature_def_map={'predict': signature})builder.save()說明:
---- 標簽也可以選用系統定義好的參數,tf.saved_model.tag_constants.SERVING與 tf.saved_model.tag_constants.TRAINING等。
運行結果:8.0,和保存的模型:
注意:當前目錄下不可以存在models文件夾,否則會報錯。
3.2 載入
# Author:yifan import tensorflow as tf # 以下所有代碼默認導入 PATH = './models' with tf.Session() as sess:tf.saved_model.loader.load(sess, ["serve"], PATH) #一種載入變量的方式:in_x =tf.saved_model.loader.load(sess, ["serve"], PATH).signature_def['predict'].inputs['input'].name #另一種載入變量的方式: # in_x = sess.graph.get_tensor_by_name('input:0') #加載輸入變量y = sess.graph.get_tensor_by_name('output:0') #加載輸出變量scores = sess.run(y, feed_dict={in_x: 3.})print(scores)說明:
結果:6.0
3.3 查看模型的Signature簽名
傳統的導入 需要用get_tensor_by_name , 這樣就需要記錄tensor的name熟悉,很麻煩。通過signature,我們可以指定變量的別名,方便存取。但如果我們拿到了別人的含有signature一個SavedModel模型而且并不知道"標簽"那么怎么調用呢?
---Tensorflow官方已經為我們準備好了一個腳本,tensorflow下的saved_model_cli.py文件可以幫到。
我們可以'WIN+R'輸入'cmd'然后回車打開你的CMD,然后指定路徑到你的模型目錄下,運行:
saved_model_cli show --dir=./ --all
打印出的信息中我們就可以看到模型的輸入/輸出的名稱、數據類型、shape以及方法名稱。
附件一:sklearn上的用法
保存參數:
from sklearn.externals import joblib
joblib.dump((centres, des_list,img_features), "imgs_features.pkl", compress=3)
讀取參數:
centres, des_list, img_features = joblib.load("imgs_features.pkl") #讀取保存的特征
參考文章
【1】
TensorFlow 模型保存/載入的兩種方法?blog.csdn.net【2】
【tensorflow】保存模型、再次加載模型等操作_I am what i am-CSDN博客_保存模型?blog.csdn.net【3】
TensorFlow saved_model 模塊?blog.csdn.net【4】
Tensorflow學習筆記(二)模型的保存與加載(一 )?blog.csdn.net更多精彩內容請訪問FlyAI-AI競賽服務平臺;為AI開發者提供數據競賽并支持GPU離線訓練的一站式服務平臺;每周免費提供項目開源算法樣例,支持算法能力變現以及快速的迭代算法模型。
挑戰者,都在FlyAI!!!
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的tensorboard ckpt pb 模型的输出节点_FlyAI小课堂:Tensorflow-模型和数据的保存和载入...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吴恩达 coursera AI 专项二第
- 下一篇: 吴恩达 coursera AI 专项三第