PyTorch创建张量方法全解

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

1.直接创建

1.1 使用数组创建

1.1.1 语法:
**troch.tensor(data,)**
1.1.2 说明:
在这里插入图片描述
1.1.3 程序:

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

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

1.2 使用numpy创建

1.2.1 语法:
在这里插入图片描述
1.2.2说明:
在这里插入图片描述
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 语法:
在这里插入图片描述
2.1.2 说明:
在这里插入图片描述
2.1.3 程序:

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

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

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

在这里插入图片描述

2.2zeros_like()创建全0张量

2.2.1 语法:
在这里插入图片描述
2.2.2说明:
在这里插入图片描述
2.2.3程序:

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

在这里插入图片描述
重点:这里input的类型,不能是元组,而应该是tensor形式,上述,我们使用了t作为input输入。

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

2.3.1语法:
在这里插入图片描述
2.3.2说明:
在这里插入图片描述
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)

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

2.4 创建等差1维张量

2.4.1语法:
在这里插入图片描述
2.4.2说明:
在这里插入图片描述
2.4.3程序:

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

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

2.5创建均分1维张量

2.5.1 语法:
在这里插入图片描述
2.5.2说明:
在这里插入图片描述
2.5.3程序:

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

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

2.6创建对数均分1维张量

2.6.1语法:
在这里插入图片描述
2.6.2说明:
在这里插入图片描述
2.6.3程序:

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

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

2.7创建对角矩阵

2.7.1语法:
在这里插入图片描述
2.7.2说明:
在这里插入图片描述
2.7.3程序:

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

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

3.依据概率分布创建

3.1创建正态随机分布张量

3.1.1语法:
在这里插入图片描述
3.1.2说明:
在这里插入图片描述
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语法:
在这里插入图片描述
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)

在这里插入图片描述

3.3 创建均匀分布张量

3.3.1 语法:
在这里插入图片描述
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)

在这里插入图片描述

源码获取

关注公众号,回复:张量
sklearn实现神经网络

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值