2017-10-07 3 views
0

bekomme ich eine Grafik-Datei (pb-Datei) verwende, das Ziel dieses Tensorflow Modell istTensorflow: Vorhersage aus Diagramm-Datei (.pb Datei)

i einen Code entwickelt haben, eine Vorhersage über bestimmte Bild zu liefern diese geladene Grafikdatei, aber ich kann Sitzung nicht Stat. die Dateien verfügbar sind: -

  • training_model_saved_model.pb
  • Variablen
    • training_model_variables_variables.data-00000-of-00001
    • training_model_variables_variables.index

die Ausgabe ist Fehler enthält eine große Liste des Modells layer.what i in diesem Fall tun kann, ist jede Hilfe

dies den Code i

import tensorflow as tf 
import sys 
import os 



import matplotlib.image as mpimg 
import matplotlib.pyplot as plt 


from tensorflow.core.protobuf import saved_model_pb2 
from tensorflow.python.util import compat 
from tensorflow.python.platform import gfile 

export_dir = os.path.join("./", "variables/") 
filename = "imgpsh_fullsize.jpeg" 
raw_image_data = mpimg.imread(filename) 

g = tf.Graph() 
with tf.Session(graph=g) as sess: 
    model_filename ='training_model_saved_model.pb' 
    with gfile.FastGFile(model_filename, 'rb') as f: 

     data = compat.as_bytes(f.read()) 
     sm = saved_model_pb2.SavedModel() 
     sm.ParseFromString(data) 
     #print(sm) 
     if 1 != len(sm.meta_graphs): 
       print('More than one graph found. Not sure which to write') 
       sys.exit(1) 

     image_input= tf.import_graph_def(sm.meta_graphs[0].graph_def,name='',return_elements=["input"]) 
     #print(image_input) 
     #saver = tf.train.Saver() 
     saver = tf.train.import_meta_graph(sm.meta_graphs[0].graph_def) 
     ''' 
     print(image_input) 

     x = g.get_tensor_by_name("input:0") 

     print(x) 
     ''' 
     saver.restore(sess,model_filename) 

     predictions = sess.run(feed_dict={image: raw_image_data}) 
     print('###################################################') 
     print(predictions) 

Fehler vorhanden ist, das Modell zu laden verwenden geschätzt/run

Traceback (most recent call last): 
    File "model_Input-get.py", line 35, in <module> 
    saver = tf.train.import_meta_graph(sm.meta_graphs[0].graph_def) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.py", line 1691, in import_meta_graph 
    meta_graph_def = meta_graph.read_meta_graph_file(meta_graph_or_file) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/meta_graph.py", line 553, in read_meta_graph_file 
    if not file_io.file_exists(filename): 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/lib/io/file_io.py", line 252, in file_exists 
    pywrap_tensorflow.FileExists(compat.as_bytes(filename), status) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/compat.py", line 65, in as_bytes 
    (bytes_or_text,)) 
TypeError: Expected binary or unicode string, got node { 
    name: "input" 
    op: "Placeholder" 
    attr { 
    key: "_output_shapes" 
    value { 
     list { 
     shape { 
      dim { 
      size: -1 
      } 
     } 
     } 
    } 
    } 
    attr { 
    key: "dtype" 
    value { 
     type: DT_STRING 
    } 
    } 

Antwort

0

Sie scheinen das TensorFlow Serving SavedModel Format mit der normalen TensorFlow Export/Restore Funktionalität zu mischen.

Dies ist ein besonders verwirrender Teil der TensorFlow-Codebasis, da dieses Format beim ersten Erscheinen nicht gut dokumentiert war - und es gibt nicht viele Beispiele, die zeigen, wann dieses Format gegenüber dem ursprünglichen Format verwendet werden muss.

Mein Vorschlag ist, entweder 1) zu TF Serving zu wechseln und das SavedModel-Format weiter zu verwenden oder 2) sich an das ursprüngliche Export/Restore-Modell-Format zu halten.

+0

Ich fühle mich verloren bei der Wiederherstellung der GraphFile. i verwendet, um die SavedModel, weil, wenn ich das versuchen ' graph_def = tf.GraphDef() graph_def.ParseFromString (f.read()) g_in = tf.import_graph_def (graph_def) ' i bekommen protobuf.message.DecodeError –

+0

Was schlagen Sie für eine Bearbeitung im Code vor, können Sie bitte weitere Details angeben. was meinst du mit wechseln zu TF Serving, hörte ich über bazel wie man das hier anwendet –

Verwandte Themen