结合 CNN 进行图像分类

数据挖掘 深度学习 图像分类 卷积神经网络 分散式 推理
2022-02-27 13:57:00

我想获取 CNN 中间层(G 层)的输出并将其馈送到更宽的 CNN(H 层)的中间层以完成推理。

挑战: G、H 两层的维度不同,不能直接做。 解决方案:使用第三个 CNN(称为 r),它将 G 层的输出作为输入,并为 H 层输出一个有效输入。然后使用损失函数调整 G 层和 r 层的权重:

L(WG,Wr)=MSE(output of layer H,output of r)

我的问题:这种方法只会改变层 G 的权重和 r 的权重吗?整个系统之后是否需要微调以更新其他层的权重?

2个回答

将不同的神经网络与当前的深度学习框架(即 PyTorch 或 TensorFlow)叠加起来很简单。没有单独的输出r,它只是许多层之一。

它可能看起来像这样: 在此处输入图像描述

您可以冻结或不冻结堆叠神经网络中的任何层。您可以决定将训练更新反向传播多远。

解冻层的优点是模型可以学习到更好的特征表示。解冻的缺点是对于非常深的神经网络,训练可能需要更长的时间。

首先:可能你不应该用你建议的损失进行训练,因为使用 MSE,你将训练以最小化总误差,而不是保持特征不变,这是 CNN 擅长检测的;这与在 MSE 上训练图像自动编码器时发生的问题相同,即获得模糊图像相反,根据需要配置网络,重用您认为合适的网络中的层,以及所需的适应层,然后在您需要网络执行的任务(例如分类)上训练整个网络。

这样做时,您可以选择只训练网络的某些部分,或者以不同的学习率训练它们。这些是一些潜在的替代方案:

  1. 冻结除适应层之外的所有层。重用层的原始权重将保持原样。
  2. 以正常的学习率训练适应层,以非常小的学习率训练其他层。这是典型的迁移学习设置,旨在使学习更加灵活。