【发布时间】:2018-04-15 20:04:12
【问题描述】:
我想从相同形状的方阵列表中构建块对角矩阵。
This answer 解释了如何对单个矩阵进行处理,但我有一大堆不同的矩阵需要制作成块矩阵。
我想在 GPU 上的 Theano 中执行此操作,因此性能是必需的(并且该功能必须存在于 Theano 中)。
详情: 这样做的原因是当有许多小矩阵(例如,大约 10000 个 7x7 矩阵)时,在 GPU 上加速特征值/向量的计算。我不想分别获取每个小矩阵的特征值(在 GPU 上非常慢),而是想在块对角矩阵上执行大 EVD(与小矩阵相同的特征值)。 希望这会更快,并且矩阵的稀疏性不会产生太多开销(或者 EIGH 可能会利用这一点)。
【问题讨论】:
-
scipy 中有一个块对角方法,也许你可以使用它。为什么需要在theano中构造矩阵? docs.scipy.org/doc/scipy-1.0.0/reference/generated/…
-
@JacquesKvam 我注意到 scipy 具有此功能,尽管我正在寻找 numpy / theano 中的实现。为什么要问原因?我正在使用 theano,所以我需要在 theano 中使用它!
-
如果你只需要构造一次矩阵,你可以用numpy/scipy来做,然后转换成theano。很难说没有更多细节。
-
@JacquesKvam 添加了一些细节。当然,如果我只需要执行一次,我就不会在 theano 中执行:问题是我必须在训练 DNN 期间执行多次(实际上,作为梯度下降算法的一部分)。
-
This Mathematica answer does it 虽然我在用 numpy 翻译代码时遇到了麻烦。
标签: python arrays numpy theano