为什么每次加载和继续训练ConvNet后,准确度都会下降?

2024-10-01 11:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我用自己的数据从零开始训练一个InceptionV3 ConvNet。在重新加载一个模型并继续学习之后,我意识到在重新编码之后,训练集的准确度会稍微下降(例如。g。从0.956到0.879)。然后准确度继续像我期望的那样。我觉得这很不直观。有人知道为什么会这样吗

我最初是这样初始化模型的:

base_model = InceptionV3(weights=None, include_top=False)

x = base_model.output
x = GlobalAveragePooling2D(name='avg_pool')(x)
x = Dropout(0.4)(x)
predictions = Dense(num_classes, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)

# Freeze all layers
if preTrained:
    for layer in base_model.layers:
        layer.trainable = False

model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

我使用以下回调在每个历元之后存储模型:

checkpointEveryEpoch_callback = ModelCheckpoint(saveDir + "modelFiles/saved-model-{epoch:02d}-{val_acc:.2f}.hdf5", monitor='val_acc', verbose=1, save_best_only=False, mode='max')

以及用于重新编辑模型的代码(我不再编译模型): model = load_model(oldModelPath)

我用RMSProp优化器尝试了同样的方法。但同样的情况发生在重新加载和继续训练之后

你知道为什么每次训练集的准确度都会略有下降吗


Tags: 数据模型layerfalse编码basemodellayers