PyTorch创建张量方法全解

本文介绍PyTorch创建张量的三种方式,分别为直接创建、依据数值创建以及依据概率创建

1.直接创建

1.1 使用数组创建

1.1.1 语法:
PyTorch创建张量方法全解_第1张图片
1.1.2 说明:
PyTorch创建张量方法全解_第2张图片
1.1.3 程序:

arr=np.ones((3,3))
print("arr的数据类型为:"+str(arr.dtype))
t=torch.tensor(arr)
print(t)

1.1.4运行结果:
PyTorch创建张量方法全解_第3张图片

1.2 使用numpy创建

1.2.1 语法:
在这里插入图片描述
1.2.2说明:
PyTorch创建张量方法全解_第4张图片
1.2.3 程序:

arr=np.array([[1,2,3],[4,5,6]])
t=torch.from_numpy(arr)
print(t)

1.2.4结果:
在这里插入图片描述
1.2.5探究内存共享机制:
修改array的内存中数字,查看tensor是否发生改变:

arr=np.array([[1,2,3],[4,5,6]])
t=torch.from_numpy(arr)
arr[0,0]=0
print(t)

结果如下:第[0,0]位数值发生可改变。
在这里插入图片描述
修改tensor的内存数值,查看array是否发生改变:

arr=np.array([[1,2,3],[4,5,6]])
t=torch.from_numpy(arr)
t[0,0]=-1
print(arr)

结果如下:改变张量的[0,0]号位数值,与其对应的array数组[0,0]也发生变化:
在这里插入图片描述

2.依据数值创建

2.1创建全0张量

2.1.1 语法:
PyTorch创建张量方法全解_第5张图片
2.1.2 说明:
PyTorch创建张量方法全解_第6张图片
2.1.3 程序:

t=torch.zeros((3,2))
print(t)

在这里插入图片描述
其结果是一个3*2的全零矩阵,而当其size的参数为三个时,实验结果表明:第一个数值为维度数,后面两个数值分别为行数和列数

t=torch.zeros((3,2,3))
print(t)

PyTorch创建张量方法全解_第7张图片

2.2zeros_like()创建全0张量

2.2.1 语法:
PyTorch创建张量方法全解_第8张图片
2.2.2说明:
PyTorch创建张量方法全解_第9张图片
2.2.3程序:

t=torch.zeros((3,2,3))
t1=torch.zeros_like(t)
print(t1)

PyTorch创建张量方法全解_第10张图片
重点:这里input的类型,不能是元组,而应该是tensor形式,上述,我们使用了t作为input输入。

2.3 full()和full_like()填充数值

2.3.1语法:
PyTorch创建张量方法全解_第11张图片
2.3.2说明:
PyTorch创建张量方法全解_第12张图片
2.3.3程序:

t=torch.full((2,3),1)
print(t)

结果:
在这里插入图片描述
其中,(2,3)表示构建一个2*3的举证,并且全部填充为1。

t=torch.zeros((3,2,3))
t1=torch.full_like(t,1)
print(t1)

PyTorch创建张量方法全解_第13张图片
这里和zeros_like()函数一样,input的输入类型也是tensor类型,对代码进一步解析:t继承了3维度,2*3行列的矩阵样式;因此t1也是这种类型,随后全部被填充为1。

2.4 创建等差1维张量

2.4.1语法:
PyTorch创建张量方法全解_第14张图片
2.4.2说明:
PyTorch创建张量方法全解_第15张图片
2.4.3程序:

t=torch.arange(1,10,2)
print(t)

在这里插入图片描述
这里参数需要注意的是:[start,end)表示为起始数值包含在内,而终止数值不包含在内。2为步长。

2.5创建均分1维张量

2.5.1 语法:
PyTorch创建张量方法全解_第16张图片
2.5.2说明:
PyTorch创建张量方法全解_第17张图片
2.5.3程序:

t=torch.linspace(1,10,3)
print(t)

在这里插入图片描述
这里起始和终止的条件为闭区间,即:[start,end]。将这个闭区间均分的个数,这里均分为三分。同理,还可以将其均分为6份,7份等等。
在这里插入图片描述

2.6创建对数均分1维张量

2.6.1语法:
PyTorch创建张量方法全解_第18张图片
2.6.2说明:
PyTorch创建张量方法全解_第19张图片
2.6.3程序:

t=torch.logspace(1,10,5,10.0)
print(t)

结果:
在这里插入图片描述
其中10.0为底数。

2.7创建对角矩阵

2.7.1语法:
PyTorch创建张量方法全解_第20张图片
2.7.2说明:
PyTorch创建张量方法全解_第21张图片
2.7.3程序:

t=torch.eye(3,3)
print(t)

结果:
在这里插入图片描述

3.依据概率分布创建

3.1创建正态随机分布张量

3.1.1语法:
PyTorch创建张量方法全解_第22张图片
3.1.2说明:
PyTorch创建张量方法全解_第23张图片
3.1.3程序:

mean=torch.arange(1,10,dtype=torch.float)
std=torch.arange(1,10,dtype=torch.float)
print("mean:"+str(mean))
print("std:"+str(std))
t=torch.normal(mean=mean,std=std)
print(t)

结果:
在这里插入图片描述
说明:这里dtype=torch.float不可缺少,否则会报错:_th_normal not supported on CPUType for Long。这里mean表示均值,std表示标准差。因此该程序可以理解为创建1维度的张量,其第1个值为取自均值为1,标准差为1的正态分布中一个随机值,第2个值取值均值为2,标准差为2的正态分布中一个随机值…

3.2创建标准正态分布张量

3.2.1语法:
PyTorch创建张量方法全解_第24张图片
3.2.2说明:
在这里插入图片描述
3.2.3程序:

t=torch.randn(2,3)
print(t)

在这里插入图片描述
程序表明,从标准正态分布(均值为0,方差为 1,即高斯白噪声)中抽取一组随机数组成1维张量,其大小为2*3。

t=torch.zeros((3,2,2))
t1=torch.randn_like(t)
print(t1)

PyTorch创建张量方法全解_第25张图片

3.3 创建均匀分布张量

3.3.1 语法:
PyTorch创建张量方法全解_第26张图片
3.3.2 说明:
在这里插入图片描述
3.3.3 程序:

t=torch.rand(2,3)
print(t)

在这里插入图片描述

t=torch.zeros((2,4))
t1=torch.rand_like(t)
print(t1)

在这里插入图片描述

源码获取

关注公众号,回复:张量
PyTorch创建张量方法全解_第27张图片

你可能感兴趣的:(pytorch,python,人工智能,深度学习)