[Pytorch系列-18]:Pytorch基础 - 张量的范数
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Pytorch系列-18]:Pytorch基础 - 张量的范数相关的知识,希望对你有一定的参考价值。
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119707901
目录
1.3 范数的函数说明:torch.norm(input, p='fro', dim=None)
第1章 什么是范数
1.1 常见的范数与定义
范数简单的讲,就是某个向量X(x0,x1,x3.....xn)的“长度”。
为了根据向量的每个元素值计算该向量的“长度”,可以有不同的规则,即所谓的范数的阶数,这些规则,称为范数的阶数,常见的阶数有:
一阶范数:使用每个向量元素的绝对值的和,来作为向量的长度。
二阶范数:使用每个向量元素的平方的和,再开根号,来作为向量的长度。
无穷阶范数:使用所有向量元素中,绝对值最大的值,作为向量的长度。
其中使用最广泛的方式就是二阶范数,原因有二:(1)二阶范畴最接近几何意义;(2)平方和开根号,可以进行求导,而一阶和无穷阶范数都时绝对值,不能求导数。
1.2 代码演示的前置条件
#环境准备
import numpy as np
import torch
print("Hello World")
print(torch.__version__)
print(torch.cuda.is_available())
1.3 范数的函数说明:torch.norm(input, p='fro', dim=None)
功能说明:求张量元素的范数
参数说明:
- input:输入张量
- p:范数阶数,如1,2,np.inf (无穷)
- dim:维度方向
第3章 多阶范数
3.1 一阶范数
# 代码示例:
print("源张量")
a = torch.Tensor([[-1.,1.],[1.,-1.]])
print(a)
print("\\n范数:全部元素,1阶范数")
b = torch.norm(a, p = 1) # 1阶范数:每个元素绝对值的和
print(b)
输出 :
源张量
tensor([[-1., 1.],
[ 1., -1.]])
范数:全部元素,1阶范数
tensor(4.)
3.2 二阶范数
# 代码示例
print("源张量")
a = torch.Tensor([[-1.,1.],[1.,-1.]])
print(a)
print("\\n范数:全部元素,2阶范数")
b = torch.norm(a, p = 2) # 2阶范数:每个元素平方的和,再开平方根号
print(b)
print("\\n范数:默认全部元素,2阶范数")
b = torch.norm(a)
print(b)
输出:
源张量
tensor([[-1., 1.],
[ 1., -1.]])
范数:全部元素,2阶范数
tensor(2.)
范数:默认全部元素,2阶范数
tensor(2.)
3.3 无穷阶范数
#代码示例:
print("源张量")
a = torch.Tensor([[-1.,1.],[1.,-1.]])
print(a)
print("\\n范数:全部元素,无穷范数")
b = torch.norm(a, p = np.inf) # 无穷阶范数:绝对值中的最大值
print(b)
输出:
源张量
tensor([[-1., 1.],
[ 1., -1.]])
范数:全部元素,无穷范数
tensor(1.)
第4章 指定维度方向上的范数
4.1 dim =0方向上的范数
#代码示例:
print("源张量")
a = torch.Tensor([[-1.,1.],[2.,-2.]])
print(a)
print("\\n范数:axis=0,2阶范数")
b = torch.norm(a,p=2, dim=0)
print(b)
输出:
源张量
tensor([[-1., 1.],
[ 2., -2.]])
范数:axis=0,2阶范数
tensor([2.2361, 2.2361])
4.2 dim =1方向上的范数
#代码示例:
print("源张量")
a = torch.Tensor([[-1.,1.],[2.,-2.]])
print(a)
print("\\n范数:axis=1,2阶范数")
b = torch.norm(a,p=2, dim=1)
print(b)
输出:
源张量
tensor([[-1., 1.],
[ 2., -2.]])
范数:axis=1,2阶范数
tensor([1.4142, 2.8284])
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119707901
以上是关于[Pytorch系列-18]:Pytorch基础 - 张量的范数的主要内容,如果未能解决你的问题,请参考以下文章
[Pytorch系列-20]:Pytorch基础 - Varialbe变量的手工求导和自动链式求导
[Pytorch系列-22]:Pytorch基础 - Autograd库 Autograd.Function与反向自动求导机制
[Pytorch系列-21]:Pytorch基础 - 反向链式求导的全过程拆解
[Pytorch系列-19]:Pytorch基础 - Variable变量的使用方法与 Tensor变量的比较