减少Tensorflow中的两个张量

时间:2017-02-27 07:32:55

标签: python matrix tensorflow reduce

我有两个张量。

  1. 形状(1,N)的张量\sum_{n=1}^N
  2. 形状(N,T)的张量\sum_{n=1}^N
  3. 我想要计算的是以下标量:

    \sum_{n=1}^N

    tf.reduce_sum似乎很有帮助,但我无法理解两个张量的结合并减少功能以获得我想要的东西。有人可以帮助我如何在tensorflow中编写上述等式吗?

1 个答案:

答案 0 :(得分:1)

这有用吗?

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计算此表达式。