【问题标题】:How to iterate over the elements of a tensor in TensorFlow?如何在 TensorFlow 中迭代张量的元素?
【发布时间】:2017-03-05 17:06:57
【问题描述】:

我编写了一个神经网络,它为每个输入样本返回一个包含 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 损失的平均值。
我该怎么做?

【问题讨论】:

  • 这里有一个专业提示,使用 numpy 函数(如 np.mean、np.sum 等)在虚拟数据上构建损失函数,并使用轴参数对批次进行操作,例如:np.mean(array,轴=1)。然后换成 Franck 的答案中等效的 tensorflow 函数。
  • 会记住的。谢谢!

标签: python tensorflow


【解决方案1】:

您可以使用tf.sqrt,后跟tf.reduce_sumtf.reduce_meantf.reduce_sumtf.reduce_mean 都有一个 axis 参数,指示要减少哪些维度。

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

【讨论】:

  • 这很容易。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-09-04
  • 2021-11-05
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 2017-03-20
相关资源
最近更新 更多