私はTensorFlowメタグラフとして再トレーニングされたInceptionV3 NNを正常にエクスポートしました。私はこのprotobufをPythonに戻して読みましたが、TensorFlowの外側にあるnnを再作成するために、メタグラフのprotobuf内に格納されていると仮定して、各レイヤーのウェイトとバイアスの値をエクスポートする方法を見て苦労しています。訓練されたメタグラフからの重みとバイアス
私のワークフローは、次のような次のとおりです。ここから
Retrain final layer for new categories
Export meta graph tf.train.export_meta_graph(filename='model.meta')
Build python pb2.py using Protoc and meta_graph.proto
Load Protobuf:
import meta_graph_pb2
saved = meta_graph_pb2.CollectionDef()
with open('model.meta', 'rb') as f:
saved.ParseFromString(f.read())
私はノード名と、そのような同じように、グラフのほとんどの側面を見ることができますが、私は私の経験不足は、それが困難に正しい方法を追跡するために作っていると思います関連する各レイヤーのウェイト値とバイアス値にアクセスします。
ありがとう、これは大きな助けです。私は訓練されたネットワークを再作成し、この新しい[iOSの例](https://developer.apple.com/library/prerelease/content/samplecode/MetalImageRecognition/Introduction/Intro.html)のように展開しようとしています。あなたの専門知識を考えれば、ネットワークパラメータ(浮動小数点配列としての各レイヤの重みとバイアスのバイナリ.datファイル)を確立するための正しい方法でしょうか?最終的な目標は、TensorFlow訓練されたネットワーク、金属の推論です。 –
ええと、それはネットワークの複雑さによって決まります。チェックポイント(例えば、 'tf.train.NewCheckpointReader() 'を使って)を直ちに実行し、' MetaGraphDef'をバイパスしてチェックポイントファイルからNumPy配列を読み出すことができます。確かに、iOSプログラムで 'CheckpointReader'のC++実装を使用することもできます(もしリンクがいかに難しいのか分かりませんが)。 – mrry
'tf.train.NewCheckpointReader()は素晴らしいAPIです。上記のdatファイルに格納されている配列を再作成したいと考えているinception_v3チェックポイントをロードしました。彼らがネットワークパラメータをどのように生成しているかに関して、私のための切断があります。ネットワークパラメータとして190ファイル(1つのバイアス、各ノードにつき1つのウェイトファイル)をロードしますが、TFは開始モデルのために1200を超える格納変数を持っています。ギャップを埋めるための指針は? –