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的转置,运算的更多相关文章

  1. Pytorch Tensor 常用操作

    https://pytorch.org/docs/stable/tensors.html dtype: tessor的数据类型,总共有8种数据类型,其中默认的类型是torch.FloatTensor, ...

  2. pytorch 不使用转置卷积来实现上采样

    上采样(upsampling)一般包括2种方式: Resize,如双线性插值直接缩放,类似于图像缩放,概念可见最邻近插值算法和双线性插值算法——图像缩放 Deconvolution,也叫Transpo ...

  3. Pytorch Tensor, Variable, 自动求导

    2018.4.25,Facebook 推出了 PyTorch 0.4.0 版本,在该版本及之后的版本中,torch.autograd.Variable 和 torch.Tensor 同属一类.更确切地 ...

  4. pytorch tensor与numpy转换

    从官网拷贝过来的,就是做个学习记录.版本 0.4 tensor to numpy a = torch.ones(5) print(a) 输出 tensor([1., 1., 1., 1., 1.]) ...

  5. pytorch tensor 维度理解.md

    torch.randn torch.randn(*sizes, out=None) → Tensor(张量) 返回一个张量,包含了从标准正态分布(均值为0,方差为 1)中抽取一组随机数,形状由可变参数 ...

  6. pytorch tensor的索引与切片

    切片方式与numpy是类似. * a[:2, :1, :, :], * 可以用-1索引. * ::2,表示所有数据,间隔为2,即 start:end:step. *  a.index_select(1 ...

  7. Pytorch Tensor 维度的扩充和压缩

    维度扩展 x.unsqueeze(n) 在 n 号位置添加一个维度 例子: import torch x = torch.rand(3,2) x1 = x.unsqueeze(0) # 在第一维的位置 ...

  8. 深度学习框架PyTorch一书的学习-第三章-Tensor和autograd-1-Tensor

    参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 Tensor Tensor可以是一个数 ...

  9. [Pytorch]Pytorch中tensor常用语法

    原文地址:https://zhuanlan.zhihu.com/p/31494491 上次我总结了在PyTorch中建立随机数Tensor的多种方法的区别. 这次我把常用的Tensor的数学运算总结到 ...

  10. 【小白学PyTorch】10 pytorch常见运算详解

    参考目录: 目录 1 矩阵与标量 2 哈达玛积 3 矩阵乘法 4 幂与开方 5 对数运算 6 近似值运算 7 剪裁运算 这一课主要是讲解PyTorch中的一些运算,加减乘除这些,当然还有矩阵的乘法这些 ...

随机推荐

  1. Nginx安装nginx-rtmp-module模块

    简介 nginx中的模块虽然就是类似插件的概念,但是它无法像VsCode那样轻松的安装扩展. nginx要安装其它模块必须同时拿到nginx源代码和模块源代码,然后手动编译,将模块打到nginx中,最 ...

  2. iview 多弹框,显示z-index 不对,被遮挡的解决方案 goTop函数 modal Drawer 抽屉

    iview 多弹框,显示z-index 不对,被遮挡的解决方案 goTop函数 modal 原因 弹多个modal框的时候,会被遮挡,导致后显示的框在下面 解决原理 获取当前弹框的z-index,然后 ...

  3. iview 动态表单验证 FormItem prop rules v-show 动态表单校验

    iview 动态表单验证 FormItem prop rules v-show 重点1 用v-show 控制显示隐藏 重点2 prop 指定字段 重点3 :rules 动态指定规则 <div v ...

  4. 从一线方案商的角度来看高通QCC3020芯片

    写在前面的话   QCC3020的推出已经有一段时间了.在蓝牙音频的圈子里,属于家喻户晓的芯片了.再加上高通的大力宣传和一些顶尖级产品的使用,可以说,它是高通在吸收CSR的技术之后,着力推出的最具竞争 ...

  5. git 删除本地创建的仓库常用方法

    基本方法   清除本地文件夹下的git文件,然后在重新初始化新建的git仓库 具体实施 //删除文件夹下的所有 .git 文件 find . -name ".git" | xarg ...

  6. 使用docker-compose管理freeswitch容器

    概述 之前的文章我们介绍过如何将freeswitch做成docker镜像,也使用命令行模式正常启动了fs的docker容器. 但是当我们需要同时管理多个docker容器的时候,还是使用docker-c ...

  7. LinuxDNS分析从入门到放弃(记一次有趣的dns问题排查记录,ping 源码分析,getaddrinfo源码分析)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   ubuntu 18.04 前言   我们这里有一块 ...

  8. Python伪数据生成器Mimesis 使用

    一.**Mimesis的介绍** Mimesis是一个用于Python的high-performance伪数据生成器,它用各种语言为各种目的提供数据.这些假数据可以用来填充测试数据库,创建假API端点 ...

  9. 记录--H5 视频兼容性处理总结

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 概述 最近在负责公司官网的开发,在 H5 播放视频时,遇到很多兼容问题,所以总结下在 H5 播放时,遇到的兼容性问题,并封装一个 Vide ...

  10. 使用 NocoDB 一键将各种数据库转换为智能表格

    NocoDB 是一款开源的无代码数据库平台,可以进行数据管理和应用开发.它的灵感来自 Airtable,支持与 Airtable 类似的电子表格式交互.关系型数据库 Schema 设计.API 自动生 ...