目录
  • Pytorch torch.diag()创建对角线张量
    • torch.diag()
  • torch.diag()取矩阵对角线元素,torch.diag_embed()指定值变成对角矩阵
    • 1、torch.diag()
    • 2、torch.diag_embed()
  • 总结

    Pytorch torch.diag()创建对角线张量

    torch.diag()

    torch.diag是PyTorch中的一个函数,用于从给定的矩阵中提取对角线元素,或者构造一个以给定对角线元素为值的对角矩阵。这个函数对于矩阵分解和转换等操作非常重要。

    如果输入是一个向量(1D张量),torch.diag会返回一个以该向量为对角线元素的2D方阵。如果输入是一个矩阵(2D张量),则返回一个包含输入矩阵对角线元素的1D张量。

    torch.diag还允许你指定对角线的位置,通过参数diagonal实现。如果diagonal=0,则为主对角线;如果diagonal>0,则为位于主对角线之上的对角线;如果diagonal<0,则为位于主对角线之下的对角线。

    语法:

    • input (Tensor):输入张量。
    • diagonal (int, optional):指定的对角线。
    • out (Tensor, optional):输出张量。

    举例一:

    import torch
     
    data = torch.tensor([1,2,3,4])
    data_two = torch.diag(data,0)
    print(data_two)

    结果:

    举例二:

    import torch
     
    data = torch.tensor(float('inf')).cuda().repeat(3)
    data_two = torch.diag(data,0)
    print(data_two)

    结果:

    torch.diag()取矩阵对角线元素,torch.diag_embed()指定值变成对角矩阵

    1、torch.diag()

    import torch
    a = torch.randn(3, 3)
    print(a)
    tensor([[ 0.7594,  0.8073, -0.1344],
            [-1.7335, -0.4356, -0.0055],
            [ 1.8326,  0.3900, -0.9933]])
    diag = torch.diag(a)  # 取 a 对角线元素,输出为 1*3
    print(diag)
    tensor([ 0.7594, -0.4356, -0.9933])

    2、torch.diag_embed()

    import torch
     
    tensor([ 0.7594, -0.4356, -0.9933])
    a_diag = torch.diag_embed(diag)  # 由 diag 变为三维 3*3
    tensor([[ 0.7594,  0.0000,  0.0000],
            [ 0.0000, -0.4356,  0.0000],
            [ 0.0000,  0.0000, -0.9933]])

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持小闻网。

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。