广告位联系
返回顶部
分享到

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

python 来源:互联网 作者:佚名 发布时间:2024-06-27 21:36:27 人浏览
摘要

Pytorch torch.diag()创建对角线张量 torch.diag() torch.diag是PyTorch中的一个函数,用于从给定的矩阵中提取对角线元素,或者构造一个以给定对角线元素为值的对角矩阵。这个函数对于矩阵分解和转换

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):输出张量。

举例一:

1

2

3

4

5

import torch

  

data = torch.tensor([1,2,3,4])

data_two = torch.diag(data,0)

print(data_two)

结果:

举例二:

1

2

3

4

5

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()

1

2

3

4

5

6

7

8

9

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()

1

2

3

4

5

6

7

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]])


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计