前言:大半个月没跟新了…视频还有在看的,但进度有点感人,回家摆烂了十多天,仔细想了一下之后要走哪些路,做了一些简单的规划,感觉考研的性价比应该是最高的。但其实自己对算法什么的好像并没有什么多大的兴趣,更关注的是应用本身,而不是偏向于算法理论类的地方,同时也学了一下Mysql,给自己多点选择.
本章摘要: 传统的机器学习更加关注的是特征工程方面,即人为的寻求一个良好的特征函数,做好特征提取,再把提取过后的数据传到模型里,得到结果。
而深度学习则认为,特征函数也是可以学习的,中间的隐藏层就是特征函数求取。计算机视觉研究人员相信,从对最终模型精度的影响来说,更大或更干净的数据集、或是稍微改进的特征提取,比任何学习算法带来的进步要大得多。(不是,我很难不认同这个观点)
推进深度学习的方面有两个原因,一个是数据集的变大(image net),还有一个是硬件的提升(gpu)。
AlexNet的架构与LeNet相似,但使用了更多的卷积层和更多的参数来拟合大规模的ImageNet数据集。
今天,AlexNet已经被更有效的架构所超越,但它是从浅层网络到深层网络的关键一步。
尽管AlexNet的代码只比LeNet多出几行,但学术界花了很多年才接受深度学习这一概念,并应用其出色的实验结果。这也是由于缺乏有效的计算工具。
Dropout、ReLU和预处理是提升计算机视觉任务性能的其他关键步骤
作业:
在AlexNet中主要是第一层全连接层占用显存
在AlexNet中主要是第一层卷积层占计算
函数记录:
layer.__class__.__name__
##获取层名字
经典卷积神经网络的基本组成部分是下面的这个序列:
带填充以保持分辨率的卷积层;
非线性激活函数,如ReLU;
汇聚层,如最大汇聚层。
优点是 能学习的参数多,特征多。
缺点是全连接层有3层,占用内存大。
作业:
函数记录:
``
结合alexnet和vgg,全部改用卷积层。
优点是模型参数少,占用内存小。
缺点是计算量大。
作业:
函数记录:
``
googlenet结合了之前的模型特点,也使用了块的结构。
Inception块相当于一个有4条路径的子网络。它通过不同窗口形状的卷积层和最大汇聚层来并行抽取信息,并使用 1×1 卷积层减少每像素级别上的通道维数从而降低模型复杂度。
GoogLeNet将多个设计精细的Inception块与其他层(卷积层、全连接层)串联起来。其中Inception块的通道数分配之比是在ImageNet数据集上通过大量的实验得来的。
GoogLeNet和它的后继者们一度是ImageNet上最有效的模型之一:它以较低的计算复杂度提供了类似的测试精度。
作业:
函数记录:
``
在训练时对每层数据做标准化处理,同时每层都有独立的学习参数。还有一个整体的移动平均和移动方差用来预测。
在模型训练过程中,批量规范化利用小批量的均值和标准差,不断调整神经网络的中间输出,使整个神经网络各层的中间输出值更加稳定。
批量规范化在全连接层和卷积层的使用略有不同。
批量规范化层和暂退层一样,在训练模式和预测模式下计算不同。
批量规范化有许多有益的副作用,主要是正则化。另一方面,”减少内部协变量偏移“的原始动机似乎不是一个有效的解释。
作业:
函数记录:
net[1].gamma
##可以直接访问参数
nn.BatchNorm2d(6)
##传入的是通道数,用来规范化
学习嵌套函数(nested function)是训练神经网络的理想情况。在深层神经网络中,学习另一层作为恒等映射(identity function)较容易(尽管这是一个极端情况)。
残差映射可以更容易地学习同一函数,例如将权重层中的参数近似为零。
利用残差块(residual blocks)可以训练出一个有效的深层神经网络:输入可以通过层间的残余连接更快地向前传播。
残差网络(ResNet)对随后的深层神经网络设计产生了深远影响。
作业:
函数记录:
nn.AdaptiveAvgPool2d((1,1)
全局平均汇聚层
与resnet不同的是,densenet是把每次卷积的结果都会相加,类似于泰勒展开式那样子。
在跨层连接上,不同于ResNet中将输入与输出相加,稠密连接网络(DenseNet)在通道维上连结输入与输出。
DenseNet的主要构建模块是稠密块和过渡层。
在构建DenseNet时,我们需要通过添加过渡层来控制网络的维数,从而再次减少通道的数量。
作业:
有个bottleneck还没了解过
函数记录:
``