在 keras 中定义模型(include_top = True)

Defining model in keras (include_top = True)

有人能告诉我在 keras 中定义模型时 include_top= True 是什么意思吗?

我在 Keras 文档中阅读了这一行的含义。它说include_top:是否包括网络顶部的全连接层。

我还在为这行代码寻找一个直观的解释。

ResNet50(include_top=True)

谢谢!

阅读the documentation sheds some light, and you can also resort to the codeinclude_top=True 意味着将在模型末尾添加一个全连接层。如果您希望模型实际执行分类,这通常是您想要的。使用 include_top=True,您可以指定参数 classes(对于 ImageNet,默认为 1000)。使用 include_top=False,该模型可用于特征提取,例如构建自动编码器或在其上堆叠任何其他模型。请注意,仅当 include_topFalse 时才应指定 input_shapepooling 参数。

这些模型中的大多数都是一系列卷积层,然后是一个或几个密集(或完全连接)层。

Include_top 让你 select 如果你想要最终的密集层。

  • 卷积层用作特征提取器。他们识别图像中的一系列图案,每一层都可以通过查看图案的图案来识别更精细的图案。

  • 密集层能够解释找到的模式以便分类:此图像包含猫、狗、汽车等

关于权重:

  • 卷积层中的权重是固定大小的。它们是内核 x 过滤器的大小。示例:包含 10 个过滤器的 3x3 内核。卷积层不关心输入图像的大小。它只是进行卷积并根据输入图像的大小呈现结果图像。 (不清楚的可以搜索一些关于卷积的图解教程)

  • 现在密集层中的权重完全取决于输入大小。它是输入的每个元素一个权重。所以这要求你的输入总是相同的大小,否则你不会有适当的学习权重。

因此,删除最后的密集层允许您定义输入大小(参见文档)。 (并且输出大小将相应地 increase/decrease)。

但是您丢失了 interpretation/classification 层。 (您可以添加自己的,具体取决于您的任务)


关于池化和扁平化的额外信息

全局合并:

在最后一个卷积层之后,您的输出仍然像图像。它们的形状为 (images, X, Y, channels),其中 XY 是二维图像的空间维度。

当您的模型具有 GlobalMaxPooling2DGlobalAveragePooling2D 时,它将消除空间维度。使用 Max 时,每个通道将只采用最高值像素。使用 Average 它将取每个通道的平均值。结果将只是 (images, channels),不再有空间维度。

  • 优点:由于空间维度被丢弃,你可以有可变大小的图像
  • 缺点:如果你仍然有大尺寸,你会丢失很多数据。 (这可能没问题,具体取决于模型和数据)

展平

使用flatten,空间维度不会丢失,但会在特征上进行变换。从 (images, X, Y, channels)(images, X*Y*channels)

这将需要固定的输入形状,因为必须定义XY,如果在展平后添加Dense层,Dense层将需要固定数量的特征。