保存更新的模型时,Core ML使用过多的内存

问题描述

对于我的论文,我正在使用设备上的培训来更新一个模型,该模型使用图像(CVPixelBuffers)作为输入来进行预测。

对于培训,我使用200张尺寸为224x224的图像。有两层正在更新。它们都是innerProducts(1000x12167和1x1000)。由于这些参数很多,因此我尝试将它们缩小为一层(1x12167),但这影响不大。

一旦MLUpdateTask启动,内存使用量将跃升至⁓1,3GB(也带有减少的参数)。训练已完成,但是当使用以下方式保存和加载更新的模型时

finalContext.model.write(to: fileURL)
model = model_updatable(contentsOf: fileURL)

由于内存问题而终止。是什么导致此问题,并且有办法绕过它?将输入从图像更改为multiArrays是否会有区别?

编辑: 使用20张图像作为输入仅会导致训练期间使用⁓1,1GB的内存,并允许该应用程序保存/加载更新的模型,而总最大内存使用量为1,39 GB。可悲的是我确实需要输入200张图像。

亲切的问候尼尔斯

解决方法

谁知道会发生什么... Core ML是一个黑匣子,我们无法查看内部情况。

您的模型可能太大而无法在设备上进行更新。

但是,有时由于错误,Core ML内存使用量会爆炸。我建议向Apple提交错误报告。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...