如何对未知维度的TensorFlow矩阵进行元素求和?
解决方案:TensorFlow任意维度矩阵全局求和
嘿,这个需求其实超简单!TensorFlow里刚好有个直接对应MATLAB sum(m(:)) 的操作,完全不用手动循环维度~
核心方法:tf.reduce_sum() 不带axis参数
当你调用 tf.reduce_sum(m) 且不指定axis参数时,它会默认对张量的所有维度进行求和,不管输入是1维、2维还是任意D维,效果和MATLAB里的 sum(m(:)) 完全一致。
代码示例
import tensorflow as tf # 生成不同维度的测试矩阵 # 3维矩阵 m_3d = tf.keras.backend.random_normal([2, 3, 4], mean=6, stddev=0.1, seed=1) # 1维矩阵 m_1d = tf.keras.backend.random_normal([3], mean=6, stddev=0.1, seed=1) # 2维矩阵 m_2d = tf.keras.backend.random_normal([3, 7], mean=6, stddev=0.1, seed=1) # 全局求和操作 sum_3d = tf.reduce_sum(m_3d) sum_1d = tf.reduce_sum(m_1d) sum_2d = tf.reduce_sum(m_2d) # 输出结果(TensorFlow 2.x可直接用.numpy()转成数值) print("3维矩阵求和结果:", sum_3d.numpy()) print("1维矩阵求和结果:", sum_1d.numpy()) print("2维矩阵求和结果:", sum_2d.numpy())
补充说明
如果好奇想获取张量的维度数,可以用 tf.rank(m) 得到,但对于全局求和这个需求来说完全没必要——tf.reduce_sum 已经帮我们处理了所有维度的情况,不用手动循环去逐维求和。
内容的提问来源于stack exchange,提问作者Nick X Tsui
相关产品推荐
相关产品推荐

