Pytorch系列:(一)常用基础操作
各种张量初始化
创建特殊类型的tensor
a = torch.FloatTensor(2,3)
a = torch.DoubleTensor(2,3)
...
设置pytorch中tensor的默认类型
torch.set_default_tensor_type(torch.DoubleTensor)
更改tensor类型
a.float()
各种常用初始化
torch.randn_like()
torch.rand(3,3) #创建 0-1 (3,3)矩阵
torch.randn(3,3) #创建 -1-1 (3,3)矩阵
torch.randint(1,10,[2,2]) #创建 1-10 (2,2) int型矩阵
按照不同的均值和方差进行初始化
torch.normal(mean=torch.full([20],0),std=torch.arange(0,1,0.1))
按照间隔初始化
torch.linspace(0,10,step=3)
torch.arange(1,10,5)
创建单位矩阵
torch.eye(4,4)
创建打乱的数列
torch.randperm(10)
返回tensor元素个数
torch.numel(torch.rand(2,2))
维度操作
矩阵拼接
torch.cat((x,x),0)
torch.stack((x,x),0) #与cat不同的是,stack在拼接的时候,要增加一个维度
矩阵拆分
chuck直接按照数量来拆分,输入N就拆分成N个
torch.chunk(a,N,dim)
split的两种用法,第一种是输入一个数字,这样就会拆分成这个总维度/数字个维度,第二个是如输入一个列表,会按照列表指定的维度进行拆分
torch.split(a,[1,2],dim)
矩阵选取
在某个维度上选择连续的N 列或者行
torch.narrow(dim,index,size)
选择一个维度dim,从index开始取size个列或者行
a.index_select(dim, list)
各种选取
a[ : , 1:10, ::2 , 1:10:2]
矩阵打平后选取
torch.take( tensor , list)
维度变化
a.view(1,5)
a.reshape(1,5)
维度减少和增加
只有一个维度的时候,就是0在前面插入,-1或1在后面插入,可以把list当成是0.5维度
a.unsqueeze(1)
a.squeeze(1)
维度扩张
a.expand()
维度扩展expand,注意这里的维度只能由1扩张成N,其他情况下是不能扩张的,另外维度不变的时候也可以用-1代替
a.repead()
另外一种方式是使用repeat函数,repeat表示将之前的维度复制多少次,通过复制来进行扩张
维度交换
transpose(2,3) # 交换两个维度
permute(4,2,1,3) # 交换多个维度
数学运算
基础运算
其中加减除法都可以使用运算符直接计算,乘法需要额外注意两种不同的乘法,其中:
mul或者*是矩阵对应元素相乘
mm是针对于二维的矩阵正常乘法
matmul是针对任意维度矩阵的正常乘法,@是其符号重载
数字近似
floor() 向下取整
ceil() 向上取整
trunc() 保留整数
frac() 保留小数
数值裁剪
clamp(min)
clamp(min,max) #在这个阈值之外的都变成阈值
累乘
prod()
线性代数相关
trace #矩阵的迹
diag #获取主对角线元素
triu/tril #获取上下三角矩阵
t #转置
dot/cross #内积与外积
其他
Numpy Tensor 互相转换
np_data = np.arange(6).reshape((2, 3))
torch_data = torch.from_numpy(np_data)
tensor2array = torch_data.numpy()
类型判断
isinstance(a,torch.FloatTensor)
广播
什么时候可以使用广播,广播将从最后一个维度开始,从后往前开始匹配,当一个对象的维度是1或者与另一个对象的维度大小一样的时候,可以匹配上,另外,如果一个对象的维度少于另外一个维度的对象,只要从后往前开始的维度匹配,那么就可以使用广播。
例如
(1,2,3,4) 和 (2,3,4) or (1,2,3,4) 可以广播
(1,2,3,4) 和 (1,1,1) or (1,1,1,1) 可以广播
topk
topk可以帮助返回在某一维度上最大的k个值以及下标,只需要将largest=False,就可以返回最小的k个值
where条件选择
根据条件是否成立,选择矩阵X或者矩阵Y中的元素
where(condition > 0.5 , X , Y )
gather
本质就是在查表,第一个参数是表格,第二个是维度,第三个是要查询的索引
操作就是,在inpu中选择维度dim,然后根据index编号,读取input中的元素
torch.gather(input,dim,index,out=None)
Pytorch系列:(一)常用基础操作的更多相关文章
- Pytorch系列之常用基础操作
各种张量初始化 创建特殊类型的tensor a = torch.FloatTensor(2,3) a = torch.DoubleTensor(2,3) ... 设置pytorch中tensor的默认 ...
- Docker系列之常用命令操作手册
目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...
- 《Genesis-3D开源游戏引擎-官方录制系列视频教程:基础操作篇》
注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D基础操作 第一课<G3D编辑器初探> G3D编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...
- Mysql常用基础操作(备忘录)
常常忘记mysql的一些命令行操作,甚至于说,比较复杂的sql格式记不住或忘记了,也可能根本不会考虑去记,因此,做一下汇总,当下次出现恍惚时不至于去百度挨个找,有时就是记不起来,但是只要给点药引子,立 ...
- Elasticsearch学习系列二(基础操作)
本文将分为3块讲解Es的基础操作.分别为:索引(index).映射(mapping).文档(document). 索引操作 创建索引库 语法: PUT /索引名称{ "settings&qu ...
- C# 数据操作系列 - 1. SQL基础操作
0.前言 前篇介绍了一些数据库的基本概念和以及一些常见的数据库,让我们对数据库有了一个初步的认识.这一篇我们将继续为C#数据操作的基础填上一个空白-SQL语句. SQL(Structured Quer ...
- CentOS7 常用基础操作
系统目录结构了解 CentOS系统中没有磁盘的概念,一切皆文件,/目录下的的一个个文件夹目录就相当于磁盘了,这里简单记录几个常用的目录以及对应的作用: dev:Linux一切皆文件,包括硬件也进行了文 ...
- SPSS常用基础操作(3)——对数据资料进行整理
在实际工作中,往往需要对取得的数据资料进行整理,使其满足特定的分析需求,下面介绍SPSS在资料整理方面的一些功能. 1.加权个案加权个案是指给不同的个案赋予不同的权重,以改变该个案在分析中的重要性.为 ...
- SPSS常用基础操作(2)——连续变量离散化
首先说一下什么是离散化以及连续变量离散化的必要性. 离散化是把无限空间中无限的个体映射到有限的空间中去,通俗点讲就是把连续型数据切分为若干“段”,也称bin,离散化在数据分析中特别是数据挖掘中被普遍采 ...
随机推荐
- WPF 关于ComboBox在前台绑定XML数据的一些方法,使用XML数据提供器 XmlDataProvider
关于使用 数据提供器:XmlDataProvider 的一些问题,以及在WPF中是如何使用的一些介绍,还有踩到的一些坑,希望其他和我碰到一样问题的,可以更快的解决. 首先,要求是 在WPF 的前台代码 ...
- teamviewer远程是账号密码都没错但是报正在初始化参数...
1.出现这个原因,可能是 通过(mstsc)远程桌面方式运行了teamviewer,被远程控制电脑就会出现这个现象. 可以试一下 服务-teamviewer-属性-登录-本地系统账户 -允许服务与桌面 ...
- 前端问题录——在导入模块时使用'@'时提示"Modile is not installed"
前情提要 为了尽可能解决引用其他模块时路径过长的问题,通常会在 vue.config.js 文件中为 src 目录配置一个别名 '@' configureWebpack: { resolve: { a ...
- Java基本概念:封装
一.简介 描述: 生活中,我们要看电视,只需要按一下开关和换台就可以了.我们没有有必要了解电视机内部的结构. 制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如电 ...
- 如何用Eggjs从零开始开发一个项目(3)
上一篇中我们编写了用户注册登录.登录的代码,学习了如何进行用户的认证(JWT),如何安全地存储用的密码(hash).这一篇我们有以下2个任务: 获取token中的数据: 通过model来同步数据库. ...
- Nginx配置翻译
Windows 格式 server { listen 82; server_name localhost; root "D:/testfile/"; location / { in ...
- 一个页面中多个window.onload = function(){}冲突问题解决思路
转: 一个页面中多个window.onload = function(){}冲突问题解决思路 一个页面中多个window.onload = function(){}冲突问题解决思路 参考文章: (1) ...
- MySql学习---数据库基本类型,事务,多表查询
数据库分类 关系型数据库 行列, 列如Mysql,oracle 通过表和表之间,行和列之间的关系进行数据的存储 非关系型数据库: Redis,MongDb 以对象存储,同过对象的自身属性来决定 表与表 ...
- 设计模式之简单工厂模式(Simple Factory Pattern)
一.简单工厂模式的由来 所有设计模式都是为解决某类问题而产生的,那么简单工厂模式是为解决什么问题呢?我们假设有以下业务场景: 在一个学生选课系统中,文科生用户选课时,我们要获得文科生的所有课程列表:理 ...
- AtCoder Beginner Contest 190
A Very Very Primitive Game int main() { int a, b, c; cin >> a >> b >> c; if(c == 0 ...