2017-06-14 12 views
0

Mein Problem ist wie folgt:Warum hat die TensorFlow-Teilung keinen Achsenparameter?

wenn ich will eine Matrix mit einem Vektor in Spaltenachse zu unterteilen, sondern liefert nur TensorFlow Zeilenteilung, wenn A eine Matrix mit [n,n]v Form und einen Vektor mit [1,n] Form.

Meine Lösung war:

tf.transpose(tf.div(tf.transpose(A), v)) 

ich das versucht, aber es nicht funktioniert hat:aktualisieren: Es funktioniert!

tf.div(A, tf.transpose(v)) 

Also meine Frage ist, ob es eine effizientere Lösung für dieses Problem gibt.

Antwort

1

Ihre zweite Lösung mit A/tf.transpose(v) sollte funktionieren. tf.div() hat keinen Achsenparameter, da "x/y elementweise teilt". Beide Tensoren sollten also die gleichen Abmessungen haben.

In Ihrem Fall funktioniert es mit verschiedenen Dimensionen, weil tf.div supports broadcasting. Mehr über Rundfunk ist here.

Auch es ist so effizient wie es sein könnte, so dass Sie nichts anderes suchen müssen.

+0

Hallo! Vielen Dank für deine Antwort. Ich habe den Fehler bereits korrigiert. Es wurde erzeugt, weil ich 'v' als 'tf.reduce_sum (A, 1)' definiere, das den 1D-Tensor zurückgegeben hat, so dass es nicht transponierbar war. Mit 'tf.reduce_sum (A, 1, keep_dimens = True)' wird der 2D-Tensor zurückgegeben, der transponierbar ist. – garciparedes

Verwandte Themen