pytorch学习笔记(一)

本文介绍了卷积神经网络的基础知识,包括权值共享如何减少计算量,以及卷积神经网络在PyTorch中的实现步骤,包括网络实例化、前向传播、损失计算、反向传播和权重更新。

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

在pytorch上进行一个图像识别的项目。
在该项目中,用的是卷积神经网络实现。所以在介绍代码之前,先来回顾一下卷积神经网络。
对于图像处理问题,图像的输入是一个个像素组成。组成一副图像的像素点较多,因此如果用全连接神经网络进行训练和学习的话,网络的参数太多、计算量太大。所以,卷积神经网络就诞生了。

卷积神经网络特点:
1、全连接网络的特殊化
2、权值共享,减少计算量

先来解释一下为什么是全连接网络的特殊化。在全连接网络中,我们假设有3个输入,隐层有5个神经元,输出层有2个神经元。隐层的5个神经元都要与输入的3个神经元进行连接。也就是,有5*3个权值。但是在卷积神经网络中,5个神经元不再与输入的3个神经元连接,有可能是两个或者更少。所以说,卷积神经网络隐层神经元的权值只是把全连接神经网络的部分权重给拿出来。

再来说说权值共享。我们用一个卷积核去跟输入进行卷积操作,卷积核矩阵的“内容”就是权值,那也就是说,我们在进行卷积操作的时候,每个神经元的权重更新的数目就是卷积核的大小。如果说,我们有5个卷积核,每个卷积核的大小为22,那么我们所需更新权重的个数为52*2个权重。大大减少了计算量!!

其实,每个卷积核去“勘探”某个特征,多个卷积核去“勘探”多个特征。经过卷积操作,我们的视野就像放大了一样。也就是说,全连接网络的输入把视野放到一个个的像素点上,卷积神经网络把视野放在了和卷积核大小相同的区域上。经过多次卷积操作,我们的视野不断放大。

对于池化层,我们可以用不同的方法对其进行操作。总之就是“取其精华”。把主要的拿出来,次要的抛弃掉。经过池化,我们的计算维度又会得到减少。
以上是我目前对卷积神经网络的理解。

卷积神经网络在pytorch上的实现。
首先,先理清一下思路:
1、对网络进行实例化
2、前向传播
3、求损失
4、反向传播
5、权重更新

1、对神经网络进行实例化

class Net(nn.Module):

    def __init__(self):
        supe
### 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、付费专栏及课程。

余额充值