减少 Tensorflow 中的两个张量
Reducing two tensors in Tensorflow
我有两个张量。
- 形状为 (1,N)
的张量
- 形状为 (N,T)
的张量
我要计算的是以下标量:
tf.reduce_sum
似乎很有帮助,但我无法将两个张量和约简函数结合起来以获得我想要的结果。谁能帮我把上面的等式写成 tensorflow
?
这个有用吗?
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))
这对从 0 到 T-1 的每个 t
计算上述表达式,因此它不是标量而是大小为 (T,)
的向量。你的问题提到你只想计算一个标量,但总和只超过 N
而不是 T
,所以我假设你只是想为每个 t
计算这个表达式。
我有两个张量。
- 形状为 (1,N) 的张量
- 形状为 (N,T) 的张量
我要计算的是以下标量:
tf.reduce_sum
似乎很有帮助,但我无法将两个张量和约简函数结合起来以获得我想要的结果。谁能帮我把上面的等式写成 tensorflow
?
这个有用吗?
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))
这对从 0 到 T-1 的每个 t
计算上述表达式,因此它不是标量而是大小为 (T,)
的向量。你的问题提到你只想计算一个标量,但总和只超过 N
而不是 T
,所以我假设你只是想为每个 t
计算这个表达式。