2017-02-27 113 views
2

我有两个张量。在Tensorflow中减少两个张量

  1. 甲张量形状的\sum_{n=1}^N(1,N)
  2. 甲张量形状的\sum_{n=1}^N(N,T)

我想要计算如下标量:

\sum_{n=1}^N

tf.reduce_sum似乎有帮助,但我无法把我的头结合两张张,并减少功能,以得到我想要的。有人可以帮助我如何在tensorflow中写上述方程吗?

+0

我理解你是否希望这是一个单线程吗? – kaufmanu

+0

不一定。它不一定是“一个减少功能”。我将编辑该部分。欢迎任何解决方案! – alpaca

回答

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)) 

此计算每t从0到T-1的上述表达式中,因此它不是一个标量,但尺寸(T,)的向量。你的问题提到你只想计算一个标量,但总和只是超过N而不是超过T,所以我假设你只是想每个t都要评估这个表达式。