1

Mit pete warden Tutorials ich mit dem Beginn Netzwerk und die Ausbildung von denen trainiert hatte ich bin immer zwei Dateien

1.retrained_graph.pb
2.retrained_label.txtWie retrained_graph.pb laden und retrained_label.txt PyCharm Editor

Mit diesem wollte ich das Blumenbild klassifizieren. Ich hatte installieren pycharm und verknüpft alle Tensorflow-Bibliothek, ich hatte auch den Beispiel Tensorflow-Code testen es funktioniert gut.

Nun, wenn ich starten Sie das Programm, das label_image.py

ist
import tensorflow as tf, sys 

image_path = sys.argv[1] 

# Read in the image_data 
image_data = tf.gfile.FastGFile(image_path, 'rb').read() 

# Loads label file, strips off carriage return 
label_lines = [line.rstrip() for line 
        in tf.gfile.GFile("/tf_files/retrained_labels.txt")] 

# Unpersists graph from file 
with tf.gfile.FastGFile("/tf_files/retrained_graph.pb", 'rb') as f: 
    graph_def = tf.GraphDef() 
    graph_def.ParseFromString(f.read()) 
    _ = tf.import_graph_def(graph_def, name='') 

with tf.Session() as sess: 
    # Feed the image_data as input to the graph and get first prediction 
    softmax_tensor = sess.graph.get_tensor_by_name('final_result:0') 

    predictions = sess.run(softmax_tensor, \ 
      {'DecodeJpeg/contents:0': image_data}) 

    # Sort to show labels of first prediction in order of confidence 
    top_k = predictions[0].argsort()[-len(predictions[0]):][::-1] 

    for node_id in top_k: 
     human_string = label_lines[node_id] 
     score = predictions[0][node_id] 
     print('%s (score = %.5f)' % (human_string, score)) 

Ich erhalte diese Fehlermeldung

/home/chandan/Tensorflow/bin/python /home/chandan/PycharmProjects/tf/tf_folder/tf_files/label_image.py 
Traceback (most recent call last): 
     File "/home/chandan/PycharmProjects/tf/tf_folder/tf_files/label_image.py", line 7, in <module> 
     image_path = sys.argv[1] 
    IndexError: list index out of range 

Könnte jemand bitte mich mit diesem Problem helfen.

Antwort

0

Sie erhalten diese Fehlermeldung, weil es Bild Name erwartet (mit Pfad) als Argument.

In pycharm gehen Sie zu Ansicht-> Werkzeugfenster-> Terminal.

Es ist das gleiche wie das Öffnen der separaten Klemme. Und laufen

python label_image.py /image_path/image_name.jpg 
0

Sie versuchen, das Befehlszeilenargument zu erhalten, indem Sie sys.argv[1] aufrufen. Daher müssen Sie Befehlszeilenargumente angeben, um sie zu erfüllen. Das Argument, das benötigt wird, ist ein Testbild. Sie sollten den Speicherort als Parameter übergeben.

Pycharm sollte einen Dialog für Skriptparameter und Interpreteroptionen haben, mit dem Sie die erforderlichen Parameter eingeben können.

Oder Sie können das Skript über eine Befehlszeile aufrufen und den Parameter über eingeben;

>python my_python_script.py my_python_parameter.jpg 

EDIT:

Nach dem documents (ich habe nicht PyCharm auf diesem Computer installiert ist), sollten Sie Run/Debug-Konfiguration Menü gehen und bearbeiten Sie die Konfigurationen für dein Skript. Fügen Sie den absoluten Pfad Ihrer Datei in Skriptparameter Box in Anführungszeichen.

Oder alternativ, wenn Sie die Parameter Sache ganz einfach überspringen wollen, nur um den Pfad als raw_input (input in python3) oder einfach nur geben Sie es an image_path = r"absolute_image_path.jpg"

+0

könnten Sie mir bitte helfen Befehl übergeben, die „Python /tf_files/label_image.py /tf_files/flower_photos/daisy/21652746_cc379e0eea_m.jpg“ durch PyCharm ist – Chandan

+0

@Chandan Ich habe nicht PyCharm installiert, aber edited die Antwort von dem, was ich im Internet sehen kann. Überprüfe es bitte. – umutto