Ein offizielles Tutorial zu @tf.functionsagt:
Verwenden Sie tf.function, um Diagramme aus Ihren Programmen zu erstellen, um Spitzenleistungen zu erzielen und Ihr Modell überall einsetzbar zu machen. Dank AutoGraph funktioniert eine überraschende Menge an Python-Code nur mit tf.function, aber es gibt immer noch Fallstricke, vor denen man sich hüten muss.
Die wichtigsten Erkenntnisse und Empfehlungen sind:
- Verlassen Sie sich nicht auf Python-Nebenwirkungen wie Objektmutation oder Listenanhänge.
- tf.function funktioniert am besten mit TensorFlow-Ops und nicht mit NumPy-Ops oder Python-Primitiven.
- Verwenden Sie im Zweifelsfall das for x in y-Idiom.
Es wird nur erwähnt, wie@tf.function kommentierte Funktionen implementiert werden, nicht jedoch, wann sie verwendet werden sollen.
Gibt es eine Heuristik, wie man entscheidet, ob ich zumindest versuchen soll, eine Funktion mit Anmerkungen zu versehen tf.function? Es scheint, dass es keine Gründe gibt, es nicht zu tun, es sei denn, ich bin zu faul, um Nebenwirkungen zu entfernen oder einige Dinge wie range()-> zu ändern tf.range(). Aber wenn ich dazu bereit bin ...
Gibt es einen Grund, nicht @tf.functionfür alle Funktionen zu verwenden?
tf.functionAnleitung "Dekorieren Sie Funktionen auf Modulebene und Methoden von Klassen auf Modulebene und vermeiden Sie das Dekorieren lokaler Funktionen oder Methoden". Ich scheine mich an explizitere Formulierungen zu erinnern, wie "nicht jede Funktion dekorieren, tf.functionin übergeordneten Funktionen verwenden, wie eine Trainingsschleife", aber ich kann mich falsch erinnern (oder vielleicht wurde sie entfernt). OTOH, diese Diskussion hat interessante Beiträge von Entwicklern, am Ende scheint es in Ordnung zu sein, sie in etwa jeder Funktion für Tensoren / Vars zu verwenden.
@tf.functionkommentierte Funktionen kompilieren auch die Funktionen, die sie selbst für Diagramme aufrufen. Sie müssten also nur den Einstiegspunkt in das Modul mit Anmerkungen versehen, der mit Ihrer Beschreibung übereinstimmt. Es würde aber auch nicht schaden, Funktionen weiter unten im Aufrufstapel manuell zu kommentieren.
tf.functionBenutzer mehrmals aufgerufen wird, kann dies die "Codeduplizierung" in der Grafik nicht verhindern, weshalb eine weit verbreitete Verwendung empfehlenswert erscheint.
tensorflow0.1,tensorflow0.2,tensorflow0.3,tensorflow0.4,tensorflow0.5und so weiter, sowie ein Tag für jede diesertfModule und Klassen dann. Fügen Sie außerdem ein Tag für jedes Standardmodul von Python sowie für seine Funktionen und Klassen hinzu.