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

AKS*_*HAN 8 python convolution neural-network keras

有人可以告诉我什么include_top = True意味着在keras中定义模型?

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

我仍然在寻找这行代码的直观解释.

ResNet50(include_top=True)
Run Code Online (Sandbox Code Playgroud)

谢谢!

Dan*_*ler 21

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

Include_top 让您选择是否需要最终的密集层.

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

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

关于重量:

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

  • 现在,密集层中的权重完全取决于输入大小.它是输入的每个元素的一个权重.因此,这要求您的输入始终具有相同的大小,否则您将无法获得正确的学习权重.

因此,删除最后的密集层允许您定义输入大小(请参阅文档).(并且输出大小将相应地增加/减少).

但是你失去了解释/分类层.(您可以添加自己的,具体取决于您的任务)


jde*_*esa 6

阅读文档可以使您有所了解,您也可以使用代码。具有include_top=True意味着将在模型的末尾添加一个完全连接的层。如果希望模型实际执行分类,通常这就是您想要的。使用include_top=True可以指定参数classes1000对于ImageNet,默认为)。使用include_top=False,该模型可用于特征提取,例如构建自动编码器或将其他任何模型堆叠在其上。请注意,input_shapepooling参数只能在include_topis 时指定False

  • 删除密集层可让您输入不同的形状,因为纯卷积层的权重是在内核大小之后而不是输入之后确定的。但是输出形状将取决于输入形状。 (3认同)
  • 感谢您的明确解释。我很难理解“ top”一词背后的直觉。通过查看VGG16的体系结构,可以看到完全连接的层位于“底部”。因此,“ top”一词是什么意思?谢谢 ! (2认同)