python - 为什么keras模型训练后会变大?

标签 python tensorflow keras deep-learning

我注意到我使用 tensorflow.keras.Sequential() 创建了一个模型,保存它并且文件大小约为 5 MiB,但是在我调用 model.fit(.. ),文件大小增加到 17 MiB。我复制了模型以减小文件大小,结果发现准确性是相同的。

我的问题是,fit() 产生的额外 12 MiB 的内容到底是什么? 我如何访问此类内容?如果我删除那些额外的 12 MiB,是否会影响预测准确性或任何奇怪的副作用?

在这里查看我的实验代码:https://nbviewer.jupyter.org/github/off99555/TensorFlowExperiments/blob/master/test-save-keras-model.ipynb

最佳答案

答案是 Adam 优化器状态的大小。当我将优化器更改为 SGD(普通优化器)时,大小不再大了。 据我所知,Adam 优化器维护了之前训练迭代的梯度信息。并且梯度大小可以与模型大小一样大。这就是为什么它会导致文件大小如此之大。

考虑到这一点,当您保存模型时,如果您似乎使用与 Adam 类似的维护大状态的优化器,请确保设置 include_optimizer=False

但请注意,这意味着您无法加载模型并继续再次训练它,它只能用于推理。

关于python - 为什么keras模型训练后会变大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57058178/

相关文章:

python - TensorFlow python循环 "for"性能

python - 如何在 Keras API 中将数组列表作为输入

neural-network - Keras - 层的线性堆栈?

python - "Jacobian is required for Newton-CG method"当 jac=False 时不使用 Jacobian 的近似值?

python - PySpark:AttributeError: 'PipelineModel'对象没有属性 'clusterCenters'

python - 使用python脚本从linux电脑telnet到windows电脑

tensorflow - 在 Tensorflow 中使用 `tf.estimator.Estimator` 保存的模型进行预测

python - 如何访问生成器提供的 Keras 自定义损失函数中的样本权重?

python re.findall 返回元组列表(需要字符串)

python - Keras 没有使用 100% cpu