Skip to main content
 首页 » 编程设计

python之减少 Tensorflow 中的两个张量

2025年02月15日26wayfarer

我有两个张量。

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

我要计算的是以下标量:

\sum_{n=1}^N

tf.reduce_sum 似乎很有帮助,但我无法将两个张量和 reduce 函数结合起来以获得我想要的结果。有人可以帮我如何在 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.