日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

tensorflow模型部署系列————單機(jī)python部署(附代碼)

系統(tǒng) 1777 0

摘要

本文為系列博客tensorflow模型部署系列的一部分,用于實(shí)現(xiàn)通用模型的部署。通用主要體現(xiàn)在通過(guò)tensorboard圖從已保存的模型中還原并查看模型詳細(xì)結(jié)構(gòu),以及自定義模型的輸入輸出tensor。相關(guān)源碼見(jiàn)鏈接


引言

本文為系列博客 tensorflow模型部署系列的一部分,用于 python 語(yǔ)言實(shí)現(xiàn)通用模型的部署。通用主要體現(xiàn)在通過(guò) tensorboard 圖從已保存的模型中還原并查看模型詳細(xì)結(jié)構(gòu),以及自定義模型的輸入輸出tensor。本文主要使用keras和pb兩種模型文件,其它格式的模型文件請(qǐng)先進(jìn)行格式轉(zhuǎn)換tensorflow模型部署系列————預(yù)訓(xùn)練模型導(dǎo)出

主題

上一篇博文tensorflow模型部署系列————預(yù)訓(xùn)練模型導(dǎo)出就如何將模型導(dǎo)出為文件以及如何利用模型文件進(jìn)行推理進(jìn)行講解,博文中也開(kāi)放了使用 python 進(jìn)行模型推理的代碼,本文也是使用python進(jìn)行模型推理。主要區(qū)別在于:

  1. 將模型推理代碼對(duì)象化,分離模型加載和模型推理為不同的方法,以減少實(shí)際部署時(shí)速度過(guò)慢問(wèn)題
  2. 有時(shí)我們拿到的只有模型文件,如網(wǎng)上下載、比賽提交代碼、前同事留下的模型等等。我們并不知道這些模型文件的具體結(jié)構(gòu)及內(nèi)部張量名稱(chēng),使得模型部署無(wú)法進(jìn)行。本文會(huì)介紹查看模型文件模型結(jié)構(gòu)及張量名稱(chēng)的通用方法,進(jìn)行可以對(duì)任意模型文件進(jìn)行部署

查看已保存模型的結(jié)構(gòu)

keras模型文件

  • 打印模型結(jié)構(gòu) model.summary()

  • 繪制簡(jiǎn)單的模型圖 keras.utils.plot_model(model,'./keras/model.png')

  • 生成tensorboard文件

                    
                      tensorboard_callback = keras.callbacks.TensorBoard('./keras')
    tensorboard_callback.set_model(model)
    tensorboard_callback.writer.flush()
    
                    
                  

pb模型文件

  • 生成tensorboard文件

                    
                      file_writer = tf.summary.FileWriter('./pb')
    file_writer.add_graph(graph)
    file_writer.flush()
    
                    
                  

然后輸入命令行 tensorboard --logdir=./ 查看tensorboard模型圖

查看已保存模型的輸入和輸出

通過(guò)tensorboard圖查看

在網(wǎng)頁(yè)中點(diǎn)擊圖的輸入和輸入即可看到輸入和輸出的詳細(xì)屬性。 注意:如果輸出是矩形框,說(shuō)明它是組合操作,要雙擊進(jìn)入到它的內(nèi)部,找到最后的橢圓形才是模型可識(shí)別的tensor

tensorflow模型部署系列————單機(jī)python部署(附代碼)_第1張圖片

tensorflow模型部署系列————單機(jī)python部署(附代碼)_第2張圖片

最終代碼要在tensor名后加上 :0 上圖中輸入tensor名稱(chēng)為 input:0 ,輸出tensor名稱(chēng)為 output/Softmax:0

通過(guò)代碼查看

通過(guò)代碼查看所有op名稱(chēng)

            
              op = graph.get_operations()
for i, m in enumerate(op):
   print('op{}:'.format(i), m.values())

            
          

以上代碼會(huì)打印出很多圖,如下格式

            
              op0: (
              
                ,)
op1: (
                
                  ,)
op2: (
                  
                    ,)
op3: (
                    
                      ,)
.
.
.


                    
                  
                
              
            
          

op的打印順序大致以 以下順序排列:

  • 前向傳播op
  • 占位符op
  • 優(yōu)化器op
  • 評(píng)估指標(biāo)(loss、acc)op
  • 反向傳播梯度op

我們查找輸入輸出op時(shí)只要在前向傳播op里面尋找就行了。一般來(lái)說(shuō),打印的第一個(gè)op是輸入op,前向傳播op的最后一個(gè)op為輸出op。當(dāng)然,我們也可以根據(jù)需要用中間一些op做為輸入和輸出,這在提取特征和遷移學(xué)習(xí)場(chǎng)景會(huì)用到

以第一行為例。 'sequential_1_input:0' 為張量名稱(chēng), float32 為張量類(lèi)型, (?, 784) 為張量維度

python部署代碼

模型封裝類(lèi)

模型封裝類(lèi)主要包括兩個(gè)方法:初始化和推理。

初始化只用于處理與 sess.run 無(wú)關(guān)的所有操作,以減少推理時(shí)的操作,保證模型推理高效運(yùn)行。初始化主要進(jìn)行的操作包括:模型文件加載、獲取計(jì)算圖和計(jì)算session、根據(jù)輸入輸出tensor名稱(chēng)獲取輸入輸出tensor

推理僅僅執(zhí)行 sesson.run 操作

模型封裝類(lèi)示例代碼

經(jīng)過(guò)模型封裝類(lèi)封裝以后,示例代碼就很簡(jiǎn)單了。只用準(zhǔn)備數(shù)據(jù),然后推理就行了。

示例代碼

  • 模型文件分析

    • keras模型文件分析代碼

    • pb模型文件分析代碼

  • python部署

    • 模型封裝類(lèi)
    • 模型封裝類(lèi)示例代碼

附錄

參考


  • tensorflow 官方 tensorboard教程
  • keras官方model接口文檔中文版

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 铜梁县| 资源县| 云龙县| 惠东县| 射洪县| 阿鲁科尔沁旗| 高要市| 会泽县| 乌恰县| 渭源县| 施秉县| 织金县| 阿拉善左旗| 西昌市| 上饶市| 家居| 雷波县| 壶关县| 昭觉县| 徐汇区| 渭南市| 霍邱县| 息烽县| 盖州市| 高要市| 普安县| 青海省| 五大连池市| 九寨沟县| 吴堡县| 运城市| 全椒县| 浠水县| 德令哈市| 海盐县| 阿拉善右旗| 铁岭市| 革吉县| 临沧市| 龙岩市| 旬邑县|