Keras重量比模型大于预期

时间:2017-10-23 09:54:31

标签: keras

我很好地修改了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)

1 个答案:

答案 0 :(得分:1)

默认情况下,ModelCheckpoint会保存模型的所有内容,包括以下内容:

  • 模型架构
  • 权重
  • 培训配置,如优化器和丢失功能
  • 优化器的状态,因此您可以直接从检查点恢复培训。

如果使用保持状态的优化器(如ADAM或RMSProp),其中为每个参数保留了运行平均值,则此优化器状态也会保存到HDF5文件中,从而将最终文件大小增加一个由优化

一个简单的解决方案是手动使用model.save_weights仅保存权重,或者在save_weights_only的实例中将ModelCheckpoint参数设置为True。