欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

tensorflow 2.0模式下訓(xùn)練的模型轉(zhuǎn)成 tf1.x 版本的pb模型實(shí)例

 更新時(shí)間:2020年06月22日 08:38:13   作者:MatthewHsw  
這篇文章主要介紹了tensorflow 2.0模式下訓(xùn)練的模型轉(zhuǎn)成 tf1.x 版本的pb模型實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨想過來看看吧

升級(jí)到tf 2.0后, 訓(xùn)練的模型想轉(zhuǎn)成1.x版本的.pb模型, 但之前提供的通過ckpt轉(zhuǎn)pb模型的方法都不可用(因?yàn)楸4娴腸kpt不再有.meta)文件, 嘗試了好久, 終于找到了一個(gè)方法可以迂回轉(zhuǎn)到1.x版本的pb模型.

Note: 本方法首先有些要求需要滿足:

可以拿的到模型的網(wǎng)絡(luò)結(jié)構(gòu)定義源碼

網(wǎng)絡(luò)結(jié)構(gòu)里面的所有操作都是通過tf.keras完成的, 不能出現(xiàn)類似tf.nn 的tensorflow自己的操作符

tf2.0下保存的模型是.h5格式的,并且僅保存了weights, 即通過model.save_weights保存的模型.

在tf1.x的環(huán)境下, 將tf2.0保存的weights轉(zhuǎn)為pb模型:

如果在tf2.0下保存的模型符合上述的三個(gè)定義, 那么這個(gè).h5文件在1.x環(huán)境下其實(shí)是可以直接用的, 因?yàn)槎际峭ㄟ^tf.keras高級(jí)封裝了,2.0版本和1.x版本不存在特別大的區(qū)別,我自己的模型是可以直接用的.

import tensorflow as tf
import os
from nets.efficientNet import *
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
# 這個(gè)代碼網(wǎng)上說需要加上, 如果模型里有dropout , bn層的話, 我測(cè)試過加不加結(jié)果都一樣, 保險(xiǎn)起見還是加上吧
tf.keras.backend.set_learning_phase(0)

# 首先是定義你的模型, 這個(gè)需要和tf2.0下一毛一樣
inputs = tf.keras.Input(shape=(224, 224, 3), name='modelInput')
outputs = yourModel(inputs, training=False)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.load_weights('save_weights.h5')
def freeze_session(session, keep_var_names=None, output_names=None, clear_devices=True):
  """
  Freezes the state of a session into a pruned computation graph.

  Creates a new computation graph where variable nodes are replaced by
  constants taking their current value in the session. The new graph will be
  pruned so subgraphs that are not necessary to compute the requested
  outputs are removed.
  @param session The TensorFlow session to be frozen.
  @param keep_var_names A list of variable names that should not be frozen,
             or None to freeze all the variables in the graph.
  @param output_names Names of the relevant graph outputs.
  @param clear_devices Remove the device directives from the graph for better portability.
  @return The frozen graph definition.
  """
  from tensorflow.python.framework.graph_util import convert_variables_to_constants
  graph = session.graph
  with graph.as_default():
    freeze_var_names = list(set(v.op.name for v in tf.global_variables()).difference(keep_var_names or []))
    output_names = output_names or []
    output_names += [v.op.name for v in tf.global_variables()]
    # Graph -> GraphDef ProtoBuf
    input_graph_def = graph.as_graph_def(add_shapes=True)
    if clear_devices:
      for node in input_graph_def.node:
        node.device = ""
    frozen_graph = convert_variables_to_constants(session, input_graph_def,
                           output_names, freeze_var_names)
    return frozen_graph

frozen_graph = freeze_session(tf.keras.backend.get_session(), output_names=[out.op.name for out in model.outputs])
tf.train.write_graph(frozen_graph, "model", "tf_model.pb", as_text=False)

運(yùn)行成功后, 會(huì)在當(dāng)前目錄下生成一個(gè)model文件夾, 里面有生成的tf_model.pb文件, 至此, 我們就完成了將tf2.0下訓(xùn)練的模型轉(zhuǎn)到tf1.x下的pb模型, 這樣,就可以用這個(gè)pb模型做其它推理或者轉(zhuǎn)tvm ncnn等模型轉(zhuǎn)換工作.

這個(gè)轉(zhuǎn)換的重點(diǎn)就是通過keras這個(gè)中間商來完成, 所以我們定義的模型就必須要滿足這個(gè)中間商定義的條件

補(bǔ)充知識(shí):tensorflow2.0降級(jí)及如何從別的版本升到2.0

代碼實(shí)踐《tensorflow實(shí)戰(zhàn)GOOGLE深度學(xué)習(xí)框架》時(shí),由于本機(jī)安裝的tensorflow為2.0版本與配套書籍代碼1.4的API不兼容,只得將tensorflow降級(jí)為1.4.0版本使用,降級(jí)方法如下

1 pip uninstall tensorflow

2 pip install tensorflow==1.14.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

驗(yàn)證

import tensorflow as tf
print(tf.version)

二 從別的版本升級(jí)到2.0

自動(dòng)卸載與其相關(guān)包

pip uninstall tensorflow

安裝某版本

pip install --no-cache-dir tensorflow==x.xx (此處填寫2.0)

驗(yàn)證

以上這篇tensorflow 2.0模式下訓(xùn)練的模型轉(zhuǎn)成 tf1.x 版本的pb模型實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python和Excel的完美結(jié)合的常用操作案例匯總

    Python和Excel的完美結(jié)合的常用操作案例匯總

    這篇文章主要介紹了Python和Excel的完美結(jié)合的常用操作案例匯總,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • python實(shí)現(xiàn)將Word文檔中的文字轉(zhuǎn)換成語音的操作步驟

    python實(shí)現(xiàn)將Word文檔中的文字轉(zhuǎn)換成語音的操作步驟

    在Python中實(shí)現(xiàn)文字轉(zhuǎn)語音(Text-to-Speech, TTS)功能,能夠廣泛應(yīng)用于多種場(chǎng)景,如語音助手、有聲讀物、無障礙閱讀等,本文將結(jié)合具體案例,詳細(xì)介紹如何在Python中實(shí)現(xiàn)文字轉(zhuǎn)語音功能,需要的朋友可以參考下
    2024-08-08
  • Tensorflow中的圖(tf.Graph)和會(huì)話(tf.Session)的實(shí)現(xiàn)

    Tensorflow中的圖(tf.Graph)和會(huì)話(tf.Session)的實(shí)現(xiàn)

    這篇文章主要介紹了Tensorflow中的圖(tf.Graph)和會(huì)話(tf.Session)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python Pygame實(shí)戰(zhàn)之飛機(jī)大戰(zhàn)的實(shí)現(xiàn)

    Python Pygame實(shí)戰(zhàn)之飛機(jī)大戰(zhàn)的實(shí)現(xiàn)

    飛機(jī)大戰(zhàn)想必是很多人童年時(shí)期的經(jīng)典游戲,這篇文章主要給大家介紹了關(guān)于如何利用python中的Pygame模塊寫一個(gè)簡單的飛機(jī)大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 使用Python進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化的多種方法與技巧

    使用Python進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化的多種方法與技巧

    可視化是理解和解釋大量數(shù)據(jù)的強(qiáng)大工具之一,而Python作為一種流行的編程語言,提供了豐富的庫和工具來進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化,本文將介紹一些使用Python進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化的方法與技巧,并提供相應(yīng)的代碼實(shí)例,需要的朋友可以參考下
    2024-05-05
  • 關(guān)于Python八大排序?qū)崿F(xiàn)方法(冒泡排序、快速排序等)

    關(guān)于Python八大排序?qū)崿F(xiàn)方法(冒泡排序、快速排序等)

    這篇文章主要介紹了關(guān)于Python八大排序?qū)崿F(xiàn)方法,主要有基數(shù)排序、歸并排序、堆排序、簡單選擇排序、直接插入排序、希爾排序、快速排序、冒泡排序等,需要的朋友可以參考下
    2023-03-03
  • 打包遷移Python?env環(huán)境的三種方法總結(jié)

    打包遷移Python?env環(huán)境的三種方法總結(jié)

    平常工作中可能遇到python虛擬環(huán)境遷移的場(chǎng)景,總結(jié)了如下幾個(gè)方法,下面這篇文章主要給大家介紹了關(guān)于打包遷移Python?env環(huán)境的三種方法,需要的朋友可以參考下
    2024-08-08
  • Python YAML文件的讀寫操作詳解

    Python YAML文件的讀寫操作詳解

    這篇文章主要介紹了Python讀寫yaml文件,yaml 是專門用來寫配置文件的語言,非常簡潔和強(qiáng)大,之前用ini也能寫配置文件,有點(diǎn)類似于json格式,下面關(guān)于Python讀寫yaml文件的詳細(xì)資料,需要的小伙伴可以參考一下
    2022-08-08
  • pyqt5-tools安裝失敗的詳細(xì)處理方法

    pyqt5-tools安裝失敗的詳細(xì)處理方法

    最近在工作中遇到一個(gè)問題,python?pyqt5在安裝的時(shí)候居然提示失敗了,無奈只能找解決的辦法,這篇文章主要給大家介紹了關(guān)于pyqt5-tools安裝失敗的詳細(xì)處理方法,需要的朋友可以參考下
    2022-05-05
  • Python網(wǎng)絡(luò)爬蟲信息提取mooc代碼實(shí)例

    Python網(wǎng)絡(luò)爬蟲信息提取mooc代碼實(shí)例

    這篇文章主要介紹了python網(wǎng)絡(luò)爬蟲與信息提取mooc,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論