block_diag
根据输入的张量创建块对角矩阵。
本 API 支持两种调用方式:
Paddle 风格:
paddle.block_diag(inputs, name=None)使用张量序列作为输入。PyTorch 风格:
paddle.block_diag(*tensors)使用可变数量的张量参数。
参数
inputs (list|tuple) - 张量列表或张量元组,其子项为 0、1、2 维的 Tensor。数据类型为:
bool、float16、float32、float64、uint8、int8、int16、int32、int64、bfloat16、complex64、complex128。name (str,可选) - 具体用法请参见 api_guide_Name,一般无需设置,默认值为
None。
返回
Tensor, 与 inputs 数据类型相同。
代码示例
>>> import paddle
>>> A = paddle.to_tensor([[4], [3], [2]])
>>> B = paddle.to_tensor([7, 6, 5])
>>> C = paddle.to_tensor(1)
>>> D = paddle.to_tensor([[5, 4, 3], [2, 1, 0]])
>>> E = paddle.to_tensor([[8, 7], [7, 8]])
>>> out = paddle.block_diag([A, B, C, D, E])
>>> print(out)
Tensor(shape=[9, 10], dtype=int64, place=Place(cpu), stop_gradient=True,
[[4, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[3, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[2, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 7, 6, 5, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 5, 4, 3, 0, 0],
[0, 0, 0, 0, 0, 2, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 8, 7],
[0, 0, 0, 0, 0, 0, 0, 0, 7, 8]])