迁移学习:采用经过训练的神经网络并将其用于新的分类任务。
当我们想通过卷积神经网络使用迁移学习时,我们不必使用与用于训练的图像大小相同的图像大小作为输入。但是如果我们改变输入大小,我们将不得不重新训练全连接层。请参阅Stackoverflow 上的这篇文章。
我不明白为什么改变输入形状不会影响卷积层的权重以及为什么它会影响全连接层的权重。
如果我的问题无法理解,请告诉我。
迁移学习:采用经过训练的神经网络并将其用于新的分类任务。
当我们想通过卷积神经网络使用迁移学习时,我们不必使用与用于训练的图像大小相同的图像大小作为输入。但是如果我们改变输入大小,我们将不得不重新训练全连接层。请参阅Stackoverflow 上的这篇文章。
我不明白为什么改变输入形状不会影响卷积层的权重以及为什么它会影响全连接层的权重。
如果我的问题无法理解,请告诉我。
在卷积层中,权重是过滤器值。
CNN 网络的权重由过滤器的数量和大小决定。权重不取决于输入图像的形状。
预训练网络的过滤器能够检测图像中的不同特征。考虑检测图像边缘的 sobel 滤波器。3x3 sobel 滤波器可用于检测任意大小图像中的边缘。同样,这些过滤器可以重复使用,而不是从头开始学习。
这就是为什么 CNN 网络的权重可以转移到另一个具有不同输入形状的 CNN 网络。但是,层数,没有。过滤器,过滤器大小和图像通道数必须相同。
对于迁移学习,最佳实践是使用预训练模型来完成类似任务,并且不要将输入形状更改为非常小或非常大。
另一方面,完全连接(密集)层的权重不能转移。因为,这些权重取决于图像大小。CNN 网络末端的密集层应该被切断并重新创建以适应图像大小的变化。
如果您了解如何在 CNN 和 Dense 层中计算可训练参数,那就更清楚了。如果我尝试在此答案中进行解释,将会很长。你可以用谷歌搜索。
要理解这一点,您需要一些关于矩阵运算如何工作的基本数学知识。因此,让我们开始吧,考虑您使用的是 resnet-34 架构,该架构在具有 1000 个类的 imagenet 上进行训练,因此当您使用传输学习时,您会加载模型架构及其权重,像 resnet34 这样的模型有两个主干,即卷积部分和 FCL现在网络的颈部当你使用 resnet 34 训练模型时,它只会训练颈部现在让我们理解,
PS-实际上,您甚至可以通过解冻整个模型然后重新训练整个网络来更新卷积的权重,即使主干 fastai 为这次访问文档和站点提供了很大的支持,它非常有帮助。