
回顾第三节最重要的是掌握linear改变维度的作用。图片分类图片作为输入矩阵分类作为输出向量类似于独热编码分类回归是做预测值是连续变化的。分类是做区分只有 是or否 两种状态。不能用linear(?, 1)来做分类的输出因为即使值相近也不能说明这两个类别是相似的。可以用linear(?, a)输出表示分类输出一个向量独热编码。a表示类别个数0,1,0代表是第2类的概率是1是第1、3类的概率是0。图片处理一张图片都默认/拉伸为长*宽224*224。通过模型后求出预测值y尖。求出预测值y尖向量后同样和y求loss并梯度回传更新模型即可。假设将矩阵拉直用linear(130000, 3)。有点过于简单。且若多加几层linear会使运算量很大。卷积神经网络使用卷积核去与特征图一块块相乘。判断图片类别不需要看整张图取一部分有效的特征块作为卷积核即可。找有用/有代表性的卷积核也很重要。类似于回归中的参数寻找CchannelW宽H高一次卷积的计算内有273*3*3次乘法。卷积操作后图片会变小使用zero-padding让图片尺寸不变卷积核变大则可以“看”更大的区域维度变化3*224*224的特征图一轮3*3*3的卷积得到1*222*2225个不同卷积核卷出来的值拼在一起则得到5*222*222的特征图。原始特征图深度要和卷积核深度保持一致新特征图的深度就是卷积核的个数。一个卷积层是从一个特征图变成另一个特征图的这一个过程就是一个卷积层。卷积核参数量计算重要输入的特征图是x不是参数通过一个卷积层的的特征图是中间值x’也不是参数卷积核才是参数θ。省略偏置b因为太小太少了手算卷积神经网络忽略b不带深度答特征图4 - 2 1 33*3卷积核参数量2*2 4答4 - 3 1 2特征图2*2。答4 1 * 2 - 3 1 4特征图4*4答100 - 3 1 98特征图98*98从1开始卷卷到98之后99卷不动了不能组成3*3的了答100 1 * 2 - 3 1 100特征图100*100答8 - 7 1 2特征图2*2卷积核参数量7*7 49答100 - 7 1 94特征图94*94公式O I - K 2P 1O - outputI - InputK: 卷积和大小P: padding。带深度答100 - padding*2 - 7 1 100padding 3答224 2*2 - 5 1 228 - 4 224答 4 1 * 2 - x 1 4x3卷积核3*3*3参数量27答4 1 * 2 - 3 1 4特征图7*4*4答224 1 * 2 - 3 1 224特征图64*224*224答x为64224 1*2 - 31 224特征图128*224*224卷积核参数量128*64*3*3特征图怎么变小如果使用padding后特征图大小一直不变那卷积之后的参数只会越来越多。直接去掉一半的参数不会影响原来的图像。降采样。方法1扩大步长改变卷积步长卷一下走2步。缺点会丢失信息且引入计算方法二池化pooling最大池化更好计算简单。AdaptiveAvgPool适应性池化无论原先的特征图多大都pool成7*7的。一次卷积不好类似上节课的一次linear不好。常用办法卷积使深度加深池化使大小减半。同时使用。只要训练效果好的就是好办法从卷积到全连接卷积结束后的处理卷完后flatten拉直再几次linear得到长度为3的向量。最大的值就是类别。得到的向量变成概率值与标签值y尖的概率值对应。softmax函数分类用交叉熵损失CrossEntropyLoss求loss。对于二分类假设标签值y尖为1则后面公式可以直接去掉。要想Loss小右边有负号则要负号之后的值大而y尖为1则要logy大即要y尽量大。y作为概率最大值是1。故y尖是1时Loss越小y值越接近1。故y可以接近真实标签y尖。假设标签值y尖为0则公式变成L -log(1-y) 要loss小则负号后的数字要大y的值就要小故y值接近0。对于多分类让每个标签的标签值乘以这个标签的概率值希望标签1的概率值更大举例基本的分类神经网络流程经典图片数据集图片分类网络发展历史top5的正确率例如在100种分类中预测5种只要这5种中包含真实类别即为预测成功。经典神经网络AlexNetdrop out丢弃在模型前向时丢弃一部分神经元在测试时再打开用剩余的神经元进行计算。用少量的神经元都可以达到效果在一定程度上可以缓解过拟合。归一化减去均值除以标准差。用于防止量纲不同导致计算数据有问题。使模型更加关注数据的分布相对大小。特征归一化对每一列数据进行归一化。批归一化模型运行到中间时对一批数据进行归一化。AlexNet模型的训练流程偏置64未加到参数中注意这里手写的输入/输入特征图数量就是特征图的通道数也就是3*224*224中的第一个参数3这个数字要与第一个Conv2d(3,64,11,4,2)的第一个参数3保持一致。他们俩是一个东西。这里特征图的变化维度(224-112*2)/41(2134)/41217/4154155。卷积核64个即第一个Conv2d的第2个参数64所以特征图为64*55*55。x x.view(x.size()[0], -1) # 保持batch不变剩下的全部放在第2维 # 16 * 256*6*6 -- 16 * 9216Vgg模型更深、更大。用2个3*3的卷积核代替5*5的卷积核参数量更少了。写出VGG13的特征图维度变化、模型参数量后3个全是3*1*1与代码myVGG.py比较。每个都是双卷积1pool重复的内容可以模块化实现。ResNet由于发现模型越深效果越差于是使用1乘1卷积和残差连接进行优化。①残差连接将输入加到输出上。解决了梯度消失的问题。梯度消失在梯度回传过程中若每个梯度都小于1由于维度太深例如0.9的10000次方是趋于0的数则会导致w趋于0导致梯度消失。梯度爆炸每个梯度大于1最后算出的w会很大。resNet加上输入x后导数会加1如果梯度消失加1后则不是0。Relu也有缓解梯度消失的作用。sigmoid函数在数量很大的地方导数趋于0有严重的梯度消失问题。②1乘1卷积卷积核大小只有1*1只改变了特征图的深度降维。好处减少参数量。其他卷积展平后与全连接差不多。只是全连接中间的参数w不同而卷积是相同的。卷积参数共享的不全连接。显著减少参数量。图像分类流程卷积、展平、全连接、分类结果、求loss、回传、更新参数。最后一个全连接之前的向量一般称为 模型提取的特征。