长安的花

当学问走过漫漫古道
凿刻入千窟,心也从愚昧中苏醒

0%

torch.norm 介绍

有感

机器学习,深度学习有很多基础的知识需要去理解,参悟。还有很多torch的操作需要去学,不可盲目进取,妄自菲薄,在这里开一个坑,慢慢的记录一下torch的基础操作,持续更新中

https://www.tensorflow.org/guide/tensor?hl=zh-cn
https://blog.csdn.net/qq_35632833/article/details/103649578
https://blog.csdn.net/goodxin_ie/article/details/84657975

torch.norm

torch.norm是对输入的Tensor求范数

1
2
norm(input, p='fro', dim=None, keepdim=False, out=None, dtype=None)
Returns the matrix norm or vector norm of a given tensor.

因为对这里的keepdim不理解,所以开始了研究。

先定义一个tensor

1
c = torch.tensor([[ 1, 2, 3],[-1, 1, 4]] , dtype= torch.float)

求其在维度0处和1处的范数

1
2
3
4
5
6
torch.norm(c, dim=0)
#输出
#tensor([1.4142, 2.2361, 5.0000])
torch.norm(c, dim=1)
#输出
#tensor([3.7417, 4.2426])

解释一下 这里的 维度0表示 tensor([[ 1, 2, 3],[-1, 1, 4]])里的0维的内容,这里剥去最外面一层[]得到[ 1, 2, 3],[-1, 1, 4],问题就转变为,求[ 1, 2, 3],[-1, 1, 4]的范数。我的理解是这里是三个向量,[1,-1] [2,1] [3,4],得到他们的范数是[1.4142, 2.2361, 5.0000],同理,1维的内容是[ 1, 2, 3][-1, 1, 4],这里只有两个向量,所以求其范数,得到的是两个值[3.7417, 4.2426]

keepdim用法

在这里再定义一个2,1,3的张量

1
c = torch.tensor([[[ 1, 2, 3]],[[-1, 1, 4]]] , dtype= torch.float)

这里讲一下213,在最外面一层方括号里有2对方括号,在每一对方括号里有1行3列。
1
2
3
4
5
6
at = torch.norm(a,p=2,dim=1,keepdim=True)
#tensor([[[1., 2., 3.]],
# [[1., 1., 4.]]])
af = torch.norm(a,p=2,dim=1,keepdim=False)
#tensor([[1., 2., 3.],
# [1., 1., 4.]])

注意观察区别,可以发现,加了True的命令,最外面多了一层方括号,即,加了keepdim=True的维度任然保持在 (2,1,3),加了keepdim=False的命令,维度降低成(2,3)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道