在Keras中,imagenet预训练模型如何处理与原始224x224输入大小不同的输入大小?

在Keras中,imagenet预训练模型如何处理与原始224x224输入大小不同的输入大小?,keras,Keras,由于预先训练的模型是在具有特定宽度和高度的ImageNet图像上训练的,Keras模型(例如ResNet50)如何允许不同的输入大小 我也想知道“197”这个神奇数字的来源: input_shape:可选的形状元组,仅在include_top为False时指定(否则输入形状必须为(224,224,3)(使用“channels_last”数据格式)或(3,224,224)(使用“channels_first”数据格式)。它应该正好有3个输入通道,宽度和高度不得小于197。例如,(200,200,3

由于预先训练的模型是在具有特定宽度和高度的ImageNet图像上训练的,Keras模型(例如ResNet50)如何允许不同的输入大小

我也想知道“197”这个神奇数字的来源:

input_shape:可选的形状元组,仅在include_top为False时指定(否则输入形状必须为(224,224,3)(使用“channels_last”数据格式)或(3,224,224)(使用“channels_first”数据格式)。它应该正好有3个输入通道,宽度和高度不得小于197。例如,(200,200,3)将是一个有效值


首先,当您将其指定为false时,您必须关注include_顶部部分,您选择不包括完全连接的层,并且在如何使用模型方面有更多的自由,因为您可以重新训练(或只是重新调整权重)模型

当你看到像resnet50这样的深度学习模型, 您会注意到,离模型输入越近的层越抽象,在层的每个块上,它将捕获像轮廓这样的特征,并且图像大小的增加不会对网络这一部分的结果产生太大影响

最重要的层将位于模型的末端(或keras在这里称为顶部),您应该集中训练,这就是为什么在使用include_top=false时可以更改输入大小,以便您可以将FC层重新调整到适当的大小

关于这个神奇的数字,我不是很确定,但我猜这是因为这个模型很大,每次它进行池化时,它都会减小图像大小,而197将是最后不带大小0的限制


如果你看一看页面,你会看到一组新类上的微调接收v3,你会看到一个很好的例子,它只重新训练初始模型中的最后两个块,但保留顶部的块不变。

我很有信心197来自卷积和池层的数量。这是最小的大小t在维护体系结构时可以采取的措施。例如,在200x200图像上,跨步为1的3x3卷积将具有198x198的输出形状,而另一个2x2 max pool将具有99x99的输出。等等。

Keras允许您在“include_top”时更改输入大小为False,因为这意味着您计划在不同的任务(使用不同的输入;)上重新训练网络


如果没有,您必须通过相应网络的原始接受输入。197是特定网络仍然与以下层兼容的接受下限。这对于每个模型都是不同的。

我不认为有
input\u top
可以指定。您指的是
include\u top