首页 > 其他分享 >【PyTorch学习6】张量形状操作

【PyTorch学习6】张量形状操作

时间:2024-08-20 21:53:15浏览次数:6  
标签:reshape torch 张量 PyTorch 维度 形状 data permute Size

  • reshape

reshape函数用于改变数据的维度;

# 使用data.shape data.size()查看数据大小
# reshape 前后元素个数不变
data = torch.tensor([[1,2,3],[4,5,6]])  # torch.Size([2, 3])
data1 = data.reshape(3,2)  # torch.Size([3, 2])
# 使用-1省略形状
data2 = data.reshape(1,-1)  # torch.Size([1, 6])
data3 = data.reshape(-1,1)  # torch.Size([6, 1])
  • transpose/permute

transpose把两个维度位置进行交换;permute一次性更换维度位置;

  • view

只可用于存储在整块内存中的张量(有些张量由不同数据块组成(经过transpose/permute操作后使得张量不连续)——先使用contiguous函数使之在一块内存);

# transpose 只可两个维度交换
data = torch.randint(0,10,[3,4,5])  # torch.Size([3, 4, 5])
data1 = data.transpose(0,2)  # torch.Size([5, 4, 3])  or data1 = torch.transpose(data,0,2)

# permute
data2 = data.permute(0,2,1)  # torch.Size([3, 5, 4])  or torch.permute(data,0,2,1)

# view
data3 = data.view(3,2,10)  # torch.Size([3, 2, 10])
print(data2.is_contiguous())  # False
data4 = data2.contiguous().view(3,10,2)  # torch.Size([3, 10, 2])
  • squeeze/unsqueeze

squeeze删除shape为1的维度;unsqueeze在某一位置添加为1的维度;

data = torch.randint(0,10,[2,1,2,1])  # torch.Size([2, 1, 2])
# squeeze 默认去掉所有为1的维度
data1 = data.squeeze()  # torch.Size([2, 2])
# squeeze 指定去掉为1的维度
data2 = data.squeeze(1)  # torch.Size([2, 2, 1])

# unsqueeze
data3 = data.unsqueeze(0)  # torch.Size([1, 2, 1, 2, 1])
data4 = data.unsqueeze(-1)  # torch.Size([2, 1, 2, 1, 1])

标签:reshape,torch,张量,PyTorch,维度,形状,data,permute,Size
From: https://blog.csdn.net/qq_59640099/article/details/141368332

相关文章

  • 深入探索 PyTorch:torch.nn.Parameter 与 torch.Tensor 的奥秘
    标题:深入探索PyTorch:torch.nn.Parameter与torch.Tensor的奥秘在深度学习的世界里,PyTorch以其灵活性和易用性成为了众多研究者和开发者的首选框架。然而,即使是经验丰富的PyTorch用户,也可能对torch.nn.Parameter和torch.Tensor之间的区别感到困惑。本文将深入剖析......
  • 动手做科研-day04-pytorch学习
    写练习时遇到的问题1.如何判断一个张量的分布服从[0,1)的均匀分布?t=torch.rand(5,4)怎么证明这个是服从均匀分布的?解决:均匀分布的概率密度f(x)为:\(f(x)=\frac{1}{b-a}\),其中x为[a,b],根据本例子为f(x)=1,\(x\in[0,1]\)均值\(\mu\)的计算为:$$\mu=\int_{a}^{......
  • PyTorch中的随机采样秘籍:SubsetRandomSampler全解析
    标题:PyTorch中的随机采样秘籍:SubsetRandomSampler全解析在深度学习的世界里,数据是模型训练的基石。而如何高效、合理地采样数据,直接影响到模型训练的效果和效率。PyTorch作为当前流行的深度学习框架,提供了一个强大的工具torch.utils.data.SubsetRandomSampler,它允许开发者......
  • 支持cuda的pytorch
    (.venv)PSC:\Users\augus\PycharmProjects\pythonProject>pip3installtorchtorchvisiontorchaudio--index-urlhttps://download.pytorch.org/whl/cu124Lookinginindexes:https://download.pytorch.org/whl/cu124Requirementalreadysatisfied:torchinc......
  • Focal Loss详解及其pytorch实现
    FocalLoss详解及其pytorch实现文章目录FocalLoss详解及其pytorch实现引言二分类与多分类的交叉熵损失函数二分类交叉熵损失多分类交叉熵损失FocalLoss基础概念关键点理解什么是难分类样本和易分类样本?超参数......
  • 深度学习加速秘籍:PyTorch torch.backends.cudnn 模块全解析
    标题:深度学习加速秘籍:PyTorchtorch.backends.cudnn模块全解析在深度学习领域,计算效率和模型性能是永恒的追求。PyTorch作为当前流行的深度学习框架之一,提供了一个强大的接口torch.backends.cudnn,用于控制CUDA深度神经网络库(cuDNN)的行为。本文将深入探讨torch.backends.cu......
  • 深度学习-pytorch-basic-001
    importtorchimportnumpyasnptorch.manual_seed(1234)<torch._C.Generatorat0x21c1651e190>defdescribe(x):print("Type:{}".format(x.type()))print("Shape/Size:{}".format(x.shape))print("Values:{}"......
  • PyTorch深度学习实战(18)—— 可视化工具
    在训练神经网络时,通常希望能够更加直观地了解训练情况,例如损失函数曲线、输入图片、输出图片等信息。这些信息可以帮助读者更好地监督网络的训练过程,并为参数优化提供方向和依据。最简单的办法就是打印输出,这种方式只能打印数值信息,不够直观,同时无法查看分布、图片、声音等......
  • 零基础学习人工智能—Python—Pytorch学习(五)
    前言上文有一些文字打错了,已经进行了修正。本文主要介绍训练模型和使用模型预测数据,本文使用了一些numpy与tensor的转换,忘记的可以第二课的基础一起看。线性回归模型训练结合numpy使用首先使用datasets做一个数据X和y,然后结合之前的内容,求出y_predicted。#pipinstallmatp......
  • PyTorch--双向长短期记忆网络(BiRNN)在MNIST数据集上的实现与分析
    文章目录前言完整代码代码解析1.导入库2.设备配置3.超参数设置4.数据集加载5.数据加载器6.定义BiRNN模型7.实例化模型并移动到设备8.损失函数和优化器9.训练模型10.测试模型11.保存模型常用函数前言本代码实现了一个基于PyTorch的双向长短期记忆网络(BiRNN),用于对MNI......