
特征图的大小:(N-F)/stride+1(未加padding)
(N+padding*2-F)/stride+1 n是输入的小,f是卷积核/感受野的大小
Pooling:
Pooling的类型:

AlexNet创新点:
C1,C2 : 卷积 - ReLu - 池化
C3,C4 : 卷积 - ReLu
C5 : 卷积 - ReLu - 池化
F1,F2 : 全连接 - ReLu - Dropout
F3 : 全连接 - SoftMax
后边使用了大量的全连接,所以参数数量非常的大。

VGG的优点:

GoogleNet的创新点:

残差的思想: 去掉相同的主体部分,从而突出微小的变化。



| 全连接网络 | 卷积神经网络 |
|---|---|
![]() | ![]() |
| 从打乱像素顺序的实验结果来看,全连接网络的性能基本上没有发生变化,但是 卷积神经网络的性能明显下降。 |
这是因为对于卷积神经网络,会利用像素的局部关系,但是打乱顺序以后,这些像素间的关系将无法得到利用。

预测结果和实际情况存在冲突,说明效果一般。


VGG16运行中碰到问题

将cfg改变self.cfg解决问题

根据错误提示改成512即可
1、dataloader 里面 shuffle 取不同值有什么区别?
DataLoader中的shuffer=False表示不打乱数据的顺序,然后以batch为单位从头到尾按顺序取用数据。shuffer=Ture表示在每一次epoch中都打乱所有数据的顺序,然后以batch为单位从头到尾按顺序取用数据。
2、transform 里,取了不同值,这个有什么区别?
3、epoch 和 batch 的区别?
Epoch : 使用训练集的全部数据对模型进行了一次完整的训练,被称为一代训练
Batch : 使用训练集的一小部分样本对模型权重进行一次反向传播的参数更新,这一小部分样本被称为 一批数据
4、1x1的卷积和 FC 有什么区别?主要起什么作用?
1×1卷积核是对输入的每一个特征图进行线性组合,而全连接层是对输入的每一个数进行线性组合。
1*1卷积主要是起到了降维、加入非线性、channal 的变换的作用
全连接层就是将最后一层卷积得到的特征图(矩阵)展开成一维向量,并为分类器提供输入。
5、residual leanring 为什么能够提升准确率?
有效的避免了梯度消失和梯度爆炸,可以使得网络模型更深
6、代码练习二里,网络和1989年 Lecun 提出的 LeNet 有什么区别?

class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
| 代码二 | LeNet |
|---|---|
| 三通道 | 单通道 |
| ReLu激活函数 | sigmoid激活函数 |
| 最大池化 | 平均池化 |
7、代码练习二里,卷积以后feature map 尺寸会变小,如何应用 Residual Learning?
添加一个1*1的卷积核 进行调整
8、有什么方法可以进一步提升准确率?
增加数据集的大小
修改网络结构模型
增加训练的轮数
使用不同的激活函数,交叉熵函数