Si tensorflow.saved_model.save
guardo mi modelo usando la función en formato Guardado, ¿cómo puedo recuperar qué Tensorflow Ops se utilizan en este modelo después? Como el modelo se puede restaurar, estas operaciones se almacenan en el gráfico, supongo que está en el saved_model.pb
archivo. Si cargo este protobuf (por lo tanto, no todo el modelo), la parte de la biblioteca del protobuf enumera estos, pero esto no está documentado y etiquetado como una característica experimental por ahora. Los modelos creados en Tensorflow 1.x no tendrán esta parte.
Entonces, ¿cuál es una forma rápida y confiable de recuperar una lista de Operaciones usadas (Me gusta MatchingFiles
o WriteFile
) de un modelo en formato GuardadoModelo?
Ahora mismo puedo congelar todo, como lo tensorflowjs-converter
hace. Como también verifican las operaciones compatibles. Actualmente, esto no funciona cuando hay un LSTM en el modelo, vea aquí . ¿Hay una mejor manera de hacer esto, ya que los Ops definitivamente están ahí?
Un modelo de ejemplo:
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')
Se espera en la salida todas las operaciones, que contienen en este caso al menos:
ReadFile
como se describe aquí- ...
saved_model
variable en tu último ejemplo? El resultado de tf.saved_model.load('/path/to/model')
o cargando el protobuf del archivo saved_model.pb.
saved_model.pb
, ¿estf.GraphDef
unSavedModel
mensaje de protobuf? Si tiene unatf.GraphDef
llamadagd
, puede obtener la lista de operaciones usadas consorted(set(n.op for n in gd.node))
. Si tiene un modelo cargado, puede hacerlosorted(set(op.type for op in tf.get_default_graph().get_operations()))
. Si es unSavedModel
, puede obtenerlotf.GraphDef
(psaved_model.meta_graphs[0].graph_def
. Ej .).