Nachdem ich viele Python-Skripte mit den gleichen Tensorflow-FLAGS verwendet hatte, war ich es leid, mehrere Flags für jede Änderung zu aktualisieren und beschloss daher, tf.app.flags
in eine separate Klasse umzuwandeln, die ich in Skripten wiederverwenden konnte.Refactoring Tensorflow FLAGS
Allerdings, aus irgendeinem seltsamen Grund, wenn ich self.flags
in einer anderen Methode verwenden, kann es ein zuvor gesetztes Flag nicht erkennen. Die folgende Klasse zum Beispiel wird für Flag project_dir2
gut funktionieren, aber für Flag project_dir3
`class MyClass():
def __init__(self):
self.flags = tf.app.flags
self.FLAGS = self.flags.FLAGS
#test code that works here
self.flags.DEFINE_string("project_dir2", "aValue", "project directory")
print("This will print correctly: "+self.FLAGS.project_dir2)
self.my_function()
def my_function(self):
#test code that fails
self.flags.DEFINE_string("project_dir3", "aValue", "project directory")
print("This will fail: "+self.FLAGS.project_dir3)`
ich die folgende Ausnahme scheitern erhalten:
AttributeError: project_dir2 Exception TypeError: TypeError("'NoneType' object is not callable",) in <function _remove at 0x7fd4c3090668> ignored
Gibt es etwas offensichtlich, dass ich falsch mache? Oder ist das mit Tensorflow-Flaggen einfach nicht möglich? Bedeutet dies, dass es keine Möglichkeit gibt, häufig verwendete Flag-Einstellungen in Skripten zu refactorisieren?
Vielen Dank! ! ! Funktioniert jetzt perfekt. Du bist gerade dabei, mir einige Stunden Arbeit zu ersparen :-) Prost – user1400916