微调具有较大输入大小的模型

时间:2019-01-05 00:26:35

标签: machine-learning keras neural-network deep-learning computer-vision

我想知道微调具有较大输入大小的模型是否有意义?理想情况下,我想要拥有的属性:

  1. 微调:通过预训练重用权重
  2. 较大的输入大小:在输入模型之前不进行下采样。也许步幅更大?

具体地说,我正在尝试使用我的特定标签集在Keras中微调InceptionV3。我希望数据更大,因为我希望该模型可以隐式学习一些重要字符。使用InceptionV3默认大小(299x299)对我来说这是不可能的。

但这听起来像我必须更改要重复使用的特定模型(例如,通过修改model architecure中的特定层),然后重新使用预先训练的权重没有意义吗?< / p>

1 个答案:

答案 0 :(得分:1)

如果您想微调分类模型,通常会删除一些用作分类器的顶层,然后添加自己的层。这与微调Inception_V3模型相同:您可以删除顶层并添加具有所需单位数(即数据集中的类数)的分类器。例如:

from keras.applications.inception_v3 import InceptionV3

# let's say our images are of size (1000, 1000, 3)
inc_v3 = InceptionV3(include_top=False, input_shape=(1000, 1000, 3), pooling)

# add your desired layers to the top
# we only add one layer just for illustration
# but you can add as many layers as you want
out = Dense(num_classes, activation='softmax')(inc_v3.output)

# construct the new model
model = Model(inc_v3.input, out)

但是,请注意,您需要先冻结所有基础层(即Inception_V3模型的层)以进行微调。此外,除了在顶部添加池层(即pooling='avg')之外,您还可以使用其他替代方法,例如使用Flatten层。

此外,我建议您阅读相关的Keras官方教程:Building powerful image classification models using very little data(第二和第三部分与此相关)。