我用自己的数据从头开始训练InceptionV3 ConvNet。重新加载模型并继续学习后,我意识到训练集的准确性在退格后会略有下降(例如,从0.956降至0.879)。然后,精度将继续保持预期的状态。对我来说似乎很不直观。有谁知道为什么会这样?
这是我最初初始化模型的方式:
return showDialog<bool>(
context: context,
barrierDismissible: false,
builder: (BuildContext context)
{
return StateDialog(dialog: AlertDialog(
title: Text("Save Event"),
content: new Column(
children: <Widget>[
etc...
在每个时期之后,我使用以下回调存储模型:
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')
我使用RMSProp优化器尝试了相同的操作。但是,在重新加载并继续训练之后,也会发生同样的情况。
有什么想法为什么每次训练集的准确性都会略有下降?