2017-04-13 3 views
0

Nehmen wir an, dass x und y zwei N-dimensional Tensoren sind, wobei beide die gleichen Abmessungen haben und die erste Dimension die Größe S (die Stapelgröße) hat. Lassen Sie uns sagen b ein 1-dimensional Tensor booleans ist, der die Größe S.Umschalten zwischen den Tensoren in zwei separaten Stapeln

I z, ein N-dimensionalen Tensor definiert produzieren wollen als:

z[i] = b[i] ? x[i] : y[i] for i from 0 to (S-1) 

wo x[i] auf dem i-ten bezieht sich (N-1)-dimensional Scheibe x.

Was ist der einfachste Weg, dies zu tun? Ich dachte, tf.cond würde funktionieren, aber es akzeptiert nur skalarwertige Prädikate. Vielen Dank!

Antwort

0

tf.where sollte funktionieren und unterstützt diese Art der Ausstrahlung. Wenn Sie eine Batch-Version der bedingten Ausführung wünschen (bei der eine oder beide Zweige teuer zu berechnen sind), ist dies also possible.

+0

tf.where sieht perfekt aus, danke! Wissen Sie zufällig, ob es eine Variante dieser Funktion gibt, die auf mehr als zwei Arten verzweigt? –

+0

Sie können die Tensoren, zwischen denen Sie verzweigen möchten, 'tfstack'n und dann' tf.gather', um zwischen ihnen zu wählen. –

+0

Ich werde sehen, ob das funktioniert, danke für Ihre Hilfe! –

Verwandte Themen