gpt4 book ai didi

python-3.x - 重新训练机器学习的 Inception V3 模型

转载 作者:行者123 更新时间:2023-11-30 08:58:00 25 4
gpt4 key购买 nike

我正在使用 Inception V3 模型对两个类进行图像分类。由于我使用两个新类(正常类和异常类),我将卡住 Inception V3 模型的顶层并用我自己的类替换它。

base_model = keras.applications.InceptionV3(
weights ='imagenet',
include_top=False,
input_shape = (img_width,img_height,3))

#Classifier Model ontop of Convolutional Model
model_top = keras.models.Sequential()
model_top.add(keras.layers.GlobalAveragePooling2D(input_shape=base_model.output_shape[1:], data_format=None)),
model_top.add(keras.layers.Dense(400,activation='relu'))
model_top.add(keras.layers.Dropout(0.5))
model_top.add(keras.layers.Dense(1,activation = 'sigmoid'))
model = keras.models.Model(inputs = base_model.input, outputs = model_top(base_model.output))

在 Inception V3 中以这种方式卡住卷积层对于训练来说是必要的吗?

#freeze the convolutional layers of InceptionV3
for layer in base_model.layers:
layer.trainable = False

model.compile(optimizer = keras.optimizers.Adam(
lr=0.00002,
beta_1=0.9,
beta_2=0.999,
epsilon=1e-08),
loss='binary_crossentropy',
metrics=['accuracy'])

最佳答案

没有必要卡住 CNN 的第一层;您只需初始化预训练模型的权重即可。但是,在大多数情况下,建议卡住它们,因为它们可以提取的特征通用足以帮助完成任何与图像相关的任务,这样做可以加快训练速度流程。

话虽这么说,您应该对要卡住的层数进行一些试验。允许 base_model 的后几层针对您的任务进行微调可以提高性能。您可以将其视为模型的超参数。假设您想要卡住前 30 层:

for layer in model.layers[:30]:
layer.trainable = False

关于python-3.x - 重新训练机器学习的 Inception V3 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51971844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com