各种张量初始化

创建特殊类型的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系列之常用基础操作的更多相关文章

  1. Docker系列之常用命令操作手册

    目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...

  2. 《Genesis-3D开源游戏引擎-官方录制系列视频教程:基础操作篇》

    注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D基础操作   第一课<G3D编辑器初探> G3D编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...

  3. Mysql常用基础操作(备忘录)

    常常忘记mysql的一些命令行操作,甚至于说,比较复杂的sql格式记不住或忘记了,也可能根本不会考虑去记,因此,做一下汇总,当下次出现恍惚时不至于去百度挨个找,有时就是记不起来,但是只要给点药引子,立 ...

  4. Elasticsearch学习系列二(基础操作)

    本文将分为3块讲解Es的基础操作.分别为:索引(index).映射(mapping).文档(document). 索引操作 创建索引库 语法: PUT /索引名称{ "settings&qu ...

  5. Pytorch系列:(一)常用基础操作

    各种张量初始化 创建特殊类型的tensor a = torch.FloatTensor(2,3) a = torch.DoubleTensor(2,3) ... 设置pytorch中tensor的默认 ...

  6. C# 数据操作系列 - 1. SQL基础操作

    0.前言 前篇介绍了一些数据库的基本概念和以及一些常见的数据库,让我们对数据库有了一个初步的认识.这一篇我们将继续为C#数据操作的基础填上一个空白-SQL语句. SQL(Structured Quer ...

  7. CentOS7 常用基础操作

    系统目录结构了解 CentOS系统中没有磁盘的概念,一切皆文件,/目录下的的一个个文件夹目录就相当于磁盘了,这里简单记录几个常用的目录以及对应的作用: dev:Linux一切皆文件,包括硬件也进行了文 ...

  8. SPSS常用基础操作(3)——对数据资料进行整理

    在实际工作中,往往需要对取得的数据资料进行整理,使其满足特定的分析需求,下面介绍SPSS在资料整理方面的一些功能. 1.加权个案加权个案是指给不同的个案赋予不同的权重,以改变该个案在分析中的重要性.为 ...

  9. SPSS常用基础操作(2)——连续变量离散化

    首先说一下什么是离散化以及连续变量离散化的必要性. 离散化是把无限空间中无限的个体映射到有限的空间中去,通俗点讲就是把连续型数据切分为若干“段”,也称bin,离散化在数据分析中特别是数据挖掘中被普遍采 ...

随机推荐

  1. Python_列表相减(判断长度后长的减短的)

    #定义一个方法,可进行列表相减 class V(object): def __init__(self,*value): self.value=value def __sub__(self,other) ...

  2. 在iOS 4中创建一个LDGradientView样式的渐变视图

    本教程将演示如何在 Swift 4 中创建一个多功能的.@IBDesignable 样式的渐变视图类.你可以将 CAGradientView 放到 storyboard 中,并在设计时预览,或者以编程 ...

  3. 鸿蒙系统freeModbusTcp移植简介

    freeModebus是工业中常用的一种通信, 在鸿蒙系统来移植 细节查看代码中,博文只是一些参考以及注意点, 参考了 wifi连接: https://harmonyos.51cto.com/post ...

  4. HTTP请求响应信息字段总结(长期更新)

    http头的Location和Conten-Location HTTP响应细节--常用响应头 HTTP响应中的常用响应头(消息头) Location: 服务器通过这个头,来告诉浏览器跳到哪里 Serv ...

  5. 如何使用Camtasia制作动态动画场景?

    也许在学习编辑视频的你知道Camtasia 2019(win系统),知道Camtasia的视频编辑功能,录制屏幕功能,但你可能想不到,Camtasia还可以制作动态动画场景.跟我一起学习一下吧! 一. ...

  6. ABBYY FineReader 15 如何为PDF文档添加页眉页脚

    页眉.页脚是文档页面顶部或底部重复出现的文本信息.很多用户会习惯在文档页面的顶部与底部区域添加页眉.页脚来展现页码.文档标题.作者姓名.品牌名称等附加信息.而ABBYY FineReader 15(W ...

  7. Word文档数据被误删了怎么办,还能恢复吗

    很多时候由于时间紧张或者是思路不想被打断,我们在编辑Word时不能及时的手动保存,一旦遇到电脑意外断电的情况可能就会导致编辑好的Word文档内容丢失.或者是文档编辑好了之后,Word提示是否保存时,误 ...

  8. IntelliJ IDEA 行注释的缩进设置(不自动添加注释到行首)

    目录 现状 修改对比 最后 现状 想注释一行或一个方法,//注释总是生成在行首: 修改对比 要修改的配置在这: 我们可以在注释后添加一个空格,就变成了: 最后 设置完了看下注释效果: 这看起来才舒服.

  9. React Native两种加载图片的方式

    1 加载网络图片 通过uri就可以加载网络图片 <Image source={{uri:'http://facebook.github.io/react/img/logo_og.png'}} s ...

  10. 通过jquery 获取下拉列表中选中的值对应的value

    <div class="col-sm-9"> <select id="device-type" class="form-contro ...