当前位置: 首页 > news >正文

Pytorch常用函数

Pytorch

    • 1 一些操作含义
    • 2 常用函数
      • torch.squeeze
      • torch.unsqueeze
      • torch.transpose
      • 随机数生成
      • Tensor详细内容

1 一些操作含义

  1. 下划线后缀含义:
    在touch中函数后面加下划线代表是原位(In-place)操作,也就是内存的位置不变化,比如torch.add(value)和torch.add_(value)
    备注:In-place运算是一种直接改变给定线性函数、向量、矩阵(张量)内容而不复制的运算,因此在操作高维数据时,它能够减少内存使用
  2. like后缀含义:
    在touch中函数后缀有like代表生成的形状维度与输入矩阵的形状维度一致

2 常用函数

torch.squeeze

  1. torch.squeeze(input, dim=None, out=None)
    将输入张量形状中的1 去除并返回。 如果输入是形如(A×1×B×1×C×1×D)
    ,那么输出形状就为: (A×B×C×D)
    当给定dim时,那么挤压操作只在给定维度上。例如,输入形状为: (A×1×B)
    , squeeze(input, 0) 将会保持张量不变,只有用 squeeze(input, 1),形状会变成 (A×B)
  2. 如果dim为负,则将会被转化dim+input.dim()+1,(可以记为从后往前数维度)。dim的维度范围([-input.dim() - 1, input.dim() + 1)
  3. 参数:

tensor (Tensor) – 输入张量

dim (int) – 插入维度的索引

out (Tensor, optional) – 结果张量

具体代码示例

‘’’

import torch
x = torch.zeros(2,1,2,1,2)
x.size()
torch.Size([2, 1, 2, 1, 2])
y=torch.squeeze(x)
y.shape
torch.Size([2, 2, 2])
y=torch.squeeze(x,0)
y.shape
torch.Size([2, 1, 2, 1, 2])
y=torch.squeeze(x,1)
y.size()
torch.Size([2, 2, 1, 2])
y=torch.squeeze(x,-4)
y.shape
torch.Size([2, 2, 1, 2])

‘’’

torch.unsqueeze

torch.unsqueeze(input, dim, out=None),squeeze的逆操作,返回一个新的张量,对输入的指定位置插入维度 1。

具体代码示例

‘’’

x = torch.tensor([1, 2, 3, 4])
x
tensor([1, 2, 3, 4])
torch.unsqueeze(x, 0)
tensor([[1, 2, 3, 4]])
torch.unsqueeze(x, 1)
tensor([[1],
[2],
[3],
[4]])
‘’’

torch.transpose

torch.transpose(input, dim0, dim1, out=None) → Tensor,返回输入矩阵input的转置。交换维度dim0和dim1。

如果输入是一个跨步张量,则结果张量与输入张量共享其底层存储,因此更改其中一个的内容将更改另一个的内容。
如果输入是一个稀疏张量,则结果张量不与输入张量共享底层存储。

参数:
input (Tensor) – 输入张量
dim0 (int) – 转置的第一维
dim1 (int) – 转置的第二维

‘’’

x=torch.randn(2,3,4)
x
tensor([[[-2.2487, -0.5821, 1.1262, 0.7496],
[ 0.8734, 1.6248, -0.5010, 0.7022],
[ 0.4190, 1.6377, -0.1449, 1.1198]],

    [[ 0.2262, -0.8953, -2.3222,  1.6512],[ 0.7219, -0.1876,  0.6869, -0.3515],[-1.2393,  0.7014, -0.3381, -0.7055]]])

torch.transpose(x,0,1)
tensor([[[-2.2487, -0.5821, 1.1262, 0.7496],
[ 0.2262, -0.8953, -2.3222, 1.6512]],

    [[ 0.8734,  1.6248, -0.5010,  0.7022],[ 0.7219, -0.1876,  0.6869, -0.3515]],[[ 0.4190,  1.6377, -0.1449,  1.1198],[-1.2393,  0.7014, -0.3381, -0.7055]]])

‘’’

随机数生成

函数生成类型
normal离散正态分布中随机抽取浮点数
rand从区间[0,1)的均匀分布中抽取的随机抽取一组浮点数
randn从标准正态分布(均值为0,方差为 1)中随机抽取一组浮点数
randint半开区间[start, end),从start开始到end之间均匀生成的随机整数
randperm给定参数n,返回一个从0 到n -1 的随机整数
range区间[start, end],从start开始到end,以step为步长的一组值(不建议使用)
arange半开区间[start, end),从start开始到end,以step为步长的一组值,当start和end都为整数,输出整数值,有一个为浮点数,则输出浮点数

Tensor详细内容

查看Tensor的相关概念及操作

http://www.lryc.cn/news/214469.html

相关文章:

  • 如何利用python连接讯飞的星火大语言模型
  • 【Kubernetes 基本概念】Kubernetes 的架构和核心概念
  • Docker安装部署Elasticsearch+Kibana+IK分词器
  • PCL setCameraPosition 参数讲解
  • 有关YOLOV5在测试时,图片大小被调整的问题
  • 【机器学习】四、计算学习理论
  • spring解决后端显示时区的问题
  • 大模型冷思考:企业“可控”价值创造空间还有多少?
  • ctfshow-web入门37-52
  • 前端项目部署后,需要刷新页面才能看到更新内容
  • android 13 write javaBean error at *** 错误
  • Only fullscreen opaque activities can request orientation
  • 前端实验(一)单页面应用的创建
  • 数字人小灿:始于火山语音,发于 B 端百业
  • 蓝桥杯刷题
  • Go Metrics SDK Tag 校验性能优化实践
  • 二叉树问题——前/中/后/层遍历问题(递归与栈)
  • Vue3问题:如何实现级联菜单的数据懒加载?
  • STM32-电源管理(实现低功耗)
  • vue 自己捣鼓周日程日历组件
  • 【力扣】2127. (分类讨论 + 拓扑排序)参加会议的最多员工数
  • Flutter——最详细(Map)使用教程
  • vue的入门第一课
  • 已解决:conda找不到对应版本的cudnn如何解决?
  • 大语言模型的学习路线和开源模型的学习材料《二》
  • Flask-SQLAlchemy事件钩子介绍
  • C++——list
  • 【Linux】第九站:make和makefile
  • 一文了解什么是WebSocket
  • redis是什么