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

pytorch常用函数与基本特性总结大全

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

pytorch常用函数与基本特性总结大全

pytorch常用函数与基本特性总结大全

之前一直在看李宏毅老师的深度学习课程,感觉对于深度学习的许多细节得到了明显的提升
最近想尝试几个gan的代码运行,将之前忽略的一些基础操作重新整理一下,便于日后使用
学习来源: 深度学习与PyTorch入门实战
需要代码和视频资源的可以私信或者留言

张量数据类型 1.查看数据类型

尽量使用 tensor.type()与isinstance()来判别数据类型, python自带的type()函数只能告诉我们是tensor但不能得到具体的类型

查看基本类型

查看cpu与gpu

2.查看数据维度

3.查看数据占据的内存大小

创建tensor

通常创建随机未初始化的用(大写+shape)

torch.Tensor(2,3) 传入的是shape

创建已知数值tensor的用(小写+数值)

torch.tensor([1,2])

1. import from numpy

2. import from List

-

3.生成未初始化的tensor

在后续代码中需要用正常的数据覆盖他们,不然可能会产生错误

4.设置默认的tensor type

torch.set_default_tensor_type(torch.DoubleTensor)
增强学习的过程中通常会设置成double类型

5. 随机初始化

6.正态分布初始

7. 其他创建方式

full

arange

linspace logspace

左右边界都包括, step代表分成几个数

默认生成10的0次方为起始值,10的-1次方为终止值的10个数构成的等比数列 bases可以修改底数

ones zero eye,randperm

randperm功能是随机打乱一个数字序列。

切片与索引,维度变换 1.切片取值

常用的切片操作与list一样, 这里就记录一些有用的函数

...可以省略中间的:,:,:



2.view改变形状

3.Squeeze 和 unsqueeze

unsqueeze: 在相应的位置上插入1个维度
下面案例中的索引-5的作用与0的作用相同


unsqueeze的应用, b与f的相加
Squeeze: 指定位置处如果维度为1, 则压缩, 不为1则不变

4.Expand 和 repeat

Expand 参数为新的shape

repeat参数表示 将当前维度重复的次数

transpose交换维度

Broadcasting特性

在不同维度相加的情况下, 只要满足Broadcasting的使用条件, pytorch会自动帮你补全相应的维度并进行相加操作

使用场景: 如下图, 给所有人的每门成绩加五分

使用条件: 从最小的维度开始匹配, 如果维度为1, 则自动补全

补全情况


不能自动使用Broadcasting的情况

拼接与拆分 cat

除了要拼接的维度之外, 其他维度需要相同

stack

stack与cat不同, stack的做法是新建一个维度

假设(32,8) 代表32个学生和8门课的成绩, 如果用stack的话,得到(2,32,8) 这里的2可以理解为班级, 因此在实际情况下我们根据场景的不同选择 stack或者cat

split

输入的数值表示划分后tensor的长度

chunk

输入的数值代表要划分的数量, 2代表分为2个tensor

数学运算 普通加减乘除


矩阵的乘法

torch.mm: 二维矩阵相乘
torch.matmul : 高维也可以用
a@b: 简写


matmul 对于高维的数据来说,保持高纬不动,低二维做矩阵乘法操作

power与sqrt

exp log对数

近似值 取整

clamp(替换指定区间内的值)

a.lamp(min, max) : 小于min的都换min, 大于max的都换max

Tensor属性统计 norm

norm-p 代表p范数
norm-1 绝对值相加
norm-2 平方和相加最后开根号
norm-p 公式如上图


指定维度计算norm

mean,sum,min,max,prod

prod 累乘

argmin, argmax

如果不指定dim的话会奖数据拉平成一维的再返回索引
所以最好指定维度


实际应用: 如minist手写数字识别, 喂入四张图片, 训练得到一个(4,10)的结果,10表示没种类别的概率, 通过argmax函数就可以看出每张图片的最大概率是哪种类别, 代码如下:

这里max更好用, 它不仅返回索引,还会返回最大值

参数dim与keepdim

dim指定维度之前已经用过很多次了
keepdim的意思是保持之前的维度不变

top-k 取前k个最值

largest=Flase 代表取前k个最小值

kthvalue 表示第k个小的值

compare (tensor之间大小关系)

eq返回01的tensor
equal返回True 或 False

torch高阶操作 torch.where

torch.where(condition,x,y)

相当于遍历con 其中满足con>0.5的取xi,不满足的取yi

where的好处在于 如果cond,a,b等数据是网络训练的中间数据, torch.where的运行仍然可以在gpu上, 如果用循环的方式完成where函数的效果,就是在cpu上运行, 效率不高

torch.gather

gather函数也是便于操作 使得可以在gpu上运行

应用场景: 比如已知predict的结果以及原先的label表,要将其对应的结果输出, 如四张图像对应的最高概率索引为(0,2,3,5), 而其在label表中的实际含义可能是汽车,飞机,火车,自行车等含义
gather函数就是把idx与label的实际含义转化后输出

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

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

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