pytorch深度学习

安装python 默认版本 3.9

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn torch==1.12.1 torchvision==0.13.1+cu113 torchaudio==0.12.1 torchdata

PyTorch 是基于以下两个目的而打造的python科学计算框架:

  • 无缝替换NumPy,并且通过利用GPU的算力来实现神经网络的加速。

  • 通过自动微分机制,来让神经网络的实现变得更加容易。

Tensor:张量如同数组和矩阵一样, 是一种特殊的数据结构。在PyTorch中, 神经网络的输入、输出以及网络的参数等数据, 都是使用张量来进行描述。

torchvision :包含了

torchdata :

torchtext :

jupyterlab: 项目编辑器:安装pip3 install jupyterlab ,启动:jupyter lab

pychram:安装工具,add filter。。。属性,配置本地的默认的环境

Pandas :处理Excel

激活函数:FReLU激活函数,将多层数据结构转换为单层的数据结构

视觉神经中,F.relu 用在forward中,nn.Relu 用在网络模型定义中

nn.Linear()函数详解

torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)[原文地址](Linear — PyTorch 1.12 documentation)

其中的参数:
  • in_features – 每个输入样本的大小。

  • out_features – 每个输出样本的大小。

  • bias – 如果设置为False,该层将不会学习附加偏差。默认为:True。

shape:
  • Input:(#,IN),其中#表示表示任意大小的维度。IN表示in_features

  • Outout:(#,OUT),其中除了最后一个OUT外,其余的维度都和输入的shape相同,OUT表示out_features

torch.randn(128, 20):生成128组,20维的数据

torch.nn.Conv2d()函数详解

参数详解

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

参数dilation——扩张卷积(也叫空洞卷积)

dilation操作动图演示如下:

Dilated Convolution with a 3 x 3 kernel and dilation rate 2

扩张卷积核为3×3,扩张率为2

池化层:

1. 池化层理解

池化层夹在连续的卷积层中间, 用于压缩数据和参数的量。

简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。

2. 池化层的作用:

个人觉得主要是两个作用:

invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)

保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力

A: 特征不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。

B. 特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用

3. 函数解析 nn.max_pool(value, ksize, strides, padding, name=None)

参数是四个,和卷积很类似:

第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape

第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1

第三个参数strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]

第四个参数padding:和卷积类似,可以取’VALID’ 或者’SAME’

返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式

nn.BatchNorm2d——批量标准化操作

torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None)

功能:对输入的四维数组进行批量标准化处理

输入:

num_features:输入图像的通道数量-C。

eps:稳定系数,防止分母出现0。

momentum:BatchNorm2d里面存储均值(running_mean)和方差(running_var)更新时的参数。

为BatchNorm2d里面的均值(running_mean)和方差(running_var),为当前观测值(样本)的均值或方差,为更新后的均值或方差(最后需要重新存储到BatchNorm2d中),momentum为更新参数。

affine:代表gamma,beta是否可学。如果设为True,代表两个参数是通过学习得到的;如果设为False,代表两个参数是固定值,默认情况下,gamma是1,beta是0。

track_running_stats:BatchNorm2d中存储的的均值和方差是否需要更新,若为True,表示需要更新;反之不需要更新。更新公式参考momentum参数介绍 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyTorch是一个基于Python的开源深度学习框架,它提供了丰富的工具和库,用于构建和训练神经网络模型。以下是PyTorch深度学习的一些重要特点和组成部分: 1. 张量(Tensor):PyTorch使用张量作为数据的基本单位,类似于NumPy的多维数组。张量可以在CPU和GPU上进行计算,并且支持自动求导。 2. 动态计算图:PyTorch使用动态计算图来跟踪和优化神经网络模型的计算过程。这意味着你可以在运行时改变计算图的结构,使得模型的构建更加灵活。 3. 自动求导:PyTorch提供了自动求导的功能,可以根据输入和输出自动计算梯度。这使得反向传播算法可以自动计算模型参数的梯度,从而进行模型的优化。 4. 模型构建:PyTorch提供了丰富的模型构建工具,包括各种层(如全连接层、卷积层、循环神经网络等)、激活函数、损失函数等。你可以使用这些工具来构建各种类型的神经网络模型。 5. 训练与推理:PyTorch提供了灵活的训练和推理接口,可以方便地进行模型的训练和预测。你可以使用内置的优化器(如SGD、Adam等)来优化模型参数,并使用训练数据进行模型的训练。然后,你可以使用训练好的模型进行推理,得到预测结果。 6. 生态系统:PyTorch拥有庞大的生态系统,有大量的社区贡献和第三方库支持。你可以使用这些库来扩展PyTorch的功能,例如图像处理、自然语言处理等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值