Jeśli tensorflow.saved_model.savezapiszę mój model za pomocą funkcji w formacie SavedModel, jak mogę pobrać, które operacje Tensorflow zostaną użyte w tym modelu później. Ponieważ model można przywrócić, operacje te są przechowywane na wykresie, domyślam się, że w saved_model.pbpliku. Jeśli załaduję ten protobuf (a więc nie cały model), część protobufa w bibliotece zawiera je, ale nie jest to na razie udokumentowane i oznaczone jako funkcja eksperymentalna. Modele utworzone w Tensorflow 1.x nie będą miały tej części.
Jaki jest zatem szybki i niezawodny sposób na uzyskanie listy używanych operacji (takich jak MatchingFileslub WriteFile) z modelu w formacie SavedModel?
W tej chwili mogę zamrozić wszystko, podobnie jak tensorflowjs-converterrobi. Sprawdzają również obsługiwane operacje. To obecnie nie działa, gdy LSTM jest w modelu, patrz tutaj . Czy istnieje lepszy sposób, aby to zrobić, ponieważ operatorzy zdecydowanie tam są?
Przykładowy model:
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')
Oczekiwano w wyniku wszystkich operacji, zawierających w tym przypadku co najmniej:
ReadFilejak opisano tutaj- ...
saved_modelzmienna w twoim ostatnim przykładzie? Wynik tf.saved_model.load('/path/to/model')lub ładowanie protobufa pliku save_model.pb.
saved_model.pbjesttf.GraphDef, czySavedModelwiadomość typu protobuf? Jeśli masztf.GraphDefsprawdzonegd, możesz uzyskać listę używanych operacji zsorted(set(n.op for n in gd.node)). Jeśli masz załadowany model, możesz to zrobićsorted(set(op.type for op in tf.get_default_graph().get_operations())). Jeśli jest toSavedModel, możesztf.GraphDefz niego uzyskać (npsaved_model.meta_graphs[0].graph_def.).