亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

tensorflow使用freeze_graph.py將ckpt轉為pb文件的方法

 更新時間:2020年04月22日 10:57:30   作者:yjl9122  
這篇文章主要介紹了tensorflow使用freeze_graph.py將ckpt轉為pb文件的方法,需要的朋友可以參考下

廢話少說直接上代碼樣例如下

import tensorflow as tf
import os
from tensorflow.python.tools import freeze_graph
# 本來這個model本無需解釋太多,但是這么多人不能耐下心來看,那么我簡單的說一下吧
# network是你們自己定義的模型結構而已
# ps:
# def network(input):
# return tf.layers.max_pooling2d(input, 2, 2)
from model import network


os.environ['CUDA_VISIBLE_DEVICES']='2' #設置GPU


model_path = "path to /model.ckpt-0000" #設置model的路徑,因新版tensorflow會生成三個文件,只需寫到數字前


def main():

 tf.reset_default_graph()

 input_node = tf.placeholder(tf.float32, shape=(228, 304, 3)) #這個是你送入網絡的圖片大小,如果你是其他的大小自行修改
 input_node = tf.expand_dims(input_node, 0)
 flow = network(input_node)
 flow = tf.cast(flow, tf.uint8, 'out') #設置輸出類型以及輸出的接口名字,為了之后的調用pb的時候使用

 saver = tf.train.Saver()
 with tf.Session() as sess:

  saver.restore(sess, model_path)

  #保存圖
  tf.train.write_graph(sess.graph_def, 'output_model/pb_model', 'model.pb')
  #把圖和參數結構一起
  freeze_graph.freeze_graph('output_model/pb_model/model.pb', '', False, model_path, 'out','save/restore_all', 'save/Const:0', 'output_model/pb_model/frozen_model.pb', False, "")

 print("done")

if __name__ == '__main__':
 main()

這節(jié)是關于tensorflow的Freezing,字面意思是冷凍,可理解為整合合并;整合什么呢,就是將模型文件和權重文件整合合并為一個文件,主要用途是便于發(fā)布。

官方解釋可參考:https://www.tensorflow.org/extend/tool_developers/#freezing 

這里我按我的理解翻譯下,不對的地方請指正:
有一點令我們?yōu)楸容^困惑的是,tensorflow在訓練過程中,通常不會將權重數據保存的格式文件里(這里我理解是模型文件),反而是分開保存在一個叫checkpoint的檢查點文件里,當初始化時,再通過模型文件里的變量Op節(jié)點來從checkoupoint文件讀取數據并初始化變量。這種模型和權重數據分開保存的情況,使得發(fā)布產品時不是那么方便,所以便有了freeze_graph.py腳本文件用來將這兩文件整合合并成一個文件。
freeze_graph.py是怎么做的呢?首行它先加載模型文件,再從checkpoint文件讀取權重數據初始化到模型里的權重變量,再將權重變量轉換成權重 常量 (因為 常量 能隨模型一起保存在同一個文件里),然后再通過指定的輸出節(jié)點將沒用于輸出推理的Op節(jié)點從圖中剝離掉,再重新保存到指定的文件里(用write_graphdef或Saver)

文件目錄:tensorflow/python/tools/free_graph.py
測試文件:tensorflow/python/tools/free_graph_test.py 這個測試文件很有學習價值

參數:

總共有11個參數,一個個介紹下(必選: 表示必須有值;可選: 表示可以為空):
1、input_graph:(必選)模型文件,可以是二進制的pb文件,或文本的meta文件,用input_binary來指定區(qū)分(見下面說明)
2、input_saver:(可選)Saver解析器。保存模型和權限時,Saver也可以自身序列化保存,以便在加載時應用合適的版本。主要用于版本不兼容時使用。可以為空,為空時用當前版本的Saver。
3、input_binary:(可選)配合input_graph用,為true時,input_graph為二進制,為false時,input_graph為文件。默認False
4、input_checkpoint:(必選)檢查點數據文件。訓練時,給Saver用于保存權重、偏置等變量值。這時用于模型恢復變量值。
5、output_node_names:(必選)輸出節(jié)點的名字,有多個時用逗號分開。用于指定輸出節(jié)點,將沒有在輸出線上的其它節(jié)點剔除。
6、restore_op_name:(可選)從模型恢復節(jié)點的名字。升級版中已棄用。默認:save/restore_all
7、filename_tensor_name:(可選)已棄用。默認:save/Const:0
8、output_graph:(必選)用來保存整合后的模型輸出文件。
9、clear_devices:(可選),默認True。指定是否清除訓練時節(jié)點指定的運算設備(如cpu、gpu、tpu。cpu是默認)
10、initializer_nodes:(可選)默認空。權限加載后,可通過此參數來指定需要初始化的節(jié)點,用逗號分隔多個節(jié)點名字。
11、variable_names_blacklist:(可先)默認空。變量黑名單,用于指定不用恢復值的變量,用逗號分隔多個變量名字。

用法:

例:python tensorflow/python/tools/free_graph.py \
–input_graph=some_graph_def.pb \ 注意:這里的pb文件是用tf.train.write_graph方法保存的
–input_checkpoint=model.ckpt.1001 \ 注意:這里若是r12以上的版本,只需給.data-00000….前面的文件名,如:model.ckpt.1001.data-00000-of-00001,只需寫model.ckpt.1001
–output_graph=/tmp/frozen_graph.pb
–output_node_names=softmax

另外,如果模型文件是.meta格式的,也就是說用saver.Save方法和checkpoint一起生成的元模型文件,free_graph.py不適用,但可以改造下:
1、copy free_graph.py為free_graph_meta.py
2、修改free_graph.py,導入meta_graph:from tensorflow.python.framework import meta_graph
3、將91行到97行換成:input_graph_def = meta_graph.read_meta_graph_file(input_graph).graph_def

這樣改即可加載meta文件

到此這篇關于tensorflow使用freeze_graph.py將ckpt轉為pb文件的方法的文章就介紹到這了,更多相關tensorflow ckpt轉為pb文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python Pandas兩個表格內容模糊匹配的實現

    Python Pandas兩個表格內容模糊匹配的實現

    模糊查詢大家應該都不會陌生,下面這篇文章主要給大家介紹了關于Python Pandas兩個表格內容模糊匹配的實現方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-11-11
  • Pandas提取含有指定字符串的行(完全匹配,部分匹配)

    Pandas提取含有指定字符串的行(完全匹配,部分匹配)

    本文主要介紹了Pandas提取含有指定字符串的行(完全匹配,部分匹配),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • python 微信好友特征數據分析及可視化

    python 微信好友特征數據分析及可視化

    這篇文章主要介紹了python 微信好友特征數據分析及可視化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • python排序函數sort()與sorted()的區(qū)別

    python排序函數sort()與sorted()的區(qū)別

    這篇文章主要介紹了python排序函數sort()與sorted()的區(qū)別,需要的朋友可以參考下
    2018-09-09
  • Pandas對DataFrame單列/多列進行運算(map, apply, transform, agg)

    Pandas對DataFrame單列/多列進行運算(map, apply, transform, agg)

    這篇文章主要介紹了Pandas對DataFrame單列/多列進行運算(map, apply, transform, agg),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • python3.9之你應該知道的新特性詳解

    python3.9之你應該知道的新特性詳解

    這篇文章主要介紹了python3.9之你應該知道的新特性詳解,需要的朋友可以參考下
    2021-04-04
  • Qt6中重大改變的QtMultimedia多媒體模塊實現

    Qt6中重大改變的QtMultimedia多媒體模塊實現

    本文主要介紹了Qt6中重大改變的QtMultimedia多媒體模塊實現,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • python2和python3實現在圖片上加漢字的方法

    python2和python3實現在圖片上加漢字的方法

    python2和python3實現在圖片上加漢字,最主要的區(qū)別還是內部編碼方式不一樣導致的,在代碼上表現為些許的差別。這篇文章主要介紹了python2和python3實現在圖片上加漢字,需要的朋友可以參考下
    2019-08-08
  • python基礎教程之序列詳解

    python基礎教程之序列詳解

    這篇文章主要介紹了python基礎教程之序列詳解,本文的序列包含元組(tuple)、列表(list)等數據類型,需要的朋友可以參考下
    2014-08-08
  • 詳解Python中的循環(huán)語句的用法

    詳解Python中的循環(huán)語句的用法

    這篇文章主要介紹了詳解Python中的循環(huán)語句的用法,循環(huán)語句是學習各個編程語言的最基本的基礎知識,需要的朋友可以參考下
    2015-04-04

最新評論