边肖将与大家分享一个Pytorch高级操作的实例分析。相信大部分人都不太了解,所以分享这篇文章给大家参考。希望你看完这篇文章会有很多收获。我们一起来看看吧!
00-101010
一、合并与分割
直接按照指定的dim维度合并,除了要合并的维度,其他维度都需要相同。
00-1010示例:在这里创建一个像A一样的张量,按照一定的维度进行叠加,叠加的维度前面会生成一个新的维度供选择。例如,如果它成为一个新的维度,您可以按0,1选择它。具体是什么意思,要看实际问题。
比如两个类的成绩单用栈合并生成一个新维度,可以选择0或者1来选择这个新维度,从而达到选类的目的。
1.cat拼接
2.stack堆叠
第一个参数可以是单个数字A,表示每个拆分部分都有A数据;可以是类似list的对象B,意思是按照B中的方式将数据拆分成len(b)张量。
从00到1010传入的第一个参数是将它分成块,然后用这个数字来划分原始维度。
例如,在下面的例子中,原始维度是[2,32,8],当chunk参数传入2时,需要拆分为2,然后2/2=1,最后每一个的维度变成[1,32,8]。
3.拆分
Split按长度拆分
与numpy一致。也可以使用torch.add等方法
00-1010注意,*表示元素乘以元素,矩阵乘法可以通过以下两种方式进行:torch.matmul,@
如果是高维矩阵乘法,实际计算的是最后两维的矩阵乘法。
00-1010与numpy一致,可以用* *计算任意幂。另外,也可以计算功率()。
而且指数计算基本相同,log的默认值是e-base。
当渐变太大时,
Chunk按数量拆分
通常用于裁剪渐变。通过输入最大值和最小值,目标中超过最大值的部分将根据最大值进行计算;低于最小值,跟随最小值。
00-101010
二、基本运算
注意一件事:找到规范会消除哪个维度。
1.加减乘除
" alt="Pytorch进阶操作的示例分析">
3. dim和keepdim
在很多方法中,都可以对dim进行设置。如果不设置,就是把所有数据展开后,求全局的。
注意这里的dim,a的形状是[4,10],求最大值时,如果设置dim=1,也就是列,个人理解,意思是结果的维度需要是列,那么就是把整行的数值进行计算找最大值,最后返回一个列作为结果。
4.topk和kthvalue
topk参数:k(前k个最大值),dim(以dim的维度返回结果)
这个方法默认的是返回的最大值,同时会返回它们的索引。
kthvalue参数:k(第k小的值),dim
5.比较运算
和Numpy中的一致。如果使用torch.eq方法,返回每个对应位置的结果;如果使用torch.equal方法,返回的是整体对比的结果。
6.高阶操作
①where
②gather
索引行数小于等于表的行数。也就是说,既然要用索引来去找表中的内容,就不能超过表的索引长度。索引在传入gather方法中的时候,必须要转换成Long的类型。
举例如下:
返回值的形状一定是索引的形状,因为就是按照索引去取的值。返回值的内容就来自于输入的input,根据索引获得的对应的值。
以上是“Pytorch进阶操作的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/88866.html