Funktioniert das?
import tensorflow as tf
import numpy as np
N = 10
T = 20
l = tf.constant(np.random.randn(1, N), dtype=tf.float32)
z = tf.constant(np.random.randn(N, T), dtype=tf.float32)
with tf.Session() as sess:
# swap axis for broadcasting to work
l = tf.transpose(l, [1, 0])
z_div_l = tf.divide(z, l)
z_div_l_2 = tf.divide(1.0 - z, 1.0 - l)
result = tf.reduce_sum(tf.add(z_div_l, z_div_l_2), axis=0)
eval_result = sess.run(result)
print('{}\n{}'.format(eval_result.shape, eval_result))
Dies berechnet den obigen Ausdruck für jeden t
von 0 bis T-1, so ist es nicht ein Skalar, sondern ein Vektor der Größe (T,)
. Ihre Frage erwähnt, dass Sie nur einen Skalar berechnen möchten, aber die Summe ist nur über N
und nicht über T
, also nahm ich an, dass Sie möchten, dass dieser Ausdruck für jede t
ausgewertet wird.
Habe ich richtig verstanden, dass Sie möchten, dass dies ein Einzeiler ist? – kaufmanu
Nicht unbedingt. Es muss nicht "eine Reduzierungsfunktion" sein. Ich werde diesen Teil bearbeiten. Jede Lösung ist willkommen! – alpaca