我很好地修改了cifar10数据集上的初始v3模型。保存之后,模型的大小是175 Mo,在训练之前大约是90 Mo所以我想知道为什么微调模型更大?当我查看两个模型的参数数量时,它几乎是相同的。
原型号: 总参数:23,851,784 可训练的参数:23,817,352 不可训练的参数:34,432
微调模型: 总参数:21,823,274 可训练的参数:21,788,842 不可训练的参数:34,432
有没有人对此有所了解? 为了保存模型,我在fit生成函数内部的回调函数中使用函数ModelCheckpoint。
checkpoints = ModelCheckpoint(output+'-{epoch:02d}.hdf5', verbose=1, save_best_only=False, period=checkpoint)
callbacks_list = [callback_tensorboard, checkpoints]
# train
model.fit_generator(train_generator,
steps_per_epoch=step_train,
epochs=epochs,
verbose=1,
validation_data=test_generator,
validation_steps=step_test,
callbacks=callbacks_list)
答案 0 :(得分:1)
默认情况下,ModelCheckpoint
会保存模型的所有内容,包括以下内容:
如果使用保持状态的优化器(如ADAM或RMSProp),其中为每个参数保留了运行平均值,则此优化器状态也会保存到HDF5文件中,从而将最终文件大小增加一个由优化
一个简单的解决方案是手动使用model.save_weights
仅保存权重,或者在save_weights_only
的实例中将ModelCheckpoint
参数设置为True。