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

网站建设意见做ppt的图片素材网站

网站建设意见,做ppt的图片素材网站,校园网上零售网站建设方案,惠州百度搜索排名优化课程地址 最近做实验发现自己还是基础框架上掌握得不好#xff0c;于是开始重学一遍PyTorch框架#xff0c;这个是课程笔记#xff0c;这个课还是讲的简略#xff0c;我半小时的课听了一个半小时。 1. 张量 1.1 张量操作 #xff08;1#xff09;chunk#xff1a;将一…课程地址 最近做实验发现自己还是基础框架上掌握得不好于是开始重学一遍PyTorch框架这个是课程笔记这个课还是讲的简略我半小时的课听了一个半小时。 1. 张量 1.1 张量操作 1chunk将一个张量分割为特定数目的张量每个块都是输入张量的视图。 按维度0分割 import torchb torch.rand([3, 2]) # 随机生成3x2维度的张量 print(b, b) c, d torch.chunk(b, chunks2) # 将b分割为c和d两个张量默认沿着维度0去分割按行分割 print(c, c) print(d, d) # 最后一个张量维度会稍微小一点因为3不能被2整除运行结果 b tensor([[0.7704, 0.8685], [0.0165, 0.5076], [0.2730, 0.2270]]) c tensor([[0.7704, 0.8685], [0.0165, 0.5076]]) d tensor([[0.2730, 0.2270]]) 按维度1分割 import torchb torch.rand([3, 2]) # 随机生成3x2维度的张量 print(b, b) c, d torch.chunk(b, chunks2, dim1) # 将b分割为c和d两个张量默认沿着维度1去分割按列分割 print(c, c) print(d, d) # 最后一个张量维度会稍微小一点因为3不能被2整除运行结果 b tensor([[0.1275, 0.9670], [0.5189, 0.0748], [0.6840, 0.7675]]) c tensor([[0.1275], [0.5189], [0.6840]]) d tensor([[0.9670], [0.0748], [0.7675]]) 2dsplit将具有三个或更多维度的张量按深度拆分为多个张量。 import torch# 按深度划分按最后一个维度划分看打印结果 a torch.arange(16.0).reshape(2, 2, 4) print(a) b torch.dsplit(a, 2) # 均分两份 print(b) c torch.dsplit(a, [3, 6]) # 第一份是按最后一个维度取前三个值第二份是6个 print(c) d torch.dsplit(a, [2, 4]) # 第一份是1个第二份是4个 print(d) e torch.dsplit(a, [1, 1, 2]) # 第一份是1个第二份是1个第三分是2个 print(e)运行结果 tensor([[[ 0., 1., 2., 3.], [ 4., 5., 6., 7.]], [[ 8., 9., 10., 11.], [12., 13., 14., 15.]]]) (tensor([[[ 0., 1.], [ 4., 5.]], [[ 8., 9.], [12., 13.]]]), tensor([[[ 2., 3.], [ 6., 7.]], [[10., 11.], [14., 15.]]])) (tensor([[[ 0., 1., 2.], [ 4., 5., 6.]], [[ 8., 9., 10.], [12., 13., 14.]]]), tensor([[[ 3.], [ 7.]], [[11.], [15.]]]), tensor([], size(2, 2, 0))) (tensor([[[ 0., 1.], [ 4., 5.]], [[ 8., 9.], [12., 13.]]]), tensor([[[ 2., 3.], [ 6., 7.]], [[10., 11.], [14., 15.]]]), tensor([], size(2, 2, 0))) (tensor([[[ 0.], [ 4.]], [[ 8.], [12.]]]), tensor([], size(2, 2, 0)), tensor([[[ 1.], [ 5.]], [[ 9.], [13.]]]), tensor([[[ 2., 3.], [ 6., 7.]], [[10., 11.], [14., 15.]]])) 3dstack按深度顺序沿第三轴堆叠张量。 import torcha torch.tensor([1, 2, 3]) # 行向量 b torch.tensor([4, 5, 6]) print(torch.dstack((a,b))) a torch.tensor([[1],[2],[3]]) # 列向量 b torch.tensor([[4],[5],[6]]) print(torch.dstack((a,b)))运行结果 tensor([[[1, 4], [2, 5], [3, 6]]]) tensor([[[1, 4]], [[2, 5]], [[3, 6]]]) 4hstack按水平顺序堆叠张量按列 import torcha torch.tensor([1, 2, 3]) # 行向量 b torch.tensor([4, 5, 6]) print(torch.hstack((a,b))) a torch.tensor([[1],[2],[3]]) # 列向量 b torch.tensor([[4],[5],[6]]) print(torch.hstack((a,b)))运行结果 tensor([1, 2, 3, 4, 5, 6]) tensor([[1, 4], [2, 5], [3, 6]]) 5gather沿着某一个维度取变量根据索引取变量这个一看就晕但是我找到了一篇比较好的文章讲解这个 torch.gather() 和torch.sactter_()的用法简析这个讲的最好我就是按照这个学的 import torcht torch.tensor([[1, 2], [3, 4]]) a torch.gather(t, 1, torch.tensor([[0, 0], [1, 0]])) # 按维度1和[[0, 0], [1, 0]]的下标取张量t的元素 # out[i,j] t[i][a[i, j]] # out[0,0] t[0][a[0, 0]]t[0][0]1 # out[0,1] t[0][a[0, 1]]t[0][0]1 # 所以out[0][1, 1] # out[1,0] t[1][a[1, 0]]t[1][1]4 # out[1,1] t[1][a[1, 1]]t[1][0]3 # 所以out[1][4, 5] # 所以out[[1, 1], [4, 3]] print(a) a torch.gather(t, 0, torch.tensor([[0, 0], [1, 0]])) # 按维度0和[[0, 0], [1, 0]]的下标取张量t的元素 # out[i,j] t[a[i, j]][j] # out[0,0] t[a[0, 0]][0]t[0][0]1 # out[0,1] t[a[0, 1]][1]t[0][1]2 # 所以out[0][1, 2] # out[1,0] t[a[1, 0]][0]t[1][0]3 # out[1,1] t[a[1, 1]][1]t[0][1]2 # 所以out[1][3, 2] # 所以out[[1, 2], [3, 2]] print(a)运行结果 tensor([[1, 1], [4, 3]]) tensor([[1, 2], [3, 2]]) 6reshape返回一个张量其数据和元素数量与输入相同但具有指定的形状改变形状不改变顺序比如原来是从左到右然后改成多行后是按从左到右从上到下顺序重新改变形状。 import torcha torch.arange(4.) # 生成从0到3的一维张量 print(torch.reshape(a, (2, 2))) # 改成2X2张量 b torch.tensor([[0, 1], [2, 3]]) print(torch.reshape(b, (-1,))) # -1自动推断变成一维运行结果 tensor([[0., 1.], [2., 3.]]) tensor([0, 1, 2, 3]) 【注】一般在方法名后面加下划线的都是原地操作内存位置不会发生改变 7scatter_ torch.gather() 和torch.sactter_()的用法简析按索引张量更新元素。 import torchsrc torch.arange(1, 11).reshape((2, 5)) print(src) index torch.tensor([[0, 1, 2, 0]]) a torch.zeros(3, 5, dtypesrc.dtype) # 初始化一个和src张量数据类型一样的3X5的0张量 # 这样方便观察非0的部分就是修改过的 z a.scatter_(0, index, src) # 按索引张量将src中的元素写入到z中按维度0写入 # z[index[i][j],j]src[i][j]index中i只有0j从0到3 # z[index[0][0],0]z[0,0]src[0][0]1 # z[index[0][1],1]z[1,1]src[1][1]6 # z[index[0][2],2]z[2,2]src[2][2]i越界1个相当于又变回0索引只有(0,1),则2对应的应该是0,1,0的0以此类推循环src[0][2]3 # z[index[0][3],3]z[0,3]src[0][3]4 print(z) a torch.zeros(3, 5, dtypesrc.dtype) z a.scatter_(1, index, src) # 按索引张量将src中的元素写入到z中按维度1写入 # z[i,index[i][j]]src[i][j]index中只有0j从0到3 # z[0,index[0][0]]z[0,0]src[0][0]1 # z[0,index[0][1]]z[0,1]src[0][1]2 # z[0,index[0][2]]z[0,2]src[0][2]3 # z[0,index[0][3]]z[0,0]src[0][3]4被覆盖最终z[0,0]4 print(z)运行结果 tensor([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]]) tensor([[1, 0, 0, 4, 0], [0, 2, 0, 0, 0], [0, 0, 3, 0, 0]]) tensor([[4, 2, 3, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]) 8scatter_add_以与 scatter_() 类似的方式将张量 src 中的所有值添加到索引张量中指定的索引处的 self 中。 import torchsrc torch.ones((2, 5)) print(src) index torch.tensor([[0, 1, 2, 0, 0]]) z torch.zeros(3, 5, dtypesrc.dtype).scatter_add_(0, index, src) # 按维度0进行相加 print(z) # z[index[i][j], j]src[i][j],i只能为0j从0到4 # z[index[0][0], 0]z[0,0]src[0][0]1 # z[index[0][1], 1]z[1,1]src[0][1]1 # z[index[0][2], 2]z[2,2]src[0][2]1 # z[index[0][3], 3]z[0,3]src[0][3]1 # z[index[0][4], 4]z[0,4]src[0][4]1运行结果 tensor([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]]) tensor([[1., 0., 0., 1., 1.], [0., 1., 0., 0., 0.], [0., 0., 1., 0., 0.]]) 9split将张量划分为多块每块都是原来张量的一部分。 import torcha torch.arange(10).reshape(5, 2) print(a) print(torch.split(a, 2)) # 分成两份最后一份可能会少一点要保证前面均分 print(torch.split(a, [1, 4])) # 按1:4比例划分不指定参数默认按0维度行划分运行结果 tensor([[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]) (tensor([[0, 1], [2, 3]]), tensor([[4, 5], [6, 7]]), tensor([[8, 9]])) (tensor([[0, 1]]), tensor([[2, 3], [4, 5], [6, 7], [8, 9]])) chunk和split的区别【GPT回答】chunk 函数将张量均匀分成几块每块大小相等。split 函数可以根据指定的大小或部分来分割张量每个块的大小可以不相等。总的来说如果您需要将张量均匀地分成几块可以使用 chunk 函数。如果您需要更灵活地指定每个块的大小或部分可以使用 split 函数。 10squeeze将张量中所有维度为1的那个维度移除掉 import torcha torch.tensor([[[1, 2, 3], [1, 2, 3]]]) # 2x3x1张量 a torch.squeeze(a) # 压缩维度为1的维度变成2维张量2X3 print(a)a torch.tensor([[[[1, 2, 3], [1, 2, 3]]]]) # 2x3x1x1张量 a torch.squeeze(a) # 压缩维度为1的维度变成2维张量2X3 print(a)# 压缩指定的维度为1的维度PyTorch低于2.0版本指定的维度不能是list就是相当于用list的元素多次指定要压缩的维度为1的维度的索引所以这里写dim 2 a torch.tensor([[[[1, 2, 3], [1, 2, 3]]]]) # 2x3x1x1张量 a torch.squeeze(a, dim2) # 压缩维度为1的维度且索引为2变成3维张量2X3x1 print(a)运行结果 tensor([[1, 2, 3], [1, 2, 3]]) tensor([[1, 2, 3], [1, 2, 3]]) tensor([[[[1, 2, 3], [1, 2, 3]]]]) 11stack沿着某一个新的维度将一系列张量拼接起来。 import torcha torch.ones(3, 2) # 3x2 全是1的张量 b torch.zeros(3, 2) # 3x3 全是0的张量 c torch.stack([a, b]) # dim 默认为0它们合并到新的张量的第0维新的张量的元素分别是a, b相当于最后是一个三维张量 print(c)c torch.stack([a, b], dim1) # 按行拼接 print(c) 运行结果 tensor([[[1., 1.], [1., 1.], [1., 1.]], [[0., 0.], [0., 0.], [0., 0.]]]) tensor([[[1., 1.], [0., 0.]], [[1., 1.], [0., 0.]], [[1., 1.], [0., 0.]]]) 进程已结束,退出代码0 它们是这样的张量接下来的看法可能不对 如果按维度0进行拼接 后面全是1按0维度这样看就是 tensor([[[1., 1.], [1., 1.], [1., 1.]], [[0., 0.], [0., 0.], [0., 0.]]]) 如果按维度1拼接 按1维度这样看就是 tensor([[[1., 1.], [0., 0.]], [[1., 1.], [0., 0.]], [[1., 1.], [0., 0.]]])
http://www.pierceye.com/news/468249/

相关文章:

  • 重庆南川网站制作价格西宁网站建设优化
  • 电子商务网站建设与管理试卷6平面设计接单兼职
  • 建设手机网站大概要多少钱云南建投二公司官网
  • 公司如何建设网站首页网页设计与网站开发试题答案
  • 中企动力合作网站网站app下载平台怎么做
  • 网站开发专业成功人士重庆邮电大学官网网站
  • 官方网站后台图片下载怎么做网站开发与支付宝端口连接
  • 浏览器怎么打开网站服务器下载在线音乐网站开发摘要
  • 建网站拿到广告吉林整站优化
  • 怎么建站网站清远佛冈住房和城乡建设局网站
  • 领导高度重视门户网站建设广州引流推广公司
  • 公司网站建设吧个好wordpress增加搜索
  • 温州网站推广排名哪家购物网站建设好
  • 宿迁做网站公司哪家好中国建设监理协会化工监理协会网站
  • 网站建设广州天河常州企业自助建站系统
  • 厦门网站建设u贷款在线申请
  • 做肮脏交义的网站南宁住房和城乡建设局网站
  • 办网站需要什么my23777免费域名查询
  • 销售网站开发步骤网站域名到期了怎么办
  • 怎么做注册账号的网站网页打不开视频播放不了是什么问题
  • 江阴市住房和城乡建设局网站免费网页游戏poki
  • 个人网站设计网站建设的基本特点
  • 泉州专业做网站网站被k 原因
  • 18款禁用网站app直播建设部资质网站
  • 免费完整版的网站模板商丘行业网站建设开发公司
  • 网站与微网站区别推广通
  • 京东网站建设的意义wordpress美图
  • 佛山市外贸网站建设公司营销型网站建设 兼职
  • 四川省城乡与建设厅网站中国十大it培训机构排名
  • 国家高新技术企业查询网站汕头整站优化