问题描述
我正在 Kotlin 中构建一个 Deep Neural Network (我知道 Python 会更好,但是我必须在Kotlin中这样做)。
要训练网络,我需要从MNIST database中获取大量数据,这意味着我需要从IDX格式的单个文件中读取约 60,000 张图像,并同时存储它们使用。
每个图像都包含784个字节。因此,总大小为: 784 * 60,000 = 47,040,000 =〜47 MB的训练数据 那不是很多,因为我在8GB RAM环境中运行JVM。
读取图像后,我需要将其转换为KMatrix
,这是用于矩阵数学运算的自定义数据结构。 KMatrix
的下方有一个Array<Array<Double>>
。
我需要一次存储所有图像的结构,所以我目前正在使用List<KMatrix>
,它基本上会转换为List<Array<Array<Double>>>
问题在于,在构建List<KMatrix>
时,垃圾收集器会耗尽内存,从而启动OutOfMemoryException: GC overhead limit exceeded
。
我想知道问题是我正在使用哪种数据结构(即,我应该使用ArrayList而不是Array?)还是我正在构建的如何整个过程(即我需要做一些优化工作)。
如有需要,我会尽快放置代码。
感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)