Pytorch学习笔记(一)

本文详细介绍了Pytorch中的几个重要函数:view()用于多行Tensor转行,squeeze()用于移除维度大小为1的轴,unsqueeze()则相反,增加维度。同时解释了torch.max()如何返回最大值及其对应索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇博客主要向大家介绍Pytorch中view()、squeeze()、unsqueeze()、torch.max()函数,这些函数虽然简单,但是在
神经网络编程总却经常用到,希望大家看了这篇博文能够把这些函数的作用弄清楚。

import torch
  • 1
a=torch.Tensor(2,3)
a
  • 1
  • 2
 3.8686e+25  9.1836e-39  1.2771e-40
 9.0079e+15  1.6751e-37  2.9775e-41
 [torch.FloatTensor of size 2x3]
  • 1
  • 2
  • 3
  • 4

view()函数作用是将一个多行的Tensor,拼接成一行。

a.view(1,-1) 
  • 1
 3.8686e+25  9.1836e-39  1.2771e-40  9.0079e+15  1.6751e-37  2.9775e-41
 [torch.FloatTensor of size 1x6]
  • 1
  • 2
  • 3

下面是torch中squeeze()和unsqueeze()两个函数。

b=torch.Tensor(1,3)
b
  • 1
  • 2
 3.3447e+30  6.1237e-43  5.9179e+32
 [torch.FloatTensor of size 1x3]
  • 1
  • 2
  • 3
b.squeeze(0)  
  • 1
 3.3447e+30
 6.1237e-43
 5.9179e+32
[torch.FloatTensor of size 3]
  • 1
  • 2
  • 3
  • 4
  • 5
b.squeeze(1)
  • 1
 3.3447e+30  6.1237e-43  5.9179e+32
[torch.FloatTensor of size 1x3]
  • 1
  • 2
  • 3

squeeze中的参数0、1分别代表第一、第二维度,squeeze(0)表示如果第一维度值为1,则去掉,否则不变。故b的维度(1,3),可去掉1成(3),但不可去掉3。

c=torch.Tensor(3)
c
  • 1
  • 2
 7.5589e+28
 5.2839e-11
 1.8888e+31
[torch.FloatTensor of size 3]
  • 1
  • 2
  • 3
  • 4
  • 5
c.unsqueeze(0)
  • 1
 7.5589e+28  5.2839e-11  1.8888e+31
[torch.FloatTensor of size 1x3]
  • 1
  • 2
  • 3
c.unsqueeze(1)
  • 1
 7.5589e+28
 5.2839e-11
 1.8888e+31
[torch.FloatTensor of size 3x1]
  • 1
  • 2
  • 3
  • 4
  • 5

unsqueeze()与squeeze()作用相反。参数代表的意思相同。

d=torch.Tensor([[1,3],[2,4]])
d
  • 1
  • 2
 1  3
 2  4
[torch.FloatTensor of size 2x2]
  • 1
  • 2
  • 3
  • 4
torch.max(d,0)
  • 1
(
  2  4
 [torch.FloatTensor of size 1x2], 
  1  1
 [torch.LongTensor of size 1x2])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

torch.max()返回两个结果,第一个是最大值,第二个是对应的索引值;第二个参数 0 代表按列取最大值并返回对应的行索引值,1 代表按行取最大值并返回对应的列索引值。

torch.max(d,1)
  • 1
(
  3
  4
 [torch.FloatTensor of size 2x1], 
  1
  1
 [torch.LongTensor of size 2x1])
### PyTorch 学习笔记概述 李毅编写的《PyTorch学习笔记》是份详尽的学习指南,旨在帮助读者掌握深度学习框架PyTorch的核心概念和技术。这份笔记不仅涵盖了基础理论知识,还提供了大量实践案例和代码实现。 #### 主要内容结构 1. **环境搭建** 安装配置PyTorch运行所需的软件环境,包括Python版本的选择、CUDA支持以及Anaconda的使用方法[^2]。 2. **张量操作** 解释了如何创建、转换和处理多维数组(即张量),这是构建神经网络模型的基础构件之[^3]. 3. **自动求导机制** 描述了Autograd模块的工作原理及其在反向传播算法中的应用,使用户能够轻松定义复杂的计算图并高效训练模型[^4]. 4. **优化器与损失函数** 探讨了几种常用的梯度下降变体(SGD, Adam等)及相应的损失衡量标准(MSE Loss, CrossEntropyLoss等),这些组件对于调整权重参数至关重要[^5]. 5. **数据加载与预处理** 展示了Dataset类和DataLoader类的功能特性,它们可以简化大规模图像分类任务的数据读取流程;同时也介绍了常见的图片增强技术来扩充样本集规模[^6]. 6. **卷积神经网络(CNN)** 结合具体实例深入剖析CNN架构设计思路,如LeNet,VGG,resnet系列,并给出完整的项目源码供参考学习[^7]. 7. **循环神经网络(RNN/LSTM/GRU)** 阐述时间序列预测场景下RNN家族成员的特点优势,通过手写字符识别实验验证其有效性[^8]. 8. **迁移学习实战演练** 利用预训练好的大型模型作为特征提取器,在新领域内快速建立高性能的应用程序,减少重复劳动成本的同时提高了泛化能力[^9]. 9. **分布式训练入门指导** 当面对超大数据集时,单机难以满足需求,此时可借助于torch.distributed包来进行集群式的协同工作模式探索[^10]. ```python import torch from torchvision import datasets, transforms transform = transforms.Compose([transforms.ToTensor()]) train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True) for images, labels in train_loader: print(images.shape) break ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值