我正试图完成一项双重任务。输入是一个图像,根据输入,我想从一组图像中选择另一个图像(分类任务),然后使用这两个图像获得输出张量。很明显,如果我知道应该从那组图像中选择哪个图像的基本事实,我可以分别训练这两个模型。但是,我只有输出张量地面真理
在我看来,问题在于,如果我们使用分类层,梯度将不再是可微的。我如何处理这个问题?是否有文献将这种体系结构用于任何应用程序?短暂性脑缺血发作
更多细节:我有一个对象/场景的多个图像,我想用其中的两个图像来解决某种重建问题。为了最大限度地提高重建性能,如果给我第一张图像,我想明智地选择第二张图像。例如,我有三个图像A、B、C,使用AC可以得到最好的结果。我需要一个模型,它给出一个C,然后使用AC我可以实现重建。任务现在清楚了吗?我没有说AC比AB好的基本事实。现在任务清楚了吗
因此,基本上,您需要先执行分类任务,然后再执行重建任务
以下是我的建议(我不认为这是绝对最好的解决方案,但我会如何处理这个问题):
您可以创建一个进行分类的任务>;一次损失的重建。让我们仍然将这个网络一分为二,并调用
net_class
进行分类的部分,以及net_reconstruct
执行重建的部分。 假设你的分类网络预测{'B': 0.1, 'C': 0.9)
。我不会只使用图像“C”进行重建,而是将这两对(A-B
和A-C
)都馈送到第二个网络,并计算重建损失L
(我不是重建方面的专家,但我猜这其中有一些经典损失)因此,您将计算两个损失
L(A-B)
和L(A-C)
。 我的全部损失是0.1 * L(A-B) + 0.9 L(A-C)
。这样,您将训练net_class
选择使重建损失最小化的配对,并且您仍然训练net_reconstruct
使这两种损失最小化,并且损失是连续的(因此,根据AI专家,可微分)这一损失背后有三个原因:
1-改进重建器会减少损失(因为
L(A-B)
和L(A-C)
都会减少。因此,这种损失会使重建器向您想要的方向收敛2-让我们假设你的重建器经过了大量训练(
L(A-B)
和L(A-C)
相对较低)。然后,你的分类器有动机预测重建损失最低的类3-现在,重建器和分类器将同时训练。训练结束时,你可以期望有一个分类器输出几乎是二进制结果(如0.998 vs 0.002)。此时,重建器几乎只在与
0.998
相关的场景上训练输出。这应该不是问题,因为,如果我正确理解了您的问题,您希望仅对顶级分类场景执行重建部分请注意,如果您没有对重建零件执行深入学习,此方法也有效
如果你想在这类话题上获得一些灵感,我建议你阅读一些关于GANs(生成性对抗网络)的博客文章。它们使用相同的两阶段一损失技巧(当然有一些细微的区别,但想法非常接近)
祝你好运
相关问题 更多 >
编程相关推荐