tensorflow - 在keras中保存模型还是只保存权重更好?
问题描述
我有一个类和子类的列表,因为它们仅在最后一层就有大约 700 个类,我认为单独训练每组类会更好。但是在我训练它们并能够一起使用它们之后,我发现我加载的模型越多,它就越会消耗内存。据我所知,使用 Keras 只有两种选择,一种是使用加载模型,另一种是仅加载模型权重。问题是我看到内存几乎没有变化,两者都使用相同数量的内存。如何加载消耗更少内存的模型?
解决方案
内存消耗在很大程度上取决于模型的架构。
不同的加载类型几乎没有区别,因为真正消耗内存的加载操作是权重加载,可能有数百万个浮点数。
load_model
实际上,您无需编写单独的代码来加载模型的架构(一个描述模型架构的 json 文件)。
因此,load_model ~ load_weights
,其中load_model
运算等于load_weights + load_json_architecture
。
您无法使用上述解决方案加载消耗较少内存的模型。
您可以做的是使用模型修剪/训练后量化,从而减少内存消耗。
推荐阅读
- javascript - 可执行电子应用程序找不到模块
- angular - Angular - 当并非所有字段都来自用户输入时提交表单
- git - 如何成功地将分支重新定位到包含分支的提交的(github)压缩提交?
- yaml - 递归定义 YAML 映射
- python - Python多处理pyaudio错误(输入用完)
- java - jarsigner 在 OpenJDK 8 中设置类路径
- java - 在 Android Studio 中完成后如何从可运行线程传递值?
- pyspark - Pyspark:SPARK_HOME 可能配置不正确
- java - 获取可以在 EditText 中显示的字符数
- android - 如何从 Blender(例如徽标/动画屏幕)创建透明视频以作为 Android/iOS 应用程序的一部分播放?