如何减小 keras 保存模型的大小?

Posted

技术标签:

【中文标题】如何减小 keras 保存模型的大小?【英文标题】:How to reduce size of keras saved model? 【发布时间】:2019-10-21 09:33:11 【问题描述】:

然后我在来自 tf-hub 或 keras.applications 的预训练模型的基础上构建模型(我使用相同的卷积核)大小在 model.save() 或 tf 之后生成的模型文件大小.saved_model.save 大约 10 Mb。经过我的训练,它的模型大小增加到 30Mb!

如果我在训练后保存模型,再次重新创建模型并从训练后的模型加载权重,它将按预期进行预测,并且文件大小约为 10Mb。

我用来创建模型的代码。

MODULE_HANDLE = 'https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/feature_vector/4'
model = tf.keras.Sequential([
    hub.KerasLayer(MODULE_HANDLE, trainable=True),    
    tf.keras.layers.Dense(train_gen.num_classes, activation='softmax')
    ])
model.build((None,)+IMAGE_SIZE)

我希望这与保存训练信息有关,例如优化器状态。那么,是否有正确的方法来保存模型以进行推理,而无需使用 save-recreate-load_weights 技巧?

【问题讨论】:

【参考方案1】:

尝试分别在tf.keras.Model.save()tf.keras.models.save_model() 中设置include_optimizer=False

【讨论】:

以上是关于如何减小 keras 保存模型的大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何减小 opencv 中学习模型的大小(用于 CvBoost)?

向 keras 顺序模型添加调整大小层

如何将jpeg大小减小到“所需大小”?

减小张量流模型文件的大小

如何在上传到服务器之前减小图像文件大小

ALAsset Library 减小图像的大小,同时将其保存在照片库中