Torch的索引与形变
>>> a = torch.Tensor([[1,2],[3,4]])
>>> a
tensor([[1., 2.],
[3., 4.]])
>>> a[1] 类似python中的列表的取值
tensor([3., 4.])
>>> a[0]
tensor([1., 2.])
>>> a > 0 返回布尔值或者0,1
tensor([[True, True],
[True, True]])
>>> a = torch.Tensor([[0,2],[3,4]])
>>> a > 0
tensor([[False, True],
[ True, True]])
>>> a[a>0] 类似于列表
tensor([2., 3., 4.])
>>> torch.nonzero(a) 返回非0的坐标
tensor([[0, 1],
[1, 0],
[1, 1]])
>>> torch.full_like(a,1) 将a中的值全部为1
tensor([[1., 1.],
[1., 1.]])
>>> torch.where(a>1,torch.full_like(a,1),a) 条件判断 条件成立则为前者,条件不成立则为后者
tensor([[0., 1.],
[1., 1.]])
>>> a.clamp(1,6) 限制最小值为1,最大值为6
tensor([[1., 2.],
[3., 4.]])
Tensor的变形
>>> b = a.resize(2,2)
>>> b
tensor([[1, 2],
[3, 4]])
>>> b = a.reshape(2,2)
>>> b
tensor([[1, 2],
[3, 4]])
>>> b = a.reshape(1,4)
>>> b
tensor([[1, 2, 3, 4]])
>>> b = a.resize_(2,7)
>>> b
tensor([[ 1, 2, 3,
4, 25896191785238631, 27866512327901300,
32932988893003880],
[32088589733920884, 26740517931057249, 27866495148425318,
30962724186423412, 26740530815434867, 32651548277211241,
31525394966315103]])
>>> b = a.resize_(1,2) #a.resize_()可以直接改变Tensor的尺寸(在原地改变)如果超过原来尺寸则会重新分配内存,多出的部分置0,如果小于原来的Tensor大小则剩余的部分仍然会隐藏保留。
>>> b
tensor([[1, 2]])
#resize() reshape() view() 在括号中输入矩阵的尺寸可以直接修改 但不能超过原来的Tensor尺寸。。。
>>> a = torch.randn(2,2,3)
>>> a
tensor([[[ 1.9844, -1.1686, 0.1745],
[ 0.9595, 1.4640, -0.5703]],
[[-1.0130, -0.1706, 0.6245],
[ 0.7703, -1.0161, -0.1846]]])
>>> b = a.transpose(0,1)
>>> b
tensor([[[ 1.9844, -1.1686, 0.1745],
[-1.0130, -0.1706, 0.6245]],
[[ 0.9595, 1.4640, -0.5703],
[ 0.7703, -1.0161, -0.1846]]])
>>> a.permute(2,1,0)
tensor([[[ 1.9844, -1.0130],
[ 0.9595, 0.7703]],
[[-1.1686, -0.1706],
[ 1.4640, -1.0161]],
[[ 0.1745, 0.6245],
[-0.5703, -0.1846]]])
>>> a
tensor([[[ 1.9844, -1.1686, 0.1745],
[ 0.9595, 1.4640, -0.5703]],
[[-1.0130, -0.1706, 0.6245],
[ 0.7703, -1.0161, -0.1846]]])
>>>
squeeze()和 unsqueeze()来处理size为1的维度
expand()和 expend_as()来复制拓展size为1为指定维度大小。
##expand和repeat可以实现维度的拓展
expand拓展维度的时候,如果维度要是不想变化,就用-1代替,
而且拓张的时候只能从1扩张成M 不可从n拓张成M
>>> b.shape
torch.Size([1, 32, 1, 1])
>>> b.expand(4,-1,4,4).shape
torch.Size([4, 32, 4, 4])
repeat的使用
想重复几次就在repeat()中就重复的数不重复的话就是1
>>> b.shape
torch.Size([1, 32, 1, 1])
>>> b.repeat(1,1,4,4).shape
torch.Size([1, 32, 4, 4])
>>>
Torch的索引与形变的更多相关文章
- 常用torch代码片段合集
PyTorch常用代码段整理合集 本文代码基于 PyTorch 1.0 版本,需要用到以下包 import collections import os import shutil import tqd ...
- [转]Torch是什么?
Torch是一个广泛支持机器学习算法的科学计算框架.易于使用且高效,主要得益于一个简单的和快速的脚本语言LuaJIT,和底层的C / CUDA实现:Torch | Github 核心特征的总结:1. ...
- (原)torch中显示nn.Sequential()网络的详细情况
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6065526.html 本部分多试几次就可以弄得清每一层具体怎么访问了. step1. 网络定义如下: ...
- PyTorch官方中文文档:torch.nn
torch.nn Parameters class torch.nn.Parameter() 艾伯特(http://www.aibbt.com/)国内第一家人工智能门户,微信公众号:aibbtcom ...
- PyTorch官方中文文档:torch.Tensor
torch.Tensor torch.Tensor是一种包含单一数据类型元素的多维矩阵. Torch定义了七种CPU tensor类型和八种GPU tensor类型: Data tyoe CPU te ...
- PyTorch官方中文文档:torch
torch 包 torch 包含了多维张量的数据结构以及基于其上的多种数学操作.另外,它也提供了多种工具,其中一些可以更有效地对张量和任意类型进行序列化. 它有CUDA 的对应实现,可以在NVIDIA ...
- pytorch中文文档-torch.nn常用函数-待添加-明天继续
https://pytorch.org/docs/stable/nn.html 1)卷积层 class torch.nn.Conv2d(in_channels, out_channels, kerne ...
- Tensor索引操作
#Tensor索引操作 ''''' Tensor支持与numpy.ndarray类似的索引操作,语法上也类似 如无特殊说明,索引出来的结果与原tensor共享内存,即修改一个,另一个会跟着修改 ''' ...
- pytorch torch.Storage学习
tensor分为头信息区(Tensor)和存储区(Storage) 信息区主要保存着tensor的形状(size).步长(stride).数据类型(type)等信息,而真正的数据则保存成连续数组,存储 ...
随机推荐
- springboot静态资源无法访问
前言 今天使用springboot+layui+shiro实现一个前后端分离的商城后台系统,一个小小静态资源(image)问题搞了一下午:还好坚持了下来,否者崩溃.吐血都是小事 这是引入的路径 这是图 ...
- Spring-注入方式(基于xml方式)
1.基于xml方式创建对象 <!--配置User类对象的创建 --> <bean id="user" class="com.at.spring5.Use ...
- 帝国CMS只备份栏目和模板的方法
方法一:不备份所有帝国cms数据内容表 我们知道帝国cms有8大模型,分别是 1.新闻系统数据表 ( phome_ecms_news )2.下载系统数据表 ( phome_ecms_download ...
- 初识gradle, idea+springboot Demo
写在前面; 使用maven管理写过几个springboot的系统, 此篇博客纯属记录整理学习的过程. 另外, 源码分享地址在最后. Java: 1.8.0_281 tomcat: 1.8 IDE: I ...
- 牛客网 第十八届浙大城市学院程序设计竞赛(同步赛)J--万万没想到 啦啦啦啦啦
我觉得我可以继续wa下去(手动魔鬼笑)-------------------------------------------- 原题链接:https://ac.nowcoder.com/acm/c ...
- tomcat的搭建和介绍
第19章 tomcat的搭建 19.1 tomcat学习之前的预备知识 19.1.1 什么是JVM和JDK,JRE JVM java虚拟机,实现一份代码可以在不同的平台执行,具有 ...
- JavaScript 数学 (Math) 方法
一.Math 方法 1.Math.round(x) 的返回值是 x 四舍五入为最接近的整数: Math.round(7.8); // 返回 8 Math.round(3.3); // 返回 3 2.M ...
- 新华三Gen10服务器ILO 5 安装中文语言包
ILO 5 安装中文语言包 在官网下载语言包文件,并解压 选择firmware&OS software,点击右侧的update firmware 选择本地文件,浏览到语言包里面的lpk文件,点 ...
- python学习-Day5
目录 今日学习内容详解 流程控制理论 程序执行流程分类: 重点小知识* 分支结构(if 语法) 单 if 分支 if 与 else 分支 if 与 elif 与 else 分支 if嵌套 练习 循环结 ...
- 代码管理工具-Git基础介绍及常用技巧
目录 Git起源 基本概念 Branch.HEAD和Commit tree Git分支 git merge 和 git rebase 的区别和抉择 与远程仓库的交互 关于一些实际开发场景的问题和解决方 ...