pytorch 中改变tensor维度的几种操作
具体示例如下,注意观察维度的变化
1.改变tensor维度的操作:transpose、view、permute、t()、expand、repeat
#coding=utf-8
import torch def change_tensor_shape():
x=torch.randn(2,4,3)
s=x.transpose(1,2) #shape=[2,3,4]
y=x.view(2,3,4) #shape=[2,3,4]
z=x.permute(0,2,1) #shape=[2,3,4] #tensor.t()只能转化 a 2D tensor
m=torch.randn(2,3)#shape=[2,3]
n=m.t()#shape=[3,2]
print(m)
print(n) #返回当前张量在某个维度为1扩展为更大的张量
x = torch.Tensor([[1], [2], [3]])#shape=[3,1]
t=x.expand(3, 4)
print(t)
'''
tensor([[1., 1., 1., 1.],
[2., 2., 2., 2.],
[3., 3., 3., 3.]])
''' #沿着特定的维度重复这个张量
x=torch.Tensor([[1,2,3]])
t=x.repeat(3, 2)
print(t)
'''
tensor([[1., 2., 3., 1., 2., 3.],
[1., 2., 3., 1., 2., 3.],
[1., 2., 3., 1., 2., 3.]])
'''
x = torch.randn(2, 3, 4)
t=x.repeat(2, 1, 3) #shape=[4, 3, 12] if __name__=='__main__':
change_tensor_shape()
2.tensor的拼接:cat、stack
除了要拼接的维度可以不相等,其他维度必须相等
#coding=utf-8
import torch def cat_and_stack(): x = torch.randn(2,3,6)
y = torch.randn(2,4,6)
c=torch.cat((x,y),1)
#c=(2*7*6)
print(c.size) """
而stack则会增加新的维度。
如对两个1*2维的tensor在第0个维度上stack,则会变为2*1*2的tensor;在第1个维度上stack,则会变为1*2*2的tensor。
"""
a = torch.rand((1, 2))
b = torch.rand((1, 2))
c = torch.stack((a, b), 0)
print(c.size()) if __name__=='__main__':
cat_and_stack()
3.压缩和扩展维度:改变tensor中只有1个维度的tensor
torch.squeeze(input, dim=None, out=None) → Tensor
除去输入张量input中数值为1的维度,并返回新的张量。如果输入张量的形状为(A×1×B×C×1×D) 那么输出张量的形状为(A×B×C×D)
当通过dim参数指定维度时,维度压缩操作只会在指定的维度上进行。如果输入向量的形状为(A×1×B),
squeeze(input, 0)会保持张量的维度不变,只有在执行squeeze(input, 1)时,输入张量的形状会被压缩至(A×B) 。
如果一个张量只有1个维度,那么它不会受到上述方法的影响。
#coding=utf-8
import torch def squeeze_tensor():
x = torch.Tensor(1,3)
y=torch.squeeze(x, 0)
print("y:",y)
y=torch.unsqueeze(y, 1)
print("y:",y) if __name__=='__main__':
squeeze_tensor()
pytorch 中改变tensor维度的几种操作的更多相关文章
- tensorflow中的函数获取Tensor维度的两种方法:
获取Tensor维度的两种方法: Tensor.get_shape() 返回TensorShape对象, 如果需要确定的数值而把TensorShape当作list使用,肯定是不行的. 需要调用Tens ...
- Linux 中改变主机名的 4 种方法
今天,我们将向你展示使用不同的方法来修改主机名.你可以从中选取最适合你的方法. 使用 systemd 的系统自带一个名为 hostnamectl 的好用工具,它可以使我们能够轻易地管理系统的主机名. ...
- Pytorch中RoI pooling layer的几种实现
Faster-RCNN论文中在RoI-Head网络中,将128个RoI区域对应的feature map进行截取,而后利用RoI pooling层输出7*7大小的feature map.在pytorch ...
- ES5中改变this指向的三种方法
ES5中提供了三种改变函数中this指针指向的方法,分别如下 1.call() var obj = {username:"孙悟空"}; //没有任何修饰的调用函数,函数中的this ...
- Pytorch中ndarray tensor list互转
1.ndarray->tensor : b=torch.from_numpy(a) 2.tensor->ndarray: b=a.numpy() ''' 但这么写会报错-- Runtime ...
- Ext.js中树勾选的四种操作
最近在做控件优化的时候产品提了一个需求,对树的勾选要满足四种勾选方案: 1.点击一次根节点,当根节点和子节点均未选中的情况下,根节点和子节点全都选中. 2.第二次点击根节点,当根节点和部分或全部子节点 ...
- 对pytorch中Tensor的剖析
不是python层面Tensor的剖析,是C层面的剖析. 看pytorch下lib库中的TH好一阵子了,TH也是torch7下面的一个重要的库. 可以在torch的github上看到相关文档.看了半天 ...
- pytorch中tensor数据和numpy数据转换中注意的一个问题
转载自:(pytorch中tensor数据和numpy数据转换中注意的一个问题)[https://blog.csdn.net/nihate/article/details/82791277] 在pyt ...
- pytorch中tensor张量数据基础入门
pytorch张量数据类型入门1.对于pytorch的深度学习框架,其基本的数据类型属于张量数据类型,即Tensor数据类型,对于python里面的int,float,int array,flaot ...
随机推荐
- mysql 根据某个值叠加查询
今天看到需求 根据输入用户ID由近到远排列 怎么会有这种需求??? 直接上代码 SELECT * FROM Member, ( (SELECT ABS(ID-900) as Sorting,ID FR ...
- MFC unicode字符集与多字节字符集 问题之彻底终结!
Unicode 和多字节字符集 (MBCS) 支持 Visual Studio .NET 2003 有些国际市场以大字符集来使用日文和中文等语言.为了支持这些市场的编程,Microsoft 基础类 ...
- LeetCode--300. 最长递增子序列
题目:给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4 ...
- Python 3 对象关系映射(ORM)
ORM 对象关系映射 Object Relational Mapping 表 ---> 类 字段 ---> 属性 记录 ---> 对象 # mysql_client.py impor ...
- c++ const问题小记
int* a = new int; const int* b = a; const int* a = new int; int* b = (int*)a; const int m = 10; int ...
- 安装lispbox出现:error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or directory
如下图,运行lispbox出现如下报错(第一个命令): 检索之后发现解决办法:Solution to libjpeg.so.62 输入一下两条命令(第二条也必须执行): sudo apt-get up ...
- 小米开源数据库<pegasus>简介
数据模型 组合键:Table + HashKey + SortKey Table实现业务数据的隔离 HashKey决定数据在那个分片 SortKey决定数据在分片内的排序 一致性协议 使用Pacifi ...
- golang中copy文件时,buffer设多大值合适,性能对比
在go语言中,copy文件时,大文件使用buffer缓冲,可以明显加快时间, 但这个值多大合适呢? 除了考虑计算机的硬件资源,还要考虑CP文件的大小. 如果都是100m之内的小文件,一次CP完就可以. ...
- IDC:助力转型、深入变革:中国云专业服务市场持续升温
来源:IDC 北京,2019 年 10 月 24 日——随着云计算在中国市场更深入和广泛的应用,与云相关的专业服务(咨询.迁移.开发与建设服务)需求旺盛.IDC 首次发布的<2019 年上半年云 ...
- 01-EF Core笔记之创建模型
使用EF Core的第一步是创建数据模型,模型建的好,下班走的早.EF Core本身已经设置了一系列约定来帮我们快速的创建模型,例如表名.主键字段等,毕竟约定大于配置嘛.如果你想改变默认值,很简单,E ...