当前位置: 首页 > news >正文

合肥网站优化服务网温州室内设计公司排名

合肥网站优化服务网,温州室内设计公司排名,如何自己建网站企业网站,做得好的企业网站四、tensor常见操作 1、元素值 1.1、获取元素值 tensor.item() 返回tensor的元素#xff1b;只能在一个元素值使用#xff0c;多个报错#xff0c;当存在多个元素值时需要使用索引进行获取到一个元素值时在使用 item。 1.2、元素值运算 tensor对元素值的运算#xff1a;…四、tensor常见操作 1、元素值 1.1、获取元素值 tensor.item() 返回tensor的元素只能在一个元素值使用多个报错当存在多个元素值时需要使用索引进行获取到一个元素值时在使用 item。 1.2、元素值运算 tensor对元素值的运算加、减、乘、除、取余、取整、幂 加减乘除加法、add、add_减法-、sub、sub_乘法*、mul、mul_除法/、div、div_ 取整、取余、幂取整//、取余%与python 列表操作一致每个元素都进行单独运算。 # 运算 加减乘除 # 带_的方法基本上都是修改原数据 import torch torch.manual_seed(666) # 设置随机种子 data1 torch.randint(1,10,(3,3)) data2 torch.randint(1,10,(3,3))# 加法 print() x1 data1100 print(x1) x1 data1.add(100) print(x1) data2.add_(200) print(data2)# 减法 print(----------) x1 data1-100 print(x1) x1 data1.sub(100) print(x1) data2.sub_(200) print(data2)# 乘法 print(**********) x1 data1*100 print(x1) x1 data1.mul(100) print(x1) data2.mul_(200) print(data2)# 除法 print(/) x1 data1/100 print(x1) data2 data2.type(torch.float16) # 原数据为整数需要转为浮点数 x1 data1.div(100) print(x1) data2.div_(200) print(data2) 2、阿达玛积 .dot 点积、* 乘法 、mul 、mm、matmul、 直接相乘或mul方法都是元素对于位置相乘形状相同或者一个为标量 tensor相乘data1.dot(data2) 点积用于一阶张量 data1.mm(data2) 用于二阶张量 data1data2、data1.matmul(data2) 用于一阶及以上张量 import torch# 相乘 * mul() x torch.tensor([[1,2],[3,4]]) y torch.tensor([[11,22],[33,44]]) x1 x*y print(x1) x2 x.mul(y) print(x2)# dot matmul x torch.tensor([1,2]) y torch.tensor([11,22]) x3 x.dot(y) print(x3) x3 x.matmul(y) print(x3) x4 xy print(x4)# matmul mm x torch.tensor([[1,2],[3,4]]) y torch.tensor([[11,22],[33,44]]) x4 x(y) print(x4) x5 x.matmul(y) print(x5) x6 x.mm(y) print(x6)3、索引操作 3.1、下标索引 和列表操作一样根据元素下标获取对应元素 import torch torch.manual_seed(666) x torch.randint(1,10,(2,3,3)) print(x) print(x[1]) print(x[1,2]) print(x[1,2,2]) print(x[1,2,2].item()) 3.2、切片索引 与列表操作一致 import torch torch.manual_seed(666) x torch.randint(1,10,(2,3,3)) print(x[:5]) # 下标超出索引界限并不会报错给出全部数据 print(x[:2,2]) print(x[:2,2:3]) print(x[:2,2:3,1]) print(x[:2,2:3,1:2]) print(x[:2,2:3,1:2][1]) print(x[:2,2:3,1:2][1].item()) 3.3、布尔索引 根据得到True返回对应位置的元素单独索引列时将该列数据变成一维布尔值结果根据结果True的下标再去原函数获取对应数据 import torch torch.manual_seed(666) x torch.randint(1,10,(5,5)) print(x) print(x[x1]) print(x[x5]) 3.4、组合索引 将前面三种索引方式组合使用 多个下标索引 下标索引使用列表时分别取对于数据的多行或多列 x[[1,2]] 取第二行和第三行的所有列 x[,[1,2]] 取所有行的第二列和第三列; 当原数据的行和列都是列表形式时数据一一对应也就是从前往后是 1对11对nn对1n对n,不能n对m 错误x[[0,1],[0,1,2]] 正确应该是x[1,[0,1]] 表示第二行的第一列和第二列x[[0,1],1] 表示第一行和第二行的第二列x[[0,1],[0,1]] 表示第一行的第一列和第二行的第二列数据 多个切片索引维度保持不变,x[:2,:2]表示行取0-1列取0-1的数据 布尔索引和切片索引x[x[1]1, :2]:将x中第二行等于1的数据下标返回作为行下标索引切0-1列数据 import torch torch.manual_seed(15) x torch.randint(2000,3000,(5,5)) print(x) x1 x[(x[:,0]%20) (x[:,1]%21) (x[:,2]%40) (x[:,2]%100!0),3:5] print(x1) 4、拼接 cat 和 stack dim 表示维度 torch.cat([tensor1,tnsor2],dim 0):将tensor1和ensor2拼接dim0表示按照行第一维度拼接添加行列不变dim1表示按照列拼接行不变;dim3表示行列格式不变将元素加维。 import torch torch.manual_seed(666) x torch.randint(1,10,(2,2,2)) y torch.randint(10,20,(2,2,2)) print(x) print(y) z torch.cat([x,y],dim 0) print(z) z torch.cat([x,y],dim 1) print(z) z torch.cat([x,y],dim 2) print(z)torch.stack([tensor1,tensor2],dim0):表示将tensor1和tensor2连接;dim0表示将两个整体放入列表的第一个元素和第二个元素的方式连接dim1表示扩展维度后将两个tensor的行下标相同作为同一列的不同行dim2表示将原本同一行的数据变成同一列不同行相当于把第一个列拆分放入下面最接近的行将第二个同样位置放入第二列扩展维度后两个tensor的对应位置元素相同作为同一行的不同列 import torch torch.manual_seed(666) x torch.randint(1,10,(2,2)) y torch.randint(10,20,(2,2)) print(x) print(y) z torch.stack([x,y],dim 0) print(z) z1 torch.stack([x,y],dim 1) print(z1) z2 torch.stack([x,y],dim 2) print(z2) 5、形状操作 5.1、形状重组 reshape(size)、view(size) reshape(size):与数组一致改变tensor形状 import torch # reshape data torch.randint(0, 10, (4, 3)) print(data) # 1. 使用reshape改变形状 data1 data.reshape(2, 2, 3) print(data1)# 2. 使用-1表示自动计算 data2 data.reshape(2, -1) print(data2) view(size):将内存连续的tensor形状改变返回新的内存连续tensorreshape内存不连续 import torchtensor torch.tensor([[1, 2, 3], [4, 5, 6]])# 使用view进行变形操作 tensor tensor.view(2, -1) print(tensor)# 再次使用view操作 try:tensor tensor.view(3, -1)print(可以使用view) except:print(不可以使用view)# 进行转置 tensor tensor.t() print(tensor)# 转置后使用view操作 try:tensor.view(3, -1)print(可以使用view) except:print(不可以使用view)5.2、维度元素个数交换 transpose(下标)、permute(下标) transpose(维度下标):将两个指定的维度交换 import torch# transpose x torch.tensor([[[1, 2, 3], [4, 5, 6]],[[11, 22, 33], [44, 55, 66]]]) print(x,x.shape) x1 x.transpose(1,0) # 在不改变其他维度下进行了转置 print(x1,x1.shape)permute(维度下标)多个下标根据设置的顺序重新排列维度元素 import torch# permute torch.manual_seed(666) x torch.randint(0,255,(2,3,4)) print(x,x.shape) x2 x.permute(2,0,1) print(x2,x2.shape) x3 x.permute(2,1,0) print(x3,x3.shape) 5.3、维度展开 flatten(start_dim,end_dim) flatten(start_dim,end_dim)默认从0到-1所有维度都展开为一维从start_dim维度开始到end_dim-1维度结束展开 import torchx torch.randint(0,255,(2,3,2)) print(x) x1 x.flatten() print(x1) x2 x.flatten(start_dim0,end_dim1) print(x2) 5.4、降维和升维 squeeze()和unsqueeze() squeeze:无参数默认将自动将所有元素个数为1的维度展开参数为整数表示维度下标 import torchimport torch # 升维和降维 x torch.randint(0,255,(1,3,4,1)) print(x.shape) # torch.Size([1, 3, 4, 1])# 元素个数为1的全部降维 x1 x.squeeze() print(x1.shape) # torch.Size([3, 4])# 第一个维度释放 x11 x.squeeze(0) # torch.Size([3, 4, 1]) print(x11.shape)# 释放第二个维度操作失败因为有多个元素 x11 x.squeeze(1) # torch.Size([1, 3, 4, 1]) print(x11.shape)# 升维度必须填写参数 x2 x.unsqueeze(0) # torch.Size([1, 1, 3, 4, 1]) print(x2.shape)x2 x.unsqueeze(2) # torch.Size([1, 3, 1, 4, 1]) print(x2.shape) 6、分割 chunk 和 split参数都为tensor,num,dim chunk 控制分割结果多少 split 控制分割数量大小 torch.chunk(x, 3,dim0)参数1为tnsor对象参数2为分割成多少个结果不够数量则值保留原大小比如5个内容分为3份(221)2个内容分两份(11)参数3为dim指定维度分隔 torch.split(x, 3,dim0)参数1为tnsor对象参数2为分割数量大小不够数量则值保留原大小比如设置值为3在原说内容切割3个内容分块不够数量就只有一块参数3为dim指定维度分隔 import torchx torch.tensor([[1, 2], [4, 5], [7, 8], [10, 11], [13, 14]]) # 分割成3块 print(torch.chunk(x, 3,dim0)) print(torch.chunk(x, 3,dim1))# 按照每块大小为4进行分割 print(torch.split(x, 4,dim0)) print(torch.split(x, 4,dim1)) 7、广播 两个tensor 直接加法或减法运算时在某个维度的元素个数相等某个tensor维度元素个数全是1全部维度元素个数相等 若全部相等直接对应元素计算 若某个维度相等某个tenser其余维度元素个数全是1将其广播到另一个tensor维度个数大小复制1那个内容数据在进行计算 若某个tensoru维度元素个数全为1则广播值对应tensor维度个数 import torch# 某些维度相等剩下维度个数为1 data1d torch.tensor([[[1,1,1,1]],[[1,1,1,1]]]) data2d torch.tensor([[[11,11,11,11], [22,22,22,22]],[[11,11,11,11], [22,22,22,22]]]) print(data1d.shape, data2d.shape) # 进行计算会自动进行广播机制 print(data1d data2d)# 某些维度相等剩下维度个数为1 data1d torch.tensor([[[1,1,1,1]]]) data2d torch.tensor([[[11,11,11,11], [22,22,22,22]],[[11,11,11,11], [22,22,22,22]]]) print(data1d.shape, data2d.shape) # 进行计算会自动进行广播机制 print(data1d data2d)# 一个rensor维度个数全为1 data1d torch.tensor([[1]]) data2d torch.tensor([[[11,11,11,11], [22,22,22,22]],[[11,11,11,11], [22,22,22,22]]]) print(data1d.shape, data2d.shape) # 进行计算会自动进行广播机制 print(data1d data2d) 8、数据的函数运算 floor向左取值ceil向右取值round四舍五入trunc保留整数frac保留小数fix向零方向取整数abs取绝对值取余%-3%2 结果为 1 import torch data torch.tensor([[1,2,-3.5],[4,5.1,6.5],[7.3,8,9.5],[10,11.8,-12.5]] ) print(data)x1 torch.floor(data) # 向左取值 print(x1)x1 torch.ceil(data) # 向右取值 print(x1)# 使用python的round()函数 # 四舍六入五看整数位数的奇偶性奇进偶不进 x1 torch.round(data) # 使用python的round()函数 print(x1)x1 torch.trunc(data) # 只保留整数部分 print(x1)x1 torch.frac(data) # 只保留小数部分 print(x1)x1 torch.fix(data) # 向零方向保留整数整数操作floor负数操作ceil print(x1)x1 data%2 # 取余 整数减负数加 print(x1)x1 torch.abs(data) # 取绝对值 print(x1) 9、张量保存与加载 save 和  load  import torch x torch.tensor([1, 2 ,3])# save 保存到本地 torch.save(x, ../../data/tengsor_save.pt)# load 加载本地保存文件 x torch.load(../../data/tengsor_save.pt,torch.device(cuda) ) print(x.device) 10、并行化 get_num_threads 查看set_num_threads 设置 线程数设置过高可能会导致线程竞争反而降低性能设置过低可能会导致计算资源未得到充分利用当使用 GPU 进行计算时线程数设置对性能影响较小因为 GPU 计算并不依赖于 CPU 线程数 import torch print(torch.get_num_threads())torch.set_num_threads(4) print(torch.get_num_threads())
http://www.dnsts.com.cn/news/106665.html

相关文章:

  • 房产这么做网站才多点击量昆山规建设局网站
  • dede英文网站网站目录结构图
  • 网站推广主要包括建设期沈阳建设银行网站
  • 学生做网站的软件网站搜索 代码
  • 陕西省档案馆建设网站家庭电脑可以做网站吗
  • 厦门专业网站设计公司wordpress 不同分类 不同主题
  • 织梦cms首页模板文件是哪个seo外链建设的方法有
  • 品牌网站建设保障大蝌蚪石城县网站建设
  • 网站模版怎么做的搜索引擎推广案例
  • 国内网站空间 linux境外 网站网站
  • dede个人网站模板一般网站 要 加入 友情链接吗
  • 自己做免费网站的流程工作室注册流程
  • 怎么做集团网站自己建网站步骤
  • 电脑搭建网站网站上有声的文章是怎么做的
  • asp网站代码 部分封装中山网站建设文化价格
  • 物流网站的建设论文网站制作英文版网站
  • 哪个网站能在线做司考题目资讯网站排版
  • 网站如何做reference视频点播网站开发
  • 电商网站开发脑图网络广告策划公司
  • 宁波外贸seo网站建设集约化网站群建设方案
  • 做图剪片文案网站app接单中信建设有限责任公司钱三强
  • 沈阳seo自然优化排名宁波seo站外优化推广
  • 做ppt模板下载网站为止笔记发布到wordpress
  • php网站开发工程企业邮箱有什么作用
  • 刷赞网站推广空间免费辽宁城乡建设集团网站
  • 在外国租服务器做那种网站北京哪个网站建设最好
  • 天津非常好的网站建设wordpress 查看文章id
  • 网站导航页面模板个人网页制作模板html
  • 做衣服的教程网站有哪些文档生成器app
  • 青岛做公司网站注册的多吗wordpress 怎么安装插件