我是TensorFlow的新手
在TensorFlow会话的一部分代码中,有以下内容:
loss = tf.nn.softmax_cross_entropy_with_logits_v2( logits=net, labels=self.out_placeholder, name='cross_entropy') self.loss = tf.reduce_mean(loss, name='mean_squared_error')
我想为此使用mean_squared_error
损失函数。我在TensorFlow网站上找到了这个损失函数:
tf.losses.mean_squared_error(labels,predictions,weights=1.0,scope=None,loss_collection=tf.GraphKeys.LOSSES,reduction=Reduction.SUM_BY_NONZERO_WEIGHTS)
我需要这个损失函数来处理回归问题。
我尝试了以下方法:
loss = tf.losses.mean_squared_error(predictions=net, labels=self.out_placeholder)self.loss = tf.reduce_mean(loss, name='mean_squared_error')
其中net = tf.matmul(input_tensor, weights) + biases
然而,我不确定这是否是正确的方法。
回答:
首先要记住,交叉熵主要用于分类,而均方误差(MSE)用于回归。
在你的例子中,交叉熵测量的是两个分布之间的差异(实际发生的,称为标签 – 和你的预测)
因此,虽然第一个损失函数适用于softmax层的输出(可以视为概率分布),第二个损失函数直接作用于网络的浮点数输出(这不是概率分布) – 因此它们不能简单地互换使用。