Wenn ich mein Modell mit der tensorflow.saved_model.saveFunktion im SavedModel-Format speichere, wie kann ich anschließend abrufen, welche Tensorflow-Operationen in diesem Modell verwendet werden? Da das Modell wiederhergestellt werden kann, werden diese Vorgänge im Diagramm gespeichert. Meine Vermutung liegt in der saved_model.pbDatei. Wenn ich diesen Protobuf lade (also nicht das gesamte Modell), listet der Bibliotheksteil des Protobuf diese auf, aber dies ist vorerst nicht dokumentiert und als experimentelle Funktion gekennzeichnet. In Tensorflow 1.x erstellte Modelle haben diesen Teil nicht.
Was ist also eine schnelle und zuverlässige Methode, um eine Liste der verwendeten Operationen (Like MatchingFilesoder WriteFile) von einem Modell im SavedModel-Format abzurufen?
Im Moment kann ich das Ganze einfrieren, so wie es tensorflowjs-convertertut. Da sie auch nach unterstützten Operationen suchen. Dies funktioniert derzeit nicht, wenn sich ein LSTM im Modell befindet (siehe hier) . Gibt es einen besseren Weg, dies zu tun, da die Ops definitiv da sind?
Ein Beispielmodell:
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')
Erwartet in der Ausgabe alle Operationen, die in diesem Fall mindestens Folgendes enthalten:
ReadFilewie hier beschrieben- ...
saved_modelVariable in Ihrem letzten Beispiel? Das Ergebnis tf.saved_model.load('/path/to/model')oder Laden des Protobufs der Datei saved_model.pb.
saved_model.pb, ist es einetf.GraphDefoder eineSavedModelProtobuf-Nachricht? Wenn Sietf.GraphDefangerufen habengd, können Sie die Liste der verwendeten Operationen mit abrufensorted(set(n.op for n in gd.node)). Wenn Sie ein geladenes Modell haben, können Sie dies tunsorted(set(op.type for op in tf.get_default_graph().get_operations())). Wenn es ein istSavedModel, können Sie dastf.GraphDefdavon bekommen (zBsaved_model.meta_graphs[0].graph_def).