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

网站建设与维护结课论文做玩网站怎么上传

网站建设与维护结课论文,做玩网站怎么上传,培训教育类网站模板,项目管理pmp本文参加新星计划人工智能(Pytorch)赛道#xff1a;https://bbs.csdn.net/topics/613989052 这是目录Tensor的分块Tensor的变形Tensor的排序Tensor的极值Tensor的in-place操作Tensor是PyTorch中用于存储和处理多维数据的基本数据结构#xff0c;它类似于NumPy中的ndarrayhttps://bbs.csdn.net/topics/613989052 这是目录Tensor的分块Tensor的变形Tensor的排序Tensor的极值Tensor的in-place操作Tensor是PyTorch中用于存储和处理多维数据的基本数据结构它类似于NumPy中的ndarray但是可以在GPU上进行加速计算。在使用Tensor进行深度学习模型的构建和训练时我们经常需要对Tensor进行一些操作例如分块、变形、排序、极值等。本文将介绍这些操作的方法和用途并介绍一种特殊的操作方式in-place操作。 Tensor的分块 Tensor的分块chunking是指将一个大的Tensor沿着某个维度切分成若干个小的Tensor这样可以方便地对每个小Tensor进行单独处理或并行计算。PyTorch提供了torch.chunk函数来实现这个功能它接受三个参数要切分的Tensor切分后得到的份数以及要切分的维度。例如 import torch x torch.arange(16).reshape(4, 4) # 创建一个4x4的整数矩阵 print(x) # tensor([[ 0, 1, 2, 3], # [ 4, 5, 6, 7], # [ 8, 9, 10, 11], # [12, 13, 14, 15]]) y torch.chunk(x, chunks2, dim0) # 沿着第0维行切分成两份 print(y) # (tensor([[0, 1, 2, 3], # [4, 5, 6, 7]]), # tensor([[8 ,9 ,10 ,11], # [12 ,13 ,14 ,15]])) z torch.chunk(x,chunks2,dim1) # 沿着第1维列切分成两份 print(z) # (tensor([[0 ,1 ], # [4 ,5 ], # [8 ,9 ], # [12 ,13]]), # tensor([[2 ,3 ], # [6 ,7 ], # [10 ,11], # [14 ,15]]))注意如果要切分的维度不能被份数整除则最后一份会比其他份小。例如 w torch.chunk(x,chunks3,dim0) # 沿着第0维行切分成三份 print(w) (tensor([[0.,1.,2.,3.]]),tensor([[4.,5.,6.,7.]]),tensor([[8.,9.,10.,11.],[12.,13.,14.,15.]])) # 最后一份有两行Tensor的变形 Tensor的变形reshaping是指改变一个Tensor的形状即沿着不同维度重新排列元素。这样可以方便地适应不同类型或大小的数据输入或输出。PyTorch提供了多种函数来实现这个功能例如torch.reshapetorch.viewtorch.transpose等。其中最常用和灵活的是torch.reshape函数它接受两个参数要变形的Tensor和目标形状。例如 import torch x torch.arange(16).reshape(4,-1) # 创建一个4x4整数矩阵并使用-1表示自动推断某一维度大小 print(x) tensor([[0.00e00 -inf nan nan][-inf nan nan nan][-inf nan nan nan][-inf nan nan -1.00e00]]) y torch.reshape(x,(2,-y torch.reshape(x,(2,-1)) # 将x变形为2x8的矩阵并使用-1表示自动推断某一维度大小 print(y) # tensor([[ 0., 1., 2., 3., 4., 5., 6., 7.], # [ 8., 9., 10., 11., 12., 13., 14., -1.]]) z torch.reshape(x,(2,2,4)) # 将x变形为2x2x4的三维张量 print(z) # tensor([[[0.00e00 -inf nan nan] # [-inf nan nan nan]] # # [[-inf nan nan nan] # [-inf nan nan -1.00e00]]])注意torch.reshape函数并不保证返回的Tensor和原始Tensor共享内存即它们可能是不同的对象。如果要确保返回的Tensor和原始Tensor共享内存可以使用torch.view函数它接受相同的参数但是要求原始Tensor和目标形状之间存在连续性关系。例如 import torch x torch.arange(16).reshape(4,-1) # 创建一个4x4整数矩阵并使用-1表示自动推断某一维度大小 print(x) tensor([[0.00e00 -inf nan nan][-inf nan nan nan][-inf nan nan nan][-inf nan nan -1.00e00]]) y x.view(2,-1) # 使用view函数将x变形为2x8的矩阵并使用-1表示自动推断某一维度大小 print(y) # tensor([[0.00e00 -inf ,nan ,nan ,-inf ,nan ,nan ,nan ] # [-inf ,nan ,nan ,nan ,-inf ,nan ,nan ,-1.00e00]]) z x.view(2,2,4) # 使用view函数将x变形为2x2x4的三维张量 print(z) # tensor([[[0.00e00 -inf ,nan ,nan ] # [-inf ,nan ,nan ,nan ]] # # [[-inf ,nan ,nan ,nan ] # [-inf ,nan ,nan ,-1.00e00]]]) print(x.data_ptr() y.data_ptr()) # 检查x和y是否共享内存 True print(x.data_ptr() z.data_ptr()) # 检查x和z是否共享内存 True除了改变整个Tensor的形状外有时我们也需要交换或者转置某些维度以便于进行不同类型或方向的运算。PyTorch提供了多种函数来实现这个功能例如torch.transposetorch.permute等。其中最常用和灵活的是torch.transpose函数它接受三个参数要转置的Tensor要交换的两个维度。例如 import torch x torch.arange(16).reshape(4,-1) # 创建一个4x4整数矩阵并使用-1表示自动推断某一维度大小 print(x) tensor([[0.00e00 -inf ,nan ,nan ][-inf ,nan ,nan ,nan ][-inf ,nan ,nan ,nan ][-inf ,nan ,nan ,-1.00e00]]) y torch.transpose(x,0,1) # 将x沿着第0维和第1维交换相当于矩阵的转置 print(y) # tensor([[0.00e00 -inf ,-inf ,-inf ] # [-inf ,nan ,nan ,nan ] # [ nan , nan nan nan] # [ nan nan nan -1.00e00]]) z torch.transpose(x,1,2) # 将x沿着第1维和第2维交换相当于在每个子矩阵内部进行转置 print(z) # tensor([[[0.00e00 -inf] # [-inf nan] # [ nan nan] # [ nan nan]] # # [[-inf nan] # [ nan nan] # [ nan nan] # [ nan -1.00e00]]])注意torch.transpose函数并不改变原始Tensor的形状和内容而是返回一个新的Tensor它们共享内存。如果要改变原始Tensor的形状和内容可以使用torch.t函数或者transpose_方法。例如 import torch x torch.arange(16).reshape(4,-1) # 创建一个4x4整数矩阵并使用-1表示自动推断某一维度大小 print(x) tensor([[0.00e00 -inf ,nan ,nan ][-inf ,nan ,nan ,nan ][-inf ,nan ,nan ,nan ][-inf ,nan ,nan ,-1.00e00]]) y x.t() # 使用t函数将x转置相当于矩阵的转置 print(y) # tensor([[0.00e00 -inf ,-inf ,-inf ] # [-inf ,nan ,nan ,nan ] # [ nan nan nan nan] # [ nan nan nan -1.00e00]]) x.transpose_(0,1) # 使用transpose_方法将x沿着第0维和第1维交换并改变x本身 print(x) # tensor([[0.00e00 -inf ,-inf ,-inf ] # [-inf ,nan ,nan ,nan ] # [ nan nan nan nan] # [ nan nan nan -1.00e00]])Tensor的排序 Tensor的排序sorting是指按照某种规则或者顺序对Tensor中的元素进行重新排列。这样可以方便地找出Tensor中的最大值、最小值、中位数等统计量或者对Tensor进行升序或降序排列。PyTorch提供了torch.sort函数来实现这个功能它接受三个参数要排序的Tensor要排序的维度以及是否降序。例如 import torch x torch.randint(10,(4,4)) # 创建一个4x4的随机整数矩阵 print(x) tensor([[6.,7.,8.,9.],[2.,3.,4.,5.],[8.,9.,6.,7.],[4.,5.,2.,3.]]) y torch.sort(x,dim0) # 沿着第0维行进行升序排序默认为升序 print(y) (tensor([[2.,3.,2.,3.],[4.,5.,4.,5.],[6.,7.,6.,7.],[8.,9.,8.,9.]]), tensor([[0,0,0,0],[3,3,3,3],[2,2,2,2],[1,1,1,1]])) # 返回两个Tensor第一个是排序后的结果第二个是原始索引 z torch.sort(x,dim1,descendingTrue) # 沿着第1维列进行降序排序使用descending参数指定为降序 print(z) (tensor([[9.,8.,7.,6.],[5.,4.,3.,2.],[9.,8.,7.,6.],[5.,4.,3.,2.]]), tensor([[3,2,1,0],[3,2,1,0],[1,0,3,2],[1,0,3,2]])) # 返回两个Tensor第一个是排序后的结果第二个是原始索引注意torch.sort函数并不改变原始Tensor的形状和内容而是返回一个新的Tensor它们共享内存。如果要改变原始Tensor的形状和内容可以使用sort_方法。例如 import torch x torch.randint(10,(4,4)) # 创建一个4x4的随机整数矩阵 print(x) tensor([[6.,7.,8.,9.],[2.,3.,4.,5.],[8.,9.,6.,7.],[4.,5.,2.,3.]]) x.sort_(dim0) # 使用sort_方法将x沿着第0维行进行升序排序并改变x本身 print(x) tensor([[2.,3.,2.,3.],[4.,5.,4.,5.],[6.,7.,6.,7.],[8.,9.,8.,9.]]) # 返回一个元组第一个是排序后的结果第二个是原始索引Tensor的极值 Tensor的极值是指在一个张量中沿着某个维度找到最大或最小的元素。Pytorch提供了一些函数来实现这个功能例如torch.max(), torch.min(), torch.argmax(), torch.argmin()等。这些函数可以返回一个张量中的全局极值也可以返回沿着某个维度的局部极值。例如 Tensor的最大值和最小值 torch.max()和torch.min()函数可以在Tensor中找到最大或最小的元素或者沿指定维度返回每行的最大或最小值及其索引位置。例如 import torch a torch.randn(3) # 创建一个长度为3的随机Tensor print(a) # tensor([-2.,-3.,-4]) b torch.max(a) # 返回a中的最大值 print(b) # tensor(-2.) c torch.min(a) # 返回a中的最小值 print(c) # tensor(-4.) d torch.randn(3 ,3 ) # 创建一个3x3 的随机 Tensor print(d )Tensor的其他极值操作 除了torch.max()和torch.min()函数PyTorch还提供了一些其他的函数来进行Tensor的极值操作例如 torch.argmax()和torch.argmin()函数可以返回Tensor中最大或最小元素的索引位置或者沿指定维度返回每行最大或最小元素的索引位置。例如 import torch a torch.randn(3) # 创建一个长度为3的随机Tensor print(a) # tensor([ 0.1234, -0.5678, 0.9012]) b torch.argmax(a) # 返回a中最大元素的索引位置 print(b) # tensor(2) c torch.argmin(a) # 返回a中最小元素的索引位置 print(c) # tensor(1) d torch.randn(3 ,3 ) # 创建一个3x3 的随机 Tensor print(d ) # tensor([[ 0.2345, -0.6789, 1.2345], # [-1.3456, 0.4567, -0.7890], # [ 0.5678, -1.2345 , ]]) e torch.argmax(d,dim1) # 沿第二个维度返回每行最大元素的索引位置 print(e) # tensor([2 , , ]) f torch.argmin(d,dim0) # 沿第一个维度返回每列最小元素的索引位置 print(f) # tensor([ , , ])torch.topk()函数可以返回Tensor中沿指定维度前k个最大或最小的元素及其索引位置其中largestTrue表示最大largestFalse表示最小。例如 import torch a torch.randn(5) # 创建一个长度为5的随机Tensor print(a) # tensor([-0.1234, 0.5678, -0.9012 , ]) b torch.topk(a,k3,largestTrue) # 返回a中前三个最大元素及其索引位置 print(b) # (tensor([ , , ]),tensor([ , , ])) c torch.topk(a,k2,largestFalse) # 返回a中前两个最小元素及其索引位置 print(c) # (tensor([ , ]),tensor([ , ])) d torch.randn(4 ,4 ) # 创建一个4x4 的随机 Tensor print(d )Tensor的极值操作的应用场景或问题 Tensor的极值操作在深度学习中有很多应用场景或问题例如 在分类任务中我们可以使用torch.argmax()函数来获取模型输出的概率分布中最大概率对应的类别标签从而得到模型的预测结果。在排序任务中我们可以使用torch.sort()函数或torch.topk()函数来对模型输出的得分进行排序从而得到排序后的结果或前k个结果。在优化算法中我们可以使用torch.min()函数或torch.argmin()函数来找到损失函数或梯度的最小值或最小值位置从而进行参数更新或寻找最优解。 Tensor的in-place操作 张量Tensor的in-place操作是指直接改变张量的内容而不需要复制的运算。在PyTorch中一些函数或方法有一个inplace参数如果设置为True就表示执行in-place操作。例如 import torch a torch.randn(3) # 创建一个长度为3的随机Tensor print(a) # tensor([ 0.1234, -0.5678, 0.9012]) b a.relu() # 对a进行非in-place的ReLU操作返回一个新的Tensor print(b) # tensor([ 0.1234, 0.0000, 0.9012]) c a.relu_(inplaceTrue) # 对a进行in-place的ReLU操作直接修改a的内容 print(c) # tensor([ 0.1234, 0.0000, 0.9012]) print(a) # a被修改了 # tensor([ 0.1234, 0.0000 , ])使用in-place操作可以节省一些GPU显存因为它们不需要复制输入。这在处理高维数据或显存压力大的情况下可能有用。但是在使用in-place操作时要格外小心并进行两次检查。因为它们有以下几个缺点 它们可能会覆盖计算梯度所需的值从而打破了模型的训练过程。它们可能会导致计算图出现错误或不一致。它们可能会影响反向传播和优化器的行为。它们可能会使代码难以理解和调试。 in-place操作是指直接改变给定张量的内容而不进行复制的操作即不会为变量分配新的内存。Pytorch中原地操作的后缀为_如.add_()或.scatter_()等。Python操作类似或*也是就地操作。in-place操作可以在处理高维数据时帮助减少内存使用但也有一些缺点和风险比如可能会覆盖计算梯度所需的值或者破坏计算图。因此在使用就地操作时应该格外谨慎并且在大多数情况下不鼓励使用。 参考【PyTorch】张量 (Tensor) 的拆分与拼接 (split, chunk, cat, stack) 参考pytorch中对tensor操作分片、索引、压缩、扩充、交换维度、拼接、切割、变形 参考Pytorch深度学习实战3-3张量Tensor的分块、变形、排序、极值与in-place操作 参考关于 pytorch inplace operation, 需要知道的几件事
http://www.w-s-a.com/news/512148/

相关文章:

  • 网站首页轮播官方网站下载拼多多
  • 罗庄区建设局网站自己做网站推广产品
  • 优秀flash网站欣赏苏州吴中区建设局网站
  • 网站添加wordpress博客网上商城购物系统论文
  • 上海市建设安全协会网站王夑晟企业网站建设需要做些什么
  • 网站app 开发辽宁建设工程信息网官网新网站是哪个
  • 厦门建设企业网站建设wordpress添加形式
  • 建立什么网站可以赚钱室内设计效果图qq群
  • 厦门网站设计大概多少钱服务公司沈傲芳
  • 如何起手做网站项目百度站长app
  • dede 购物网站wordpress主题超限
  • 做啊录音网站WordPress音乐悬浮插件
  • 安徽建设厅证书查询网网站网站策划与运营课程认知
  • wordpress证书关闭重庆seo优化效果好
  • 直播网站建设模板网站活动怎么做的
  • 医院网站建设网站网站开发工资高嘛
  • 个人网站备案内容写什么做网站是不是涉及很多语言职
  • 怎么用手机做一个网站门户网站建设工作的自查报告
  • 网站搭建怎么收费浙江建设集团网站
  • 建网站怎么赚钱免费引流软件下载
  • 自建网站服务器备案做基础销量的网站
  • 淘宝 网站建设 发货音乐网站首页设计
  • 丽水做网站杭州建电商网站多少钱
  • 建设网站能解决什么问题wordpress 模板 中文
  • 平台型网站建设预算表友情链接中有个网站域名过期了会影响
  • 漯河网站开发运营seo是什么意思
  • 网站建设的征求意见稿iis 网站 红
  • 网站搭建教室企业网站开发实训心得
  • 阿克苏建设网站佛山app定制
  • 做淘宝网站要求与想法大型网站建设推荐