开发者

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

开发者 https://www.devze.com 2024-08-10 09:47 出处:网络 作者: 湫兮之风
目录Pytorch torch.diag()创建对角线张量torch.diag()torch.diag()取矩阵对角线元素,torch.diag_embed()指定值变成对角矩阵1、torch.diag()2、torch.diag_embed()总结Pytorch torch.diag()创建对角线张量
目录
  • 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中的一个函数,用于从给定的矩阵中提取对角线元素,或者构造一个以给定对角线元素python为值的对角矩阵。这个函数对于矩阵分解和转换等操作非常重要。

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

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

    语法:

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

    举例一:

    import torc编程客栈h
     
    data = torch.tensor([1,2,3,4])
    data_two = torch.diag(data,0)
    print(data_two)

    结果:

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

    举例二:

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

    结果:

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

    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],
    php        [ 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]])

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号