【发布时间】:2017-09-10 22:18:49
【问题描述】:
我正在 Spark 中开发一种极端学习机器类型的神经网络,它需要使用 Moore-Penrose 伪逆函数。这在任何 Spark 库中都不可用,因此我使用的是 Breeze,它需要将 Spark 数据结构转换为 Breeze 矩阵。当我到达beta = pinv(H) * T 时,一切都因OOM 异常而失败(我认为这在Spark 中是不可能的)。任何想法为什么?
pinv 是 Breeze 中的 Moore-Penrose 伪逆。 H 是一个 35,000 行和 10 列的矩阵。 SVD 应该能够应对这种情况。它不是一个特别大的数据集,仅占用 30Mb。我在笔记本电脑上本地运行所有内容,在云中没有任何内容。我的笔记本电脑(MacBook Air)上有 8G 内存。
我读到您可以使用 spark-shell 命令增加驱动程序内存,但我不知道如何执行此操作,或者它如何与我的 IDE 中设置 SparkSession 的代码链接
val spark: SparkSession = SparkSession
.builder()
.master("local[*]")
.appName("ELMPipelineTest")
.getOrCreate()`
【问题讨论】:
-
好的,谢谢...接下来怎么办,你觉得呢?你是说这太大了,不能在我的笔记本电脑上工作吗? SVD 对算法至关重要,没有它,它就无法工作。您认为增加驱动程序内存会有所不同吗?我真的不知道如何更改内存,说明对于初学者来说非常不透明。感谢您的帮助!
标签: scala apache-spark matrix out-of-memory