深度学习——图像分类(四)

梯度下降与反向传播

1 . 反向传播

a. 计算图

i:  把数据和操作通过图来表示

2. pytorch完成线性回归

    a. tensor(data,requird_grad=Ture)

          i:  该tensor后续会被计算梯度

          ii:tensor所以的操作都会被记录在grad_fn

   b. with torch.no_grad():

         I:其中的操作不会被跟踪

   c. 反向传播: output.backward()

  d. 获取梯度:x.grad, 累加梯度

         I: 所以:  每次反向传播之前需要先把梯度置为0之后

Pytorch--常用API_小人物CM的博客-CSDN博客

model = Lr()                    #1.实例模型
criterion = nn.MSELoss()                    #2. 实例化损失函数
optimizer = optim.SGD(model.parameters(),lr=1e-3)           #3.实例化优化器类
for i in range(100):
    y_predict = model(x_true)          # 4. 向前计算预测值
    loss = criterion(y_true,y_predict)        #5. 调用损失函数传入真实值和预测值,得到损失结果
    optimizer.zerograd()                    #6.  当前循环参数梯度置为0
    loss.backward()               #7.  计算梯度
    optimizer.step()                              #8.       更新参数的值

bp神经网络: 反向传播

卷积  :滑动窗口(算法)   #  特性:1.局部感知机制    2.  权值共享

引用激活函数的原因:在计算过程中,它是一个线性计算过程,为引入非线性因素,使其具备解决非线性问题的能力。

缺点:

1. Sigmoid激活函数:

           饱和时梯度值非常小,故网络层数较深时容易出现梯度消失。

2. Relu激活函数:

           当反向传播过程中有一个非常大的梯度经过时,反向传播更新后可能导致权重分布中心小于零,导致该处的倒数始终为0,反向传播无法更新权重,即进入失活状态。

池化层的目的:对特征图进行稀疏处理,减少数据运算量。

            #特点:1. 没有训练参数

                          2.只改变特征矩阵的W和H,不改变channel

                          3.一般poolsize和 stride相同

注:1. 在计算多类损失过程中,在最后一层激活函数统一用 softmax 激活函数

        2. 使用几个卷积核就会生成深度为多少维的特征矩阵

        3. stride         #  布局

经卷积后的矩阵尺寸大小计算公式为:

   N= (W-F+2P)/S+1

1.输出图片的大小W*W

2.Filter大小F*F

3.步长S

4.P:padding的像素数

self.conv1=nn. Conv2d(a,b,c)           #a=输入特征层的深度,b=卷积核数,c=卷积核尺度

self.pool1= nn.MaxPool2d(a,b)          #a=池化核大小,    b=步距

self.fc1= nn. Linear(a,b)                      #a=第一层节点,    b= 第二层节点

注:一般特征图的长宽减半后,通道数要加倍

Pytorch  Tensor 的通道排序 : [ batch, channel , height, width]

下载训练集:

trainset = torchvision.datasets.CIFAR10(root=', train=Ture, download=True, transform=transform)

标准化是: output=(input-0.5)/0.5

反标准化是: input=output*0.5+0.5

计算一个batch , 就需要调用一次optimizer.zero_grad()

              #如果不清除历史梯度,就会对计算的历史梯度进行累加(通过这个特性你能够变相实现一个很大batch数值的训练)​​​​​​​

你可能感兴趣的:(深度学习,分类,python)