如果我们需要更改input_shape,为什么还需要include_top = False?

时间:2018-04-27 03:48:19

标签: keras keras-layer

据我所知,输入元组从卷积块进入。 因此,如果我们想要更改input_tuple形状,修改卷积将是有意义的。 为什么我们需要include_top = False并在最后删除完全连接的图层?

另一方面,如果我们有不同数量的类,Keras可以选择使用no_of_classes更改softmax图层

我知道我在这里缺少一些东西。请帮帮我

示例:Forception Resnet V2

  

input_shape:可选的形状元组,仅在include_top时指定   是假(否则输入形状必须是(299,299,3)(有   'channels_last'数据格式)或(3,299,299)(带'channels_first'   数据格式)。它应该有3个输入通道,宽度和   身高不应小于139.例如(150,150,3)将是一个   有效价值。

     

include_top:是否在顶部包含完全连接的图层   网络。

https://keras.io/applications/#inceptionresnetv2

1 个答案:

答案 0 :(得分:1)

这仅仅是因为末端的完全连接的层只能采用固定大小的输入,这些输入先前已由输入形状和卷积层中的所有处理定义。对输入形状的任何更改都会改变输入到完全连接的图层的形状,使得权重不兼容(矩阵大小不匹配且无法应用)。

这是完全连接的图层的特定问题。如果您使用其他图层进行分类,例如全局平均合并,则不会出现此问题。