如何在tensorflow会话中使用mean_squared_error损失

时间:2018-11-24 18:44:25

标签: python tensorflow machine-learning keras

我是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

但是,我不确定这是否正确。

1 个答案:

答案 0 :(得分:2)

首先要记住,交叉熵主要用于分类,而MSE用于回归。

在您的情况下,交叉熵衡量了两种分布之间的差异(实际发生的情况,称为标签-和您的预测)

因此,尽管第一个损失函数作用于softmax层的结果(可以看作是概率分布),而第二个损失函数直接作用于网络的浮点输出(没有概率分布)-因此它们不能简单地交换。