训练一个级联网络,中间有一个分类器

2024-05-16 23:59:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图完成一项双重任务。输入是一个图像,根据输入,我想从一组图像中选择另一个图像(分类任务),然后使用这两个图像获得输出张量。很明显,如果我知道应该从那组图像中选择哪个图像的基本事实,我可以分别训练这两个模型。但是,我只有输出张量地面真理

在我看来,问题在于,如果我们使用分类层,梯度将不再是可微的。我如何处理这个问题?是否有文献将这种体系结构用于任何应用程序?短暂性脑缺血发作

更多细节:我有一个对象/场景的多个图像,我想用其中的两个图像来解决某种重建问题。为了最大限度地提高重建性能,如果给我第一张图像,我想明智地选择第二张图像。例如,我有三个图像A、B、C,使用AC可以得到最好的结果。我需要一个模型,它给出一个C,然后使用AC我可以实现重建。任务现在清楚了吗?我没有说AC比AB好的基本事实。现在任务清楚了吗


Tags: 模型图像应用程序体系结构分类文献细节ac
1条回答
网友
1楼 · 发布于 2024-05-16 23:59:51

因此,基本上,您需要先执行分类任务,然后再执行重建任务

以下是我的建议(我不认为这是绝对最好的解决方案,但我会如何处理这个问题):

您可以创建一个进行分类的任务>;一次损失的重建。让我们仍然将这个网络一分为二,并调用net_class进行分类的部分,以及net_reconstruct执行重建的部分。 假设你的分类网络预测{'B': 0.1, 'C': 0.9)。我不会只使用图像“C”进行重建,而是将这两对(A-BA-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(生成性对抗网络)的博客文章。它们使用相同的两阶段一损失技巧(当然有一些细微的区别,但想法非常接近)

祝你好运

相关问题 更多 >