我非常习惯直接使用tensorflow(python)以及使用keras构建模型。到目前为止,我构建的所有模型都是从输入图像到 softmax 输出的传统直通处理。事实上,我很惊讶它是如此简单。
我现在想训练一个用于分类和回归的模型。斯坦福 CNN 类(class)的幻灯片 16 CS231n这正是我想做的。我真的不清楚(实际上,我有 NFI)如何对 tensorflow 图进行分支、创建两个损失函数并正确反向传播它们。
有人能给我提供代码示例吗?非常感谢。
最佳答案
回答评论中的问题:
我没有处理过此类问题,但这里有一些一般性想法。
理想情况下,有利于回归的(共享)权重也应该有利于分类。在这种情况下,loss_weights 并不重要,因为两个损失都应该将权重推向同一方向。您只需确保 loss * loss_weight
的平均大小大致相同,这样就不会完全忽略一项损失。
如果您发现头部正在战斗,即您可以训练一个单独的回归模型,其精度比与分类一起训练时高得多,您可以更早地分支头部(以便它们共享更少的权重和有更专门的层)或者只训练两个单独的模型。还有大量关于多任务训练的研究论文,可让您共享更多权重来完成不同的任务。
关于machine-learning - 如何添加回归头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47724838/