You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch批量块对角矩阵构造实现方案咨询

批量构造块对角矩阵的实现方案

针对批量张量构造块对角矩阵的需求,这里有两种简单高效的实现方式:

方法一:直接赋值填充零矩阵

先初始化对应形状的全零张量,再将两个输入张量分别填充到结果的左上角和右下角区域:

import torch

# 示例参数
n, d, e = 3, 2, 3
A = torch.randn(n, d, d)
B = torch.randn(n, e, e)

# 创建结果张量
result = torch.zeros(n, d+e, d+e, dtype=A.dtype, device=A.device)
# 填充A到左上角区块
result[:, :d, :d] = A
# 填充B到右下角区块
result[:, d:, d:] = B

方法二:Pad后相加

通过对两个张量分别做padding扩展到目标形状,再相加得到块对角矩阵:

import torch
import torch.nn.functional as F

n, d, e = 3, 2, 3
A = torch.randn(n, d, d)
B = torch.randn(n, e, e)

# 对A做右、下方向的padding,补e个零
A_padded = F.pad(A, (0, e, 0, e))
# 对B做左、上方向的padding,补d个零
B_padded = F.pad(B, (d, 0, d, 0))
# 相加得到块对角结果
result = A_padded + B_padded

这两种方法都能高效处理批量场景,避开了torch.block_diag仅支持二维张量的局限。

内容的提问来源于stack exchange,提问作者yeich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 01:45:26