VGG16 中的最后一个 fc 层

Last fc layers in VGG16

VGG16 架构有输入:224x224x3 images.I 想要 48x48x3 输入但要在 keras 中执行此操作,我们删除了最后一个具有 4096 个神经元的 fc 层 each.Why 我们必须这样做吗?是否需要为这个输入添加另一个大小的 fc 层?

删除最后的 FC 层用于 fine-tuning 或迁移学习,您可以在其中调整现有网络以解决新问题,例如更改分类器可以选择的类别数量。

您正在调整网络以采用不同大小的输入,因此您需要调整网络的第一层。

VGG16 的最终池化层具有 224x224 输入图像的维度 7x7x512。从那里 VGG16 使用 (7x7x512)x4096 的完全连接层来获得 4096 维输出。但是,由于您的输入大小不同,最终池化层的特征输出维度也会不同(2x2x512 我认为)。因此,您需要更改完全连接层的矩阵维数才能使其正常工作。不过你还有另外两个选择

  1. 使用跨空间维度的全局平均池化来获得 512 维度特征,然后使用几个完全连接的层来获得你的 类 数量。
  2. 将输入图像的大小调整为 224x224x3,您无需更改模型架构中的任何内容。