**

1 Cat

**
对数据沿着某一维度进行拼接。cat后数据的总维数不变.

比如下面代码对两个2维tensor(分别为23,13)进行拼接,拼接完后变为3*3还是2维的tensor。

import torch

torch.manual_seed(1)

x = torch.randn(2,3)

y = torch.randn(1,3)

print(x,y)

结果:

0.6614 0.2669 0.0617

0.6213 -0.4519 -0.1661

[torch.FloatTensor of size 2x3]

-1.5228 0.3817 -1.0276

[torch.FloatTensor of size 1x3]

将两个tensor拼在一起:

torch.cat((x,y),0)
结果:

0.6614 0.2669 0.0617

0.6213 -0.4519 -0.1661

-1.5228 0.3817 -1.0276

[torch.FloatTensor of size 3x3]

2 stack,增加新的维度进行堆叠

而stack则会增加新的维度。
如对两个12维的tensor在第0个维度上stack,则会变为212的tensor;在第1个维度上stack,则会变为12*2的tensor。
见代码:

a=torch.rand((1,2))
b=torch.rand((1,2))

c=torch.stack((a,b),0)

c.size()

结果:

torch.Size([2, 1, 2])

换成维度1:

d=torch.stack((a,b),1)

d.size()

结果:

torch.Size([1, 2, 2])

3 transpose ,交换维度

代码:

torch.manual_seed(1)

x = torch.randn(2,3)

print(x)

结果:

0.6614 0.2669 0.0617

0.6213 -0.4519 -0.1661

[torch.FloatTensor of size 2x3]

将x的维度互换:

x.transpose(0,1)

结果:
0.6614 0.6213
0.2669 -0.4519
0.0617 -0.1661
[torch.FloatTensor of size 3x2]
**

4 permute,适合多维数据,更灵活的transpose

**
permute是更灵活的transpose,可以灵活的对原数据的维度进行调换,而数据本身不变。
代码如下:

x = torch.randn(2,3,4)

print(x.size())

x_p = x.permute(1,0,2) # 将原来第1维变为0维,同理,0→1,2→2 print(x_p.size())

结果:

torch.Size([2, 3, 4])

torch.Size([3, 2, 4])

**

5 squeeze 和 unsqueeze

**
squeeze(dim_n)压缩,即去掉元素数量为1的dim_n维度。同理unsqueeze(dim_n),增加dim_n维度,元素数量为1。

上代码:

定义张量

import torch

b = torch.Tensor(2,1)
b.shape
Out[28]: torch.Size([2, 1])

不加参数,去掉所有为元素个数为1的维度

b_ = b.squeeze()
b_.shape
Out[30]: torch.Size([2])

加上参数,去掉第一维的元素为1,不起作用,因为第一维有2个元素

b_ = b.squeeze(0)
b_.shape
Out[32]: torch.Size([2, 1])

这样就可以了

b_ = b.squeeze(1)
b_.shape
Out[34]: torch.Size([2])

增加一个维度

b_ = b.unsqueeze(2)
b_.shape
Out[36]: torch.Size([2, 1, 1])

**

6 view

**

torch.Tensor.view会将原有数据重新分配为一个新的张量,比如我们使用:

x = torch.randn(2, 4)
会输出一个随机张量:

1.5600 -1.6180 -2.0366 2.7115
0.8415 -1.0103 -0.4793 1.5734
[torch.FloatTensor of size 2x4]
然后我们看一下使用view重新构造一个Tensor

y = x.view(4,2)
print y

输出如下

1.5600 -1.6180
-2.0366 2.7115
0.8415 -1.0103
-0.4793 1.5734
[torch.FloatTensor of size 4x2]
从这里我们可以看出来他的作用,既然这样,我们可以将他变成一个三维数组:

z = x.view(2,2,2)

输出

(0 ,.,.) =
1.5600 -1.6180
-2.0366 2.7115

(1 ,.,.) =
0.8415 -1.0103
-0.4793 1.5734
[torch.FloatTensor of size 2x2x2]

python中cat,stac,transpose,permute,squeeze区别用法相关推荐

  1. Python中爬虫框架或模块的区别

    Python中爬虫框架或模块的区别,我们在Python的学习过程中,需要不断的总结知识点,这样我们才能进步的更快一些. (1)爬虫框架或模块 Python自带爬虫模块:urllib.urllib2; ...

  2. Python中值传递和引用传递区别

    原文:http://blog.csdn.net/xuqiaobo/article/details/72236539 举例,函数参数如果是dic,都不需要返回值,原值就被改变了 def aa(dic): ...

  3. Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用...

    Python中str()与repr()函数的区别 from:https://www.jianshu.com/p/2a41315ca47e 在 Python 中要将某一类型的变量或者常量转换为字符串对象 ...

  4. python中列表 元组 字典 集合的区别

    参考文章:python中列表 元组 字典 集合的区别

  5. Python中爬虫框架或模块的区别!

    Python中爬虫框架或模块的区别,我们在Python的学习过程中,需要不断的总结知识点,这样我们才能进步的更快一些. (1)爬虫框架或模块 Python自带爬虫模块:urllib.urllib2; ...

  6. 【Python】Python中str()和repr()函数的区别

    作用 在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或者 repr() . 区别与使用 参考文章:Python 中 str() 和 repr() 函数的 ...

  7. python中的return和print的区别_python中return和print的区别(详细)

    Huskiesir python最近正在研究.今天,我面临一个问题,那就是,返回和印刷的区别.双方都能输出结果.的区别是什么?闲话少说,看下面的例子.# Code1: def break_words( ...

  8. python中dtype什么意思_浅谈python 中的 type(), dtype(), astype()的区别

    如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...

  9. python dtype什么意思_浅谈python 中的 type(), dtype(), astype()的区别

    如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...

最新文章

  1. 双极性信号、正交信号和PAM信号通信系统仿真
  2. 2021年3月15日 腾讯PCG运营开发实习面试(一、二、三面)(面经含总结)
  3. 骚操作!用 CPU 烤肉,这位程序员做到了
  4. Zeppelin源码
  5. 2010.6.15 常用数据类型转换总结
  6. 补充一种简单的存储过程分页
  7. PowerShell runspace 的创建,使用和查错
  8. RMAN 备份与恢复深入解析(二)
  9. mysql docker自动化_docker自动化部署
  10. 重庆高职高专计算机排名,重庆十大大专排名(含分数线2021年参考)-重庆最好的全日制专科学校...
  11. 大话数据结构第四章栈的应用
  12. POJ1273 裸裸的网络流
  13. android解析xml文件的方式
  14. web项目缺少web组件才能与vs一起运行,带razor语法的 asp.net web pages 2.0.0.1
  15. MyBatis与JPA的区别是什么
  16. CSP - 201403-1 - 相反数 (C++)
  17. PHP微信怎么计步数,微信运动怎么关注好友步数(微信运动计步功能使用方法介绍)...
  18. day24.open 打开文件操作
  19. WGS 1984地理坐标系的墨卡托投影分度带(UTM ZONE)选择方法
  20. RabbitMQ简介以及AMQP协议

热门文章

  1. mysql1044错误代码_mysql出现1044错误怎么办
  2. SICP读书笔记 2.1
  3. 第四次c语言实验报告模板,C语言实验报告模板完成版
  4. 怎么用手机压缩图片?教给大家三种手机压缩图片方法
  5. 金字塔pyramid
  6. 设计模式循序渐进(9)解释器模式 Interpreter
  7. 荷兰:请别叫我无冕之王!
  8. 用python搜索百度过滤广告_Python净化百度搜索结果!真正的做到无广告环境!
  9. Day 。 9 我来个初级的文字游戏《魔兽世界。巫妖王之怒》
  10. [附源码]java毕业设计图书借阅系统