Pytorch-tensor的转置,运算
1.矩阵的转置
方法:
t()
a=torch.randint(1,10,[2,3])
print(a,'\n')
print(a.t())
输出结果
tensor([[2, 8, 2],
[9, 2, 4]])
tensor([[2, 9],
[8, 2],
[2, 4]])
transpose(维度下标1,维度下标2):任意两个维度之间的转换
a=torch.randint(1,10,[2,3,4,5])
print(a.shape)
a1=a.transpose(1,3)
print(a1.shape)
输出结果
torch.Size([2, 3, 4, 5])
torch.Size([2, 5, 4, 3])
permute(维度的下标):所有维度之间的任意转换
a=torch.randint(1,10,[2,3,4,5])
print(a.shape)
a1=a.permute(2,3,1,0)
print(a1.shape)
输出结果
torch.Size([2, 3, 4, 5])
torch.Size([4, 5, 3, 2])
2.矩阵的四则运算
矩阵的加法:2行3列矩阵+2行3列矩阵:
a=torch.randint(1,10,[2,3])
b=torch.randint(1,10,[2,3])
print(a,'\n')
print(b,'\n')
print(a+b,'\n')
输出结果
tensor([[4, 1, 8],
[6, 7, 4]])
tensor([[9, 7, 1],
[5, 1, 6]])
tensor([[13, 8, 9],
[11, 8, 10]])
2行3列矩阵+1行3列矩阵:会先将第二个矩阵复制一行,然后再相加
a=torch.randint(1,10,[2,3])
b=torch.randint(1,10,[1,3])
print(a,'\n')
print(b,'\n')
print(a+b,'\n')
输出结果
tensor([[9, 2, 3],
[2, 7, 9]])
tensor([[7, 8, 2]])
tensor([[16, 10, 5],
[ 9, 15, 11]])
2行1列矩阵+1行3列矩阵:会先将第一个矩阵复制成三列,然后将第二个矩阵复制成两行,再进行相加
a=torch.randint(1,10,[2,1])
b=torch.randint(1,10,[1,3])
print(a,'\n')
print(b,'\n')
print(a+b,'\n')
输出结果
tensor([[3],
[2]])
tensor([[4, 2, 5]])
tensor([[7, 5, 8],
[6, 4, 7]])
cat(所要相加的矩阵,维度):两个矩阵的某个维度相加
除了相加的维度之外,其余的维度的值必须相同
a=torch.randint(1,10,[2,3])
b=torch.randint(1,10,[1,3])
print(a.shape)
print(b.shape)
print(torch.cat([a,b],dim=0).shape,'\n')
输出结果
torch.Size([2, 3])
torch.Size([1, 3])
torch.Size([3, 3])
stack():会在所相加维度之前加一个2维的维度,用于两个tensor相加,但不想合并。
a=torch.randint(1,10,[1,3])
b=torch.randint(1,10,[1,3])
print(a.shape)
print(b.shape)
print(torch.stack([a,b],dim=0).shape)
print(torch.stack([a,b],dim=1).shape)
输出结果
torch.Size([1, 3])
torch.Size([1, 3])
torch.Size([2, 1, 3])
torch.Size([1, 2, 3])
矩阵的外积
a=torch.tensor([[1,2],[3,4]])
b=torch.tensor([[1,2],[3,4]])
print(a)
print(b)
print(a*b)
输出结果
tensor([[1, 2],
[3, 4]])
tensor([[1, 2],
[3, 4]])
tensor([[ 1, 4],
[ 9, 16]])
matmul(矩阵a,矩阵b): 计算矩阵的内积(推荐)
@:计算矩阵的内积
a=torch.tensor([[1,2],[3,4]])
b=torch.tensor([[1,2],[3,4]])
print(a)
print(b)
print(torch.matmul(a,b)) #推荐使用此方法
print(a@b) # 不推荐
输出结果
tensor([[1, 2],
[3, 4]])
tensor([[1, 2],
[3, 4]])
tensor([[ 7, 10],
[15, 22]])
tensor([[ 7, 10],
[15, 22]])
Pytorch-tensor的转置,运算的更多相关文章
- Pytorch Tensor 常用操作
https://pytorch.org/docs/stable/tensors.html dtype: tessor的数据类型,总共有8种数据类型,其中默认的类型是torch.FloatTensor, ...
- pytorch 不使用转置卷积来实现上采样
上采样(upsampling)一般包括2种方式: Resize,如双线性插值直接缩放,类似于图像缩放,概念可见最邻近插值算法和双线性插值算法——图像缩放 Deconvolution,也叫Transpo ...
- Pytorch Tensor, Variable, 自动求导
2018.4.25,Facebook 推出了 PyTorch 0.4.0 版本,在该版本及之后的版本中,torch.autograd.Variable 和 torch.Tensor 同属一类.更确切地 ...
- pytorch tensor与numpy转换
从官网拷贝过来的,就是做个学习记录.版本 0.4 tensor to numpy a = torch.ones(5) print(a) 输出 tensor([1., 1., 1., 1., 1.]) ...
- pytorch tensor 维度理解.md
torch.randn torch.randn(*sizes, out=None) → Tensor(张量) 返回一个张量,包含了从标准正态分布(均值为0,方差为 1)中抽取一组随机数,形状由可变参数 ...
- pytorch tensor的索引与切片
切片方式与numpy是类似. * a[:2, :1, :, :], * 可以用-1索引. * ::2,表示所有数据,间隔为2,即 start:end:step. * a.index_select(1 ...
- Pytorch Tensor 维度的扩充和压缩
维度扩展 x.unsqueeze(n) 在 n 号位置添加一个维度 例子: import torch x = torch.rand(3,2) x1 = x.unsqueeze(0) # 在第一维的位置 ...
- 深度学习框架PyTorch一书的学习-第三章-Tensor和autograd-1-Tensor
参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 Tensor Tensor可以是一个数 ...
- [Pytorch]Pytorch中tensor常用语法
原文地址:https://zhuanlan.zhihu.com/p/31494491 上次我总结了在PyTorch中建立随机数Tensor的多种方法的区别. 这次我把常用的Tensor的数学运算总结到 ...
- 【小白学PyTorch】10 pytorch常见运算详解
参考目录: 目录 1 矩阵与标量 2 哈达玛积 3 矩阵乘法 4 幂与开方 5 对数运算 6 近似值运算 7 剪裁运算 这一课主要是讲解PyTorch中的一些运算,加减乘除这些,当然还有矩阵的乘法这些 ...
随机推荐
- PHP四则运算类(支持加、减、乘、除、小中括号)
<?php /** * 四则运算(支持加.减.乘.除.小中括号) * Class calculator */ class calculator { //保留几位小数点 public $point ...
- vagrant 多个box的操作|共享目录失败
本来机器上已经有一个Ubuntu的box了,今天想在安装一个centos的box,结果还折腾了很长时间. 多个机器的命令 添加box的时候需要使用名称,一个的时候可以忽略名称 vagrant box ...
- ESP8266 SPI 开发之软件驱动代码分析
一 基本概述 esp8266的SPI代码流程非常的清晰,主要有三部分构成: spi_init 配置 spi_trans 配置 data_transfer 配置这三块组成. 在这里,笔者就针对spi的这 ...
- Oracle数据库中sql查询很快,但在程序中查询较慢的原因和解决方法
代码如下 string sql = "SELECT * FROM LIS_V_LABTESTSAMPLE WHERE PATIENT_ID=:P"; HlsA ...
- 关于百分百浏览器(cent browser)无法使用QQ快捷登录问题
个人比较喜欢用百分百浏览器,但是QQ似乎不允许此浏览器进行登录,参考了下网上提供的思路,研究解决了QQ无法登录的问题 主要就设置了下证书,详情步骤见下面图片
- 3D渲染慢,直接买显卡还是用云渲染更划算?
3D渲染对建筑师和设计师来说并不陌生,3D渲染的过程中出现渲染卡顿.特殊材质难以渲染,或者本地配置不足.本地渲染资源不够时,常常会影响工作效率.本文比较了3D渲染时,为提高工作效率,买显卡还是用云渲染 ...
- struts2-66漏洞复现
Strut2-66漏洞从搭建到复现到原理 0x0 创建JavaEE环境 使用idea创建JavaEE项目,添加Strut2的依赖 点击右上角创建新项目 下一步,依赖项只选择一个Servlet就行了,版 ...
- [javascript]细节与使用经验
[版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18031957 出自[进步*于辰的博客] 纯文字阐述,内 ...
- 【Spring注解驱动开发】你敢信?面试官竟然让我现场搭建一个AOP测试环境!
写在前面 今天是9月1号,金九银十的跳槽黄金期已拉开序幕,相信很多小伙伴也在摩拳擦掌,想换一个新的工作环境.然而,由于今年疫情的影响,很多企业对于招聘的要求是越来越严格.之前,很多不被问及的知识点,最 ...
- SSH和SFTP是否相同
SSH和SFTP是否相同?SSH和SFTP是经典的对.在确保通信安全方面,它们交织在一起,尽管它们具有类似的功能,但它们并不是一回事.那么,它们之间有什么区别?请仔细阅读,找出答案. 什么是SSH? ...