Ich trainiere ein multi-objektives neuronales Netz in TensorFlow mit meiner eigenen Verlustfunktion und finde keine Dokumentation darüber, wie Batching mit dieser Funktionalität interagiert.Wie interagiert die Stapelverarbeitung mit der Verlustfunktion in TensorFlow?
Zum Beispiel habe ich unter Snippet meiner Verlust-Funktion, die den Tensor/Liste der Prognosen nimmt und stellt sicher, dass ihre absolute Wert Summen nicht mehr als ein:
def fitness(predictions,actual):
absTensor = tf.abs(predictions)
sumTensor = tf.reduce_sum(absTensor)
oneTensor = tf.constant(1.0)
isGTOne = tf.greater(sumTensor,oneTensor)
def norm(): return predictions/sumTensor
def unchanged(): return predictions
predictions = tf.cond(isGTOne,norm,unchanged)
etc...
Aber wenn ich bin in einer Reihe von Schätzungen passiert, ich fühle mich wie diese Verlustfunktion normalisiert den gesamten Satz von Eingaben an diesem Punkt zu 1 zu summieren, anstatt jeden einzelnen Satz zu 1 summieren. Dh
[[.8, .8], [. 8, .8]] -> [[.25, .25], [. 25,25]]
anstelle der gewünschten
[[.8, .8], [. 8, .8]] -> [[.5, .5], [. 5, .5]]
Kann jemand meinen Verdacht klären oder ruhen lassen? Wenn meine Funktion gerade funktioniert, wie kann ich das ändern?
Das ist perfekt. Vielen Dank. Gibt es irgendwo in der Dokumentation, die über dieses Verhalten spricht? Ich würde gerne lesen, wenn es nichts Unerwartetes mehr gibt. – liqiudilk
Welches Verhalten haben Sie besonders gesucht? Die [tf.select docs] (https://www.tensorflow.org/api_docs/python/control_flow_ops/comparison_operators#select) ist nützlich. – suharshs