Skip to main content
 首页 » 编程设计

python之如何在 TensorFlow 中迭代张量的元素

2025年02月15日26lidabo

我编写了一个神经网络,它为每个输入样本返回一个包含 3 个数字的列表。然后从实际值中减去这些值以获得差值。

例如,

actual    = [1,2,3]   
predicted = [0,0,1]   
diff      = [1,2,2]  

所以我的张量现在的形状是 [batch_size, 3] 我想做的是迭代张量元素来构造我的损失函数。
例如,如果我的 batch_size 是 2 最后

diff = [[a,b,c],[d,e,f]]  

我希望损失是

Loss = mean(sqrt(a^2+b^2+c^2), sqrt(d^2+e^2+f^2))   

我知道 TensorFlow 有一个 tf.nn.l2_loss()计算整个张量的 L2 损失的函数。但我想要的是张量元素沿某个轴的 l2 损失的平均值。
我该怎么做?

请您参考如下方法:

您可以使用 tf.sqrt其次是 tf.reduce_sum和 tf.reduce_mean . tf.reduce_sum 和 tf.reduce_mean 都有一个 axis 参数,指示要减少哪些维度。

更多归约操作,见https://www.tensorflow.org/api_guides/python/math_ops#Reduction