Mit if-Bedingungen in einem TensorFlow-Diagramm

m Tensorflow CIFAR-Lernprogram im cifar10_inputs.py Zeile 174 Es wird gesagt, dass Sie die Reihenfolge der Operationen random_contrast und random_brightness für eine bessere Datenvergrößerung zufällig anordnen sollten.

Um dies zu tun, zeichne ich zunächst eine Zufallsvariable aus der Gleichverteilung zwischen 0 und 1: p_order. Und TU

if p_order>0.5:
  distorted_image=tf.image.random_contrast(image)
  distorted_image=tf.image.random_brightness(distorted_image)
else:
  distorted_image=tf.image.random_brightness(image)
  distorted_image=tf.image.random_contrast(distorted_image)

s gibt jedoch zwei mögliche Optionen, um p_order zu erhalten:

1) Verwenden von Numpy, was mich nicht zufrieden stellt, da ich reines TF wollte, und dass TF seinen Benutzer davon abhält, Numpy und Tensorflow zu mischen

2) Mit TF kann p_order jedoch nur in einer tf.Session () ausgewertet werden. Ich weiß nicht genau, ob ich das tun soll:

with tf.Session() as sess2:
  p_order_tensor=tf.random_uniform([1,],0.,1.)
  p_order=float(p_order_tensor.eval())

Alle diese Operationen befinden sich im Hauptteil einer Funktion und werden von einem anderen Skript ausgeführt, das eine andere Sitzung / ein anderes Diagramm hat. Oder ich könnte das Diagramm aus dem anderen Skript als Argument an diese Funktion übergeben, aber ich bin verwirrt. Sogar die Tatsache, dass Tensorflow-Funktionen wie diese oder Inferenz zum Beispiel den Graphen global zu definieren scheinen, ohne ihn explizit als Ausgabe zurückzugeben, ist für mich ein bisschen schwer zu verstehen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage