我正在Spark中开发极端学习机器类型的神经网络,需要使用Moore-Penrose伪逆函数。这在任何Spark库中都不可用,所以我使用Breeze,它需要将Spark数据结构转换为Breeze矩阵。当我达到beta = pinv(H) * T
时,所有内容都会失败,并出现OOM异常(我认为这在Spark中并不可行)。任何想法为什么?Breeze pinv(Moore-Penrose)伪反函数使用Spark给出OutOfMemory错误
pinv
是Breeze中的Moore-Penrose伪逆。 H是35,000行和10列的矩阵。 SVD应该能够应对这一点。这不是一个特别大的数据集,只占用30Mb。我在我的笔记本电脑本地运行所有东西,没有任何东西在云端。我的笔记本电脑上有8G内存(MacBook Air)。
我读了你可以使用火花shell命令增加驱动器的内存,但我不知道如何做到这一点,否则会如何与我的IDE中的代码,树立SparkSession
val spark: SparkSession = SparkSession
.builder()
.master("local[*]")
.appName("ELMPipelineTest")
.getOrCreate()`
链接
好的,谢谢......那么接下来呢,你觉得呢?你是说这太大了无法在我的笔记本电脑上工作? SVD对算法是必不可少的,如果没有它,它将无法工作。你认为增加驾驶记忆会有所作为吗?我真的不知道如何改变内存,对于初学者来说,这些指令是非常不透明的。谢谢你的帮助! – LucieCBurgess