Tensorflow Learning1モデルの保存と復元


CKPT-> PB

デモ

解決

差分テンソル名とノード名の

鉛回復



CKPT-> PB

tensorflow保存モデルは、2つの形式があります:

1. CKPT:マップを復元した変数は、訓練を行うことを続けることができます

2. PBは:;トレーニングを続けることができない変数のシーケンス図では,,あなただけの推論を行うことができます一定値となります


デモ


  1  DEF freeze_graph(input_checkpoint、output_graph):
   2  
  。3      '' '
   4      :PARAMのinput_checkpoint:
   5      :PARAMのoutput_graph:PBモデル記憶パス
   6リターン
  7        空隙
   8      ' ''
   9。 
10      #1 =チェックポイント(model_folder)をtf.train.get_checkpoint_state利用可能なディレクトリをチェックし、ファイルの状態かどうか#1 CKPT 
。11      ## input_checkpoint = checkpoint.model_checkpoint_path CKPT取得したファイルパス
12は、 
13であり、     #は、出力ノード名を指定して、ノードのノード名は、元のモデルに存在しなければならない
14      output_node_names = " InceptionV3 / logits / SpatialSqueeze#出力ノードの複数場合、 『数』の使用は、間隔をあけ
15 
16      ############################ステップ1:図はCKPTからの回復:############# ################################ 
。17      セーバー= tf.train.import_meta_graph(input_checkpoint + '.META'、clear_devices =真)
 18である      グラフ= tf.get_default_graph()図は、得られた#デフォルト、省略してもよい
。19      input_graph_def graph.as_graph_def =()  は、シーケンス図は、図1の電流を表し返す。、省略することができる
20である 
21である      (tf.Sessionで)セッション数AS :#図現在のデフォルトとして使用される
22は          セーバー。リストア(セッション数、input_checkpoint)回復位図のデータを得る。
23である 
24          ###################### ##ステップ2:セッション数、図を指定し、永続オブジェクトを作成し、ノード情報出力##############の配列
25         output_graph_def graph_util.convert_variables_to_constants =(  永続性モデルを、変数の固定値
26である              セッション数=セッション数、
 27              input_graph_def = input_graph_def、 に等しい:sess.graph_def 
28              。output_node_names = output_node_names スプリット( " ")) 出力ノードが複数ある場合カンマで区切られた29 ##############永続モデル:#########################ステップ3 ######################################### 30          tf.gfile.GFile(output_graphと、 " WB F AS"): は、モデルセーブ31がある              。F 書き込み(output_graph_def.SerializeToString()) シリアル化された出力32
         


         印刷"OPS の%D最終グラフ " %のLEN(output_graph_def.node)) 現在の操作は、図1の複数のノードを有し得る。
33である         (graph.get_operationsにOPため#):
34は、 
35          #プリント(op.name、OP .valuesは())
36  
37  
38れる ###########################呼び出さ############# ################### 
39  #CKPTモデル入力経路
40 input_checkpoint = 'モデル/ model.ckpt-10000'
 41れる パスPB出力モデル#
42は out_pb_path = " モデル/ PB / frozen_model.pb43  位freeze_graphがPBにCKPTう呼び出し
44 freeze_graph(input_checkpoint、out_pb_path)

解決

Freeze_graph機能は、最も重要なことは、「出力ノードの名前を」決定することである、ノード名がフリーズするオリジナルモデルのノードに存在する必要があり、我々は、出力ノードの名前を定義する必要があります。

硬化ダウン出力ノードにのみサブピクチャが必要な場合、無関係他方は破棄するフリーズ。私たちはモデルの目的を凍結するので、次の予測を行うことです。だから、output_node_namesノード名は、通常、最後のレイヤネットワークモデルの出力である、またはそれは我々がターゲットを予測するものです。

PBの保存するときは、指定したノード名convert_variables_to_constants機能によって硬化する必要があります。

差分テンソル名とノード名の

図のノード名は、操作及びテンソルの数を含むノードであります

テンソルは、ノードの内部の一部です。

入力には、例えば、「入力:0」は、テンソルの名前であり、「入力」は、ノードの名前を示します

PS:注テンソル名、即ち:ノード名+ ":" + "ID番号"、例えば、 "入力:0"


おすすめ

転載: www.cnblogs.com/greentomlee/p/11494383.html