【问题标题】:Matrix multiplication giving the error Killed: 9矩阵乘法给出错误被杀死:9
【发布时间】:2022-07-21 18:31:31
【问题描述】:

我面临的问题是我将一个(非常大的)列向量和一个(非常大的)行向量相乘,我得到了错误Killed: 9

更准确地说:我的行向量是 16 个行向量 (0,1) 的张量积,而我的列向量是 16 个列向量 (0,1).T 的张量积。我将这个矩阵乘法实现为:

import numpy as np
import functools as ft

one = np.array([[0,1]]).T
listt = [one,one,one,one,one,one,one,one,one,one,one,one,one,one,one,one]
column_vector = ft.reduce(np.kron, listt)
row_vector = column_vector.T
P = column_vector*row_vector
print(P)

这给了我错误 Killed : 9。我想知道是否有办法做到这一点而不会出现此错误? (打印出结果矩阵似乎毫无意义,但实际上我有一段更长的代码,我在其中进一步使用了结果矩阵,并且在那段代码中我也得到了被杀​​的:9 错误,所以我相信这个问题是一样的)。该代码最多可用于我的张量产品的 15 个条目(尽管速度很慢),但对于 16 个条目,它会给我错误。或许值得一提的是,实际上我的张量积不仅仅是 (0,1) 向量,还包括一些 (1,0) 向量,为了简单起见,我在这里省略了。

非常感谢!

【问题讨论】:

  • 数组中的值有多大,您可以尝试将 dtype 从 int64 减少到 int32 或更好的 uint8 以减少内存分配。当我尝试运行您的示例时,它想分配 32 Gb 的 RAM,这就是我所拥有的

标签: python numpy matrix-multiplication


【解决方案1】:

您正在使用过多的内存。 Killed: 9 来自您的操作系统发送不可忽略的终止信号,通常是由于内存问题。此外,能够用 15 个条目而不是 16 个条目完成相同的过程表示同样的事情。

矩阵和张量运算是您可以做的一些最占用内存的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-17
    • 2019-03-24
    • 2014-11-14
    • 2021-02-15
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多