栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pytorch学习笔记之pytorch基础二(索引与切片、维度变换)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pytorch学习笔记之pytorch基础二(索引与切片、维度变换)

pytorch基础二

索引与切片

Indexing 直接索引: 采样索引... 任意维度 维度变换

.view( ) 合并维度Squeeze unsqueeze 删减 增加维度expand / repeat 维度扩展Transpose / t / permute 转置

索引与切片 Indexing 直接索引

以下方程序为例 ,首先创建的 tensor -> (4,3,28,28) 分别为batch_size ; channel ; h ; wa[0] 索引代表 batch的每张图片的 channel , h , wa[0,0] 索引代表 第一张图片第一个通道的 h和wa[0,0,2,4] 索引代表 第一张图片第一个通道第2行4列像素点的值
: 采样索引

在下例中 , a[ :2] 代表前两张图片的 channel, h ,wa[:2 , 1: , :, :] 代表前两张图片中最后一个通道的 h,w注: 如有两个冒号,第二个冒号后的数字代表隔位采样
… 任意维度

… 代表取任意维度在下例中, a[…] 代表取所有维度 ; a[0,…] 代表取第一个图片的channel , h, w
维度变换 .view( ) 合并维度

采用 .view() 操作可以合并维度,但总size不变,也就是说只改变其意义,不改变其值如下例所示,a.view(4,28*28) 即是将 (1,28,28)的信息合并处理,在实际意义中就是将通道信息、图片的具体长、宽信息整和为一个特征,结果得到(4,784)的size ,常用于全连接层而 a.view(4*1,28,28) 则是只关注图片的特征信息,而忽略是是哪张图片、哪个通道的信息
Squeeze unsqueeze 删减 增加维度

.unsqueeze( a ) -> 在a的前一个位置上增加一个维度(注,若a是负数,从后往前算,且是在其之后增加维度)
squeeze(a) 删除维度的格式与 .unsqueeze( a ) 一样,但若不输入参数a,则会把所有为1的维度删除(挤压)掉
expand / repeat 维度扩展

expand / repeat 两种方法效果差不多,但一般使用expand而不使用 repeat两种方法只可以将原来为1的维度转化为新的维度大小 (复制原来为1的内容,填充新的size)expand 参数中的 -1 代表原来的维度,若写为 -1 ,代表是原来的维度大小不变注意,下例中的 -4为bug,虽然有输出,但无实际意义
repeat 中的参数表示 该维度大小重复的次数,为 1 即为重复1 次
Transpose / t / permute 转置

可以直接使用 .t () 来求转置,但其只能运用于2D矩阵,对于3,4D数据不支持操作
.transpose(a,b) 可以直接交换 a,b 维度的值,但会使数据不连续,所以常使用 .transpose(a,b).contiguous(),即通过 .contiguous() 函数将数据重新变得连续
.permute(a,b,c,d) 函数可以转换每个维度的size,如下例所示,b.permute(0,2,3,1) 是将原来第二位的维度和最后一维的做了交换,初始的位置应为(0,1,2,3)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740000.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号