有感
机器学习,深度学习有很多基础的知识需要去理解,参悟。还有很多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/84657975torch.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不理解,所以开始了研究。
先定义一个tensor1
c = torch.tensor([[ 1, 2, 3],[-1, 1, 4]] , dtype= torch.float)
求其在维度0处和1处的范数1
2
3
4
5
6torch.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
6at = 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)