tensorflow.saved_model.save
SavedModel形式の関数を使用してモデルを保存した場合、このモデルで使用されているTensorflow Opsを後で取得するにはどうすればよいですか。モデルを復元できるので、これらの操作はグラフに保存されsaved_model.pb
ます。おそらくファイルにあると思います。このprotobuf(モデル全体ではない)をロードすると、protobufのライブラリ部分にこれらのリストが表示されますが、これはドキュメント化されておらず、現時点では実験的な機能としてタグ付けされていません。Tensorflow 1.xで作成されたモデルには、この部分はありません。
では、SavedModel形式のモデルから使用済みの操作(のようなMatchingFiles
またはWriteFile
)のリストを取得するための高速で信頼性の高い方法は何でしょうか。
今は、全部をフリーズできtensorflowjs-converter
ます。サポートされている操作も確認します。これは現在、LSTMがモデルにある場合は機能しません。こちらを参照してください。Opsは間違いなくそこにいるので、これを行うより良い方法はありますか?
モデルの例:
class FileReader(tf.Module):
@tf.function(input_signature=[tf.TensorSpec(name='filename', shape=[None], dtype=tf.string)])
def read_disk(self, file_name):
input_scalar = tf.reshape(file_name, [])
output = tf.io.read_file(input_scalar)
return tf.stack([output], name='content')
file_reader = FileReader()
tf.saved_model.save(file_reader, 'file_reader')
この場合、少なくとも以下を含むすべてのOpが出力で予期されます:
保存されたSavedModelからオペレーションを取得したい。実際、あなたが説明している最後のオプションです。
—
サンパー
saved_model
最後の例の変数は何ですか?tf.saved_model.load('/path/to/model')
saved_model.pbファイルのprotobuf の結果またはロード。
saved_model.pb
それはtf.GraphDef
、それともSavedModel
protobufメッセージですか?がtf.GraphDef
呼び出されている場合は、gd
を使用して使用中の演算のリストを取得できますsorted(set(n.op for n in gd.node))
。ロードされたモデルがある場合は、実行できますsorted(set(op.type for op in tf.get_default_graph().get_operations()))
。である場合は、SavedModel
それから取得できますtf.GraphDef
(例:)saved_model.meta_graphs[0].graph_def
。