我编写了一个神经网络,它为每个输入样本返回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损失的平均值 .
我该怎么做呢?
1 回答
您可以使用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