繁体   English   中英

矩阵处理的RAM要求

[英]RAM requirements for matrix processing

因此,我正在为计算机视觉项目设计矩阵,并认为我的计算之一是错误的。 不幸的是,我不确定哪里出了问题。

我正在考虑创建一个100,000,000 x 100,000,000的矩阵,每个“单元格”都包含一个整数(1或0)。 如果我的计算正确,则将需要9.53674316×10 ^ 9 MB。 那是对的吗?!?

我的下一个问题是,如果它是正确的,是否有办法在保持矩阵大小不变的情况下将内存需求降低到更现实的水平? 当然,确实有可能我实际上不需要这个大小的矩阵,但这绝对是最糟糕的情况(由朋友提出)。 这个大小对我来说似乎很荒谬,因为我们一次只能覆盖这么小的距离。

安东尼

理论上,{0,1}元素每个单元最多应消耗1位。 这意味着每字节8个单元或1192092895兆字节或大约1 PB ,这太高了,除非您是google :)更不用说,即使处理(或保存)这样的矩阵也将花费太多时间(大约一年) )。

您说过,在许多情况下,您甚至都不需要这么大的矩阵。 因此,您可以在开始时创建较小的矩阵(10,000 x 10,000),然后在每次需要放大时将其大小加倍,从而复制旧内容。

如果矩阵是稀疏的 (1的数目比0的数目大得多,反之亦然),那么仅存储坐标在某些有效数据结构中的位置的效率要高得多,具体取决于所需的操作(搜索,数据访问)。

旁注:在许多语言中,您必须充分注意这一点,例如在C语言中,即使将变量指定为布尔值,它仍然占用一个字节,是所需字节数的8倍。

您的计算是正确的,假设使用单个字节存储每个布尔值,这就是dtype=bool的Numpy数组将执行的操作。

如果您期望矩阵的相对较少的条目将是1,则可以考虑使用scipy.sparse矩阵; 那只会存储那些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM