我编写了一个神经网络,它为每个输入样本返回一个包含 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
