Se salvo il mio modello utilizzando la tensorflow.saved_model.savefunzione nel formato SavedModel, come posso recuperare quali Tensorflow Ops vengono utilizzati in questo modello in seguito. Poiché il modello può essere ripristinato, queste operazioni sono memorizzate nel grafico, la mia ipotesi è nel saved_model.pbfile. Se carico questo protobuf (quindi non l'intero modello), la parte della libreria del protobuf li elenca, ma questo non è documentato e etichettato come funzionalità sperimentale per ora. I modelli creati in Tensorflow 1.x non avranno questa parte.
Quindi qual è un modo rapido e affidabile per recuperare un elenco di operazioni usate (come MatchingFileso WriteFile) da un modello in formato SavedModel?
In questo momento posso congelare l'intera cosa, come tensorflowjs-converterfa. Poiché controllano anche le operazioni supportate. Questo attualmente non funziona quando nel modello è presente un LSTM, vedere qui . C'è un modo migliore per farlo, dato che gli Ops sono sicuramente lì dentro?
Un modello di esempio:
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')
Attesi in uscita tutti gli Op, contenenti in questo caso almeno:
ReadFilecome descritto qui- ...
saved_modelvariabile nel tuo ultimo esempio? Il risultato tf.saved_model.load('/path/to/model')o il caricamento del protobuf del file saved_model.pb.
saved_model.pb, ètf.GraphDefunSavedModelmessaggio o un messaggio protobuf? Se haitf.GraphDefchiamatogd, puoi ottenere l'elenco delle operazioni usate consorted(set(n.op for n in gd.node)). Se hai un modello caricato, puoi farlosorted(set(op.type for op in tf.get_default_graph().get_operations())). Se è unSavedModel, puoi ottenerlotf.GraphDefda (ad esempiosaved_model.meta_graphs[0].graph_def).