如果我有最初设计用于分类的网络,在tensorflow中回归的情况下,我应该如何更改损失函数?

如果我有最初设计用于分类的网络,在tensorflow中回归的情况下,我应该如何更改损失函数?,tensorflow,deep-learning,Tensorflow,Deep Learning,我有一个预先训练过的alexnet,专门用于分类任务。 现在我想为回归任务更改该模型 我应该对tensorflow中下面代码中的损失函数做什么更改?现在是回归,我没有标签,只有一个输出向量 with tf.name_scope("cross_ent"): loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = score, labels = y)) 还有,在转换模型时我还需要注意什么 分类网络的最后一层通常是

我有一个预先训练过的alexnet,专门用于分类任务。 现在我想为回归任务更改该模型

我应该对tensorflow中下面代码中的损失函数做什么更改?现在是回归,我没有标签,只有一个输出向量

with tf.name_scope("cross_ent"):
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = score, labels = y))

还有,在转换模型时我还需要注意什么

分类网络的最后一层通常是softmax层,加上与softmax输出类型(概率向量总和为1)配合良好的损耗


要执行回归,您需要在最后一层使用线性激活函数;您可以尝试在目标和预测之间使用MSE(均方误差)损失函数。

分类网络的最后一层通常是softmax层,加上与softmax输出类型(概率向量总和为1)配合良好的损失


要执行回归,您需要在最后一层使用线性激活函数;您可以尝试在目标和预测之间使用MSE(均方误差)损失函数。

是!我使用-tf.name_scope(“cross_ent”):loss=tf.reduce_mean(tf.squared_difference(score,y))@Florentine Hennecker,我没有得到正确的回归值,甚至没有接近。我想在模型的某个地方,我正在压缩或规范化数据。知道吗,我用的是AlexNet。你确定你最后一层的激活函数是线性的吗?你得到的值的范围是多少?那么,我的地面真值向量有六个元素(2个坐标(范围-0到256px),2个长度度量(范围-20到60px),1个正弦值,1个余弦值)。现在正弦和余弦值应该在(-1到1)的范围内。这些基本真理价值观。现在,我的输出对于前4个输出得到了相似的范围,但是对于正弦和余弦,我得到了(-1到1)的值。我不确定前四个坐标是否正确,但它们在范围内。现在,如何确保我的输出范围是正确的?特别是在正弦和余弦的情况下,这是我的最后一层和误差函数看起来像self.fc8=fc(dropout7,4096,self.NUM_类,relu=False,name='fc8')和tf.name_scope(“cross_ent”):loss=tf.reduce_mean(tf.squared_difference(score,y))。NUM_CLASSES=6。(我的输出向量)是的!我使用-tf.name_scope(“cross_ent”):loss=tf.reduce_mean(tf.squared_difference(score,y))@Florentine Hennecker,我没有得到正确的回归值,甚至没有接近。我想在模型的某个地方,我正在压缩或规范化数据。知道吗,我用的是AlexNet。你确定你最后一层的激活函数是线性的吗?你得到的值的范围是多少?那么,我的地面真值向量有六个元素(2个坐标(范围-0到256px),2个长度度量(范围-20到60px),1个正弦值,1个余弦值)。现在正弦和余弦值应该在(-1到1)的范围内。这些基本真理价值观。现在,我的输出对于前4个输出得到了相似的范围,但是对于正弦和余弦,我得到了(-1到1)的值。我不确定前四个坐标是否正确,但它们在范围内。现在,如何确保我的输出范围是正确的?特别是在正弦和余弦的情况下,这是我的最后一层和误差函数看起来像self.fc8=fc(dropout7,4096,self.NUM_类,relu=False,name='fc8')和tf.name_scope(“cross_ent”):loss=tf.reduce_mean(tf.squared_difference(score,y))。NUM_CLASSES=6。(我的输出向量)