2016-07-08 11 views
1

I verwendet tf.app.flags in meinem tensorflow Programm wie folgt aus:Fehler bei der Verwendung von tf.app.flags

flags = tf.app.flags 
FLAGS = flags.FLAGS 

flags.DEFINE_string('model_dir', './models','Save checkpoint') 
. 
. 
. 
if __name__ == "__main__":  
# main() 
    tf.app.run() 

Aber wenn mein Code zwei Mal ausführen macht es diesen Fehler:

ArgumentError: argument --model_dir: conflicting option string: --model_dir 

Ich denke, Tensorflow erzeugt ein Argument für --model_dir und wenn es erneut ausgeführt wird, wird versucht, erneut ein Argument für --model_dir zu erstellen, das jedoch durch das Vorhandensein von --model_dir in Konflikt steht.

gibt es keine Möglichkeit, zwei dieses Problem zu lösen, oder ich verwendete Python-Parameter gegen tf.app.falgs?

+0

Welches Modell versuchen Sie zu laufen? Ich vermute, dass du eines der Tutorials ausprobierst oder "imagenet/classify_image.py", das bereits ein Flag mit dem gleichen Namen definiert hat. – keveman

+0

Ich schreibe ein Modell für Kaggel Gesichtsausdruck.Ich lese einige Tutorials zum Lernen Tensorflow und Cnn. – Tavakoli

+0

Rechts. Was ich gefragt habe, ist, schreibst du dein Modell von Grund auf neu oder versuchst du, ein existierendes zu modifizieren? – keveman

Antwort

6

Meine Vermutung ist, dass Sie in einer Umgebung wie einem Jupyter/iPython-Notebook arbeiten.

Der Grund für dieses Problem ist, dass die Flags-Daten in der Python-Sitzung beibehalten werden. tf.app.flags.FLAGS.__getattr__('model_dir') ist gleich ./models, auch wenn Sie Ihre Variablen FLAGS zurücksetzen.

Wenn Sie ein Notebook verwenden, empfehle ich Ihnen, Ihre Flagdefinitionen in eine separate Zelle zu setzen. Die einzige Möglichkeit, tf.app.flags.FLAGS zu finden, besteht darin, den Kernel/die Sitzung neu zu starten.

+0

Könnten Sie das genauer erklären: ich hatte das gleiche Problem, kann aber nicht verstehen, wie ich es lösen soll. Auf dem Server sehe ich dieses Problem, aber auf dem lokalen PC funktioniert alles –

+0

Verwenden Sie ein Jupyter Notebook sowohl auf dem Server als auch auf Ihrem PC? Im Grunde, in Jupyter, wenn Sie tf.app.flags.FLAGS zweimal instanziieren, erhalten Sie einen Fehler. Wenn Sie es in eine eigene Zelle einfügen, können Sie den Rest Ihres Codes erneut ausführen, ohne ihn erneut zu instanziieren. – pbontrager

+0

Ich benutze Jupyter Notebook überhaupt nicht, also für mich das unpassend. Code auf lokalem PC und Server ist identisch, kein 2. Aufruf tf.app.flags.FLAGS. Wenn ja, was soll ich tun? –

0

Sie können wie folgt versuchen:

#define flags 
tf.flags.DEFINE_integer("age", 17, "age of user(default:20)") 
tf.flags.DEFINE_boolean("drink_allow", False, "if can drink or not(default:False)") 
tf.flags.DEFINE_float("weight", 55.55, "weight of user(default:55.55kg)") 

FLAGS = tf.flags.FLAGS #init flags 
FLAGS._parse_flags() # parse flags 

for attr,value in FLAGS.__flags.items(): 
    print("attr:%s\tvalue:%s" % (attr,str(value)))