Keras模型的重量大于预期值

Keras模型的重量大于预期值,keras,Keras,我可以在cifar10数据集上调整inception v3模型。保存后,模型的大小是175个月,训练前大约是90个月,所以我想知道为什么微调后的模型更大?当我看两个模型的参数数量时,几乎是一样的 原始型号: 总参数:23851784 可培训参数:23817352 不可培训参数:34432 微调模型: 总参数:21823274 可培训参数:21788842 不可培训参数:34432 有人对此有想法吗? 为了保存模型,我在fit生成器函数内的回调中使用函数ModelCheckpoint checkp

我可以在cifar10数据集上调整inception v3模型。保存后,模型的大小是175个月,训练前大约是90个月,所以我想知道为什么微调后的模型更大?当我看两个模型的参数数量时,几乎是一样的

原始型号: 总参数:23851784 可培训参数:23817352 不可培训参数:34432

微调模型: 总参数:21823274 可培训参数:21788842 不可培训参数:34432

有人对此有想法吗? 为了保存模型,我在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)

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

  • 模型架构
  • 砝码
  • 培训配置,如优化器和损失函数
  • 优化器的状态,因此您可以直接从检查点恢复培训
如果使用保持状态的优化器,如ADAM或RMSProp,其中每个参数都保持运行平均值,则此优化器状态也会保存到HDF5文件中,并按优化器定义的系数增加最终文件大小


一个简单的解决方案是使用
model.save_weights
手动只保存权重,或者在
ModelCheckpoint
的实例中将
save_weights_only
参数设置为True,方法是说,“优化器的状态,因此您可以直接从检查点恢复训练。”你的意思是在中期保存指数加权移动平均值吗?我的意思是我不明白为什么要在训练时保存模型,如果我们能在开始训练前保存一次的话。如果我想恢复训练,我只需要用上一个完成阶段的重量重新开始训练。所以我认为保存权重是没有用的?它应该总是正确的,我真的不能找到我想在训练的时候保存模型的情况。@ Stavbdik它不是在一个时代的中间,它通常是在一个末端。如果不从保存的移动平均值开始,那么训练可能会不稳定或发散。但无论如何都会保存权重,这是此检查点最重要的功能之一,为什么我还应该在训练时保存模型?根据定义,模型是一种常量,在列车运行过程中不会发生变化。@StavBodik,因为这样更容易直接从检查点加载模型,它是带有load_模型的Keras中的一行。@StavBodik一行加载模型和权重。如果你有更多的问题,那么你应该问自己的问题,而不是在评论中讨论。