安装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)
![](https://i-blog.csdnimg.cn/blog_migrate/666c6e15ab3e3ef9aada837da502f91d.png)
参数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参数介绍 。