我注意到我使用 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/