系统学习《动手学深度学习》点击下面这个链接,有全目录哦~
https://blog.csdn.net/Shine_rise/article/details/104754764
本篇目录
1 卷积神经网络
1.1 tensor.item()函数
item()
, 它可以将一个标量Tensor
转换成一个Python number:
x = torch.randn(1)
print(x)
print(x.item())
输出:
tensor([2.3466])
2.3466382026672363
2 经典CNN网络的比较
2.1 LeNet
LeNet:
- 在大的真实数据集上的表现并不尽如人意。
2.2 AlexNet
AlexNet:
-
首次证明了学习到的特征可以超越手工设计的特征,从而一举打破计算机视觉研究的前状。
-
并未提供简单的规则来指导后面的研究者如何设计新的网络,结构相对比较死板,无法把模型复杂化或者简单化
特征:
- 8层变换,其中有5层卷积和2层全连接隐藏层,以及1个全连接输出层。
- 将sigmoid激活函数改成了更加简单的ReLU激活函数。
- 用Dropout来控制全连接层的模型复杂度。
- 引入数据增强,如翻转、裁剪和颜色变化,从而进一步扩大数据集来缓解过拟合。
2.3 VGG
VGG:
- 通过重复使用简单的基础块来构建深度模型。可以将模型复杂化或者简单化
- 数个相同的填充为1、窗口形状为3×3的卷积层,接上一个步幅为2、窗口形状为2×2的最大池化层。
卷积层保持输入的高和宽不变,而池化层则对其减半。
2.4 NiN(Network in Network)
LeNet、AlexNet和VGG:
- 先以由卷积层构成的模块充分抽取 空间特征,再以由全连接层构成的模块来输出分类结果。
NiN:
- 串联多个由卷积层和“全连接”层构成的小网络来构建多个深层网络。
- NiN去除了容易造成过拟合的全连接输出层,而是将其替换成输出通道数等于标签类别数 的NiN块和全局平均池化层。
- 使用了输出通道数等于标签类别数的NiN块,然后使用全局平均池化层对每个通道中所有元素求平均并直接用于分类。
1×1卷积核作用:
- 放缩通道数:通过控制卷积核的数量达到通道数的放缩。
- 增加非线性。1×1卷积核的卷积过程相当于全连接层的计算过程,并且还加入了非线性激活函数,从而可以增加网络的非线性。
- 计算参数少
2.5 GoogleNet
GoogleNet:
-
由Inception基础块组成。
-
Inception块相当于一个有4条线路的网络。它通过不同窗口形状的卷积层和最大池化层来并行抽取信息,并使用1×1卷积层减少通道数从而降低模型复杂度。
-
可以自定义的超参数是每个层的输出通道数,我们以此来控制模型复杂度。