2017-04-11 4 views
1

Hallo ich laufe durch die /models-master/tutorials/image/cifar10 Beispiele von google https://github.com/tensorflow/models zur Verfügung gestellt.pudb debuggen mit tensorflow argv

Ich führe Tensorflow-1.0.1 und Python 3.5 in einem virtuellen env.

Von der Befehlszeile, und in der virtualenv, Running: python3 cifar10_train.py Funktioniert gut.

Aber wenn ich versuche: pudb3 cifar10_train.py

ich diesen Fehler:

Traceback (most recent call last):
File "~/interpreters/p35/lib/python3.5/site-packages/tensorflow/python/platform/app.py", line 44, in run
_sys.exit(main(_sys.argv[:1] + flags_passthrough))
TypeError: main() takes 0 positional arguments but 1 was given

die args Überprüfung ergibt:

print (_sys.argv[:1])
['cifar10_train.py']
print (flags_passthrough)
[ ]

Ich weiß pudb im gleichen virtualenv ist Das führt den Code von der Befehlszeile aus, während Puddb durch die Tensorflow-Importfeingabe geht, und der virtualenv ist die einzige Position, in der sich das Tensorflow-Paket befindet.

Ich gehe davon aus das einige Problem ist zwischen einigen Schicht pudb mit vorbei führt ... nicht für immer durch diese eine schnelle Anregung jemand ... Ich möchte nur Schritt durch den Code :)

Danke,

nt

+0

Auch das Hinzufügen einer print-Anweisung zu cifar10_train.py und die erneute Ausführung (erfolgreich) von der Befehlszeile zeigt, dass main dieselben Argumente erhält wie in pudb. – alphaXed

Antwort

0

ich das gleiche Problem gestoßen sind, wenn pudb und TensorFlow verwenden. Es hat mit den tf.flags zu tun. Ich benutze nur Pythons Argarse-Klasse und nicht tf.flags.

Als Alternative glaube ich, dass Sie die tf.flags so lassen können, wie sie sind und fügen Sie einfach from pudb import set_trace; set_trace() in Ihrem Code nach dem Tensorflow-Import hinzu. Rufen Sie Ihr Skript als python script.py ohne -m pudb und es sollte nicht ausflippen.

0

vegas Vorschläge arbeiteten ... danke. Ich würde Ihren Kommentar bewerten, aber ich habe eine rep von < 15 ... bekomme sonst was ist neu :)

So wie pro vega ...

inklusive „von pudb Import set_trace“ nach dem "import Tensorflow als tf" Anweisung. Dann fügte set_trace() wie folgt ...

def main(argv=None): # pylint: disable=unused-argument 
    cifar10.maybe_download_and_extract() 
    if tf.gfile.Exists(FLAGS.train_dir): 
    tf.gfile.DeleteRecursively(FLAGS.train_dir) 
    tf.gfile.MakeDirs(FLAGS.train_dir) 
    train() 


if __name__ == '__main__': 
    set_trace()  
    tf.app.run() 

aufgerufen, das Skript von der Kommandozeile: python3 cifar10_train.py

Und es funktionierte wie gewünscht.

PuDB sieht so aus, als wäre es ein großartiges Werkzeug.