版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
张量的概念及使用(上)张量的概念及使用01张量的概念
tensor即“张量”,是一种数据结构,实际上跟numpy数组、向量、矩阵的格式基本一样。但是是专门针对GPU来设计的,可以运行在GPU上来加快计算效率。
可以简单理解为:一个可以运行在gpu上的多维数据。Tensor的使用01Torch.device()设备类型我们学习到了张量的基本使用,那么在神经网络中,张量有哪些常见的使用呢?Torch.device()表现了torch.Tensor被分配的设备类型的类,其中分为‘cpu’和‘cuda’两种类型。可以通过torch.cuda.current_device()返回当前设备标号,也可以通过tensor.device()来获取其属性。具体操作如下所示:>>>importtorch#导包>>>torch.device('cuda')#使用当前的cuda设备device(type='cuda')>>>torch.device('cpu')#设置当前设备为CPUdevice(type='cpu')Tensor的使用01
可以利用字符或字符+序号的方式来分配设备,如果设备序号没有显示则表示此tensor被分配到当前设备。#通过字符串和设备号设置>>>torch.device('cuda',0)#设置当前设备为0号cudadevice(type='cuda',index=0)>>>torch.device('cpu',0)
#设置当前设备为0号cpudevice(type='cpu',index=0)Tensor的使用01通过代码自动分配>>>device=torch.device(“cuda”iftorch.cuda.is_available()else“cpu”)#通用
张量的设备分配>>>data=torch.Tensor([1])#声明一个Tensor>>>data.to(device)tensor([1.])#Tensor置于cpu设备上>>>data.to(device)
tensor([1.],device='cuda:0')#Tensor置于cuda设备上Tensor的使用01创建一维、二维、三维张量a=torch.Tensor([1,2,3])b=torch.Tensor([[1,2,3],[4,5,6]])c=torch.Tensor([[[1,2,3],[4,5,6],[7,8,9]]])print('一维张量:',a)print('二维张量:',b)print('三维张量:',c)代码:结果:torch.Tensor(list):根据列表创建多维张量,维度一致Tensor的使用01创建全零/全1张量input=torch.zeros(2)#一维全0张量print(input)print(torch.zeros(2,3))#2行3列的全0张量print(torch.ones(2,3))#2行3列的全1张量print(torch.zeros_like(input))#打印与input相同大小的全0张量print(torch.ones_like(input))#打印与input相同大小的全1张量代码:结果:torch.zeros(*sizes,out=None,..)/torch.ones(*sizes,out=None,..):返回大小为sizes的对应全零/全1张量torch.zeros_like(input,..)/torch.ones_like(input,..):返回与input相同尺寸的对应全零/全1张量Tensor的使用01创建全x张量print(torch.full((3,4),3.14))#3行4列全3.14张量print(torch.full_like(input,2.3))#打印与input相同大小的全2.3矩阵量代码:结果:torch.full(size,fill_value,…)返回大小为size,各元素值都为fill_value的张量Tensor的使用01等差数列张量print(torch.arange(2,8))#默认单位步长是1的等差数列张量print(torch.linspace(2,10,steps=5))#步长为2的等差数列代码:结果:torch.arange(start=0,end,step=1,…)函数,返回结果为[start,end),步长为step的张量等比数列张量torch.linspace(start,end,steps=100)返回从[start,end],间隔中的插值数目为steps的tensor。torch.logspace(start,end,steps=100,base=10)返回steps个从base^start到base^end的等比数列。print(torch.logspace(1,3,steps=3,base=10))#以10为公倍数的等比代码:结果:Tensor的使用01随机张量input=torch.eye(3)#3维单位对角张量print(torch.rand(2,2))#2行2列的[0,1]均匀分布随机数print(torch.rand_like(input))#3行3列的[0,1]均匀分布随机数print(torch.randint(1,10,(2,2)))#2行2列的[1,10]均匀分布随机数print(torch.randn(2,2))#2行2列的标准正态分布随机数代码:结果:torch.rand(*size,out=None,dtype=None,…)返回[0,1]之间均匀分布的随机数值,形状大小由size决定torch.rand_like(input)随机数满足[0,1]均匀分布,形状大小由input决定torch.randint(low=0,high,size,…)返回均匀分布的[low,high]之间的整数随机值。torch.randn(*sizes,out=None,…)返回大小为sizes,均值为0,方差为1的标准正态分布的随机数值。张量的概念及使用(下)Tensor的使用01张量维度扩大Tensor.expand(*sizes):返回tensor的一个新视图,单个维度扩大为更大的尺寸,也可以扩大为更高维。扩大tensor不需要分配新内存,只是仅仅新建一个tensor的视图。x=torch.tensor([[1],[2],[3]])print(x.size())print(x.expand(3,4))#维度扩大为3行4列print(x.expand(-1,2))#-1表示自动计算数值print(x)代码:结果:Tensor的使用01张量维度重复Tensor.repeat(*sizes)沿着指定的维度重复tensor,不同于expand(),本函数复制的是tensor中的数据。x=torch.tensor([1,2,3])#定义一个1*3tensorprint(x.repeat(4,2))#复制x中的元素值使变成4*6的tensor(1*4,2*3)print(x)print(x.repeat(4,2,1).size())#复制x中的元素变成3个维度:[4,2,3]代码:结果:Tensor的使用01维度扩展前面学到过torch.squeeze()函数进行压缩,去除tensor维度。torch.unsqueeze(input,dim,out=None)函数主要是进行扩展,第二个参数为0时,数据是行方向扩,为1时是列方向扩。x=torch.tensor([1,2,3,4])print(torch.unsqueeze(x,0))#向行方向扩展print(x.unsqueeze(1))#向列方向扩展代码:结果:Tensor的使用01改变维度方式一:torch.reshape(input,shape)返回与输入相同的数据,但具有指定形状的tensor。方式二:Tensor.reshape(shape)返回与输入相同的数据,但具有指定形状的tensor。a=torch.arange(6)#生成tensorb=torch.reshape(a,(3,2))#重新组合形状为3*2c=a.reshape(2,-1)#重新组合形状为2*3print(b)print(c)代码:结果:Tensor的使用01维度交换
torch.transpose(input,dim0,dim1)将张量按指定的2个维度交换位置,实现类似矩阵转置的操作。x=torch.randint(1,10,(2,3))#生成2行3列[1,10]之间的随机整数print(x)print(torch.transpose(x,0,1))#将0维与1维调换位置代码:结果:Tensor的使用01转换成数值item()在提取损失值的时候,常常会用到loss.item(),其返回值是一个Python数值(pythonnumber)。item()将tensor格式转化为python的数据类型格式。注意item()只适用于tensor只包含一个元素的时候。因为大多数情况下我们的损失值就只有一个元素,所以就经常会用到loss.item()。如果想把含多个元素的tensor转换成Pythonlist的话,要使用tensor.tolist()。Tensor的使用01x=torch.randn(1)#随机生成1个1*1的正态分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理查房:护理服务全员参与
- 西北电力设计院汽水管道支吊架设计手册
- 2026三年级数学下册 年月日的记忆
- 德育包保责任制度
- 心理包保责任制度
- 意识形态责任制七项制度
- 房屋出售责任制度
- 执法主体责任制度汇编
- 扶贫包保责任制度
- 技术质量责任制度
- 2026年部编版三年级道德与法治下册全册教案
- 2026年小学四年级下册劳动教育教学计划
- 酒店客房员工考核制度
- 2026年内蒙古商贸职业学院单招职业技能测试题库附答案详解(夺分金卷)
- 2025四川遂宁市中心医院公开招聘非在编卫生专业技术人员30人护理笔试历年典型考题及考点剖析附带答案详解试卷2套
- 2026年春季学期学校红领巾广播站工作计划及栏目设置表更新通知
- 小儿静脉血栓栓塞症诊疗指南
- 2026云南昆明巫家坝商业运营管理有限公司校园招聘8人笔试备考题库及答案解析
- 2026年及未来5年中国耐火粘土行业发展运行现状及投资战略规划报告
- 五年级数学下册期末真题卷(人教版成都锦江区)
- 培训学校理事会监督制度
评论
0/150
提交评论