Entwurfsmuster für Tensorflow-Modelle

9

Ich habe mehrere einfache Modelle erstellt, meistens basierend auf einigen Tutorials. Von dem, was ich getan habe, denke ich, dass Modelle ziemlich schwer wiederzuverwenden sind, und ich denke, dass ich eine Struktur mit Klassen erstellen muss, um die Modelle einzukapseln.

Was sind die "Standard" -Methoden zur Strukturierung von Tensorflow-Modellen? Gibt es Kodierungskonventionen / Best Practices dafür?

    
Konstantin Solomatov 24.04.2017, 04:12
quelle

1 Antwort

3

In allen Tensorflow-Beispielen und -Tutorials besteht das auffällige Muster zur Strukturierung von Modellcode darin, das Modell in drei Funktionen aufzuteilen:

  • inference(inputs, ...) , die das Modell
  • erstellt
  • loss(logits, ...) , die den Verlust über den Logits hinzufügt
  • train(loss, ...) fügt Trainingsoptionen hinzu

Wenn Sie ein Modell für das Training erstellen, sieht Ihr Code etwa so aus:

%Vor%

Dieses Muster wird beispielsweise für das CIFAR-10 Tutorial verwendet ( code <) / a>, Tutorial ).

Eine Sache, über die man stolpern könnte, ist die Tatsache, dass man (Python) Variablen nicht zwischen der inference und der loss Funktion teilen kann. Das ist jedoch kein großes Problem, da Tensorflow Diagrammsammlungen für genau diesen Anwendungsfall bereitstellt, was für einen viel saubereres Design (da Sie Ihre Sachen logisch gruppieren). Ein wichtiger Anwendungsfall hierfür ist die Regularisierung:

Wenn Sie das Modul layers verwenden (zB tf.layers.conv2d ) haben Sie bereits, was Sie brauchen, da alle Regularisierungsstrafen hinzugefügt werden ( Quelle ) standardmäßig zur Sammlung tf.GraphKeys.REGULARIZATION_LOSSES . Zum Beispiel, wenn Sie dies tun:

%Vor%

Ihr Verlust könnte dann so aussehen:

%Vor%

Wenn Sie das Schichtenmodul nicht verwenden, müssen Sie die Sammlung manuell auffüllen (genau wie im verknüpften Quellenschnipsel). Grundsätzlich möchten Sie die Strafen mit tf.add_to_collection zu der Sammlung hinzufügen:

%Vor%

Damit können Sie den Verlust einschließlich der Regularisierungsstrafen genau wie oben berechnen.

    
thertweck 24.04.2017 12:48
quelle

Tags und Links