我想知道微调具有较大输入大小的模型是否有意义?理想情况下,我想要拥有的属性:
具体地说,我正在尝试使用我的特定标签集在Keras中微调InceptionV3。我希望数据更大,因为我希望该模型可以隐式学习一些重要字符。使用InceptionV3默认大小(299x299
)对我来说这是不可能的。
但这听起来像我必须更改要重复使用的特定模型(例如,通过修改model architecure中的特定层),然后重新使用预先训练的权重没有意义吗?< / p>
答案 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(第二和第三部分与此相关)。