簡體   English   中英

如何在 Pytorch 中對角地將幾個矩陣組合成一個大矩陣

[英]How to compose several matrices into a big matrix diagonally in Pytorch

我有幾個矩陣,比如說[M1,M2,M3,M4] 每個矩陣都有不同的形狀。 如何將這些矩陣組合成一個對角線的大矩陣,例如:

[[M1, 0, 0, 0]
 [0, M2, 0, 0]
 [0, 0, M2, 0]
 [0, 0, 0, M2]]

例子:

M1 = [[1,2],[2,1]]
M2 = [[1,2]]
M3 = [[3]]
M4 = [[3,4,5],[4,5,6]]

組成這個大矩陣:

[[1, 2, 0, 0, 0, 0, 0]
 [2, 1, 0, 0, 0, 0, 0]
 [0, 0, 1, 2, 0, 0, 0]
 [0, 0, 0, 0, 3, 4, 5]
 [0, 0, 0, 0, 4, 5, 6]]

以下是使用 SciPy 的方法:

from scipy.sparse import block_diag

block_diag((M1, M2, M3, M4))

使用 PyTorch 的torch.block_diag()

>>> torch.block_diag(M1,M2,M3,M4)

tensor([[1, 2, 0, 0, 0, 0, 0, 0],
        [2, 1, 0, 0, 0, 0, 0, 0],
        [0, 0, 1, 2, 0, 0, 0, 0],
        [0, 0, 0, 0, 3, 0, 0, 0],
        [0, 0, 0, 0, 0, 3, 4, 5],
        [0, 0, 0, 0, 0, 4, 5, 6]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM