卷积神经网络Q&A
-
Q1:传统的神经网络和卷积神经有什么区别,针对数据的差异解释一下?
A:传统的结构化数据是把数据当成独立的数据处理的,而对于图像的
-
Q2:为什么卷积神经网络多用3*3的卷积核?
可以得到更多的特征,两个3*3的还能等效于5*5的卷积核,可以用来减少参数数量,加快训练过程(VGG模型14年告诉我们的)
-
Q3:填充(padding)的主要目的又是为了什么?
如果不加填充的话,那么边缘像素只会被计算一次,导致边缘采样不是很完全
-
Q4:卷积核个数N、卷积核尺寸
、步长Stride、以及填充padding得到的下一层输入公式是什么?假设原先图像是
-
Q5:同一层为什么需要多个卷积核呢?
目的是从多种角度去学习特征,好比是小学看立方体堆积从正面、上面以及侧面观察立方体一样,最后输入到全连接层,你需要那个自己学习权重自己取用
-
Q6:池化层的作用是干嘛呢?
池化实际是下采样的一种方式,池化层的作用是用于压缩特征,类似于高像素图片压缩成低像素图片一样
-
Q7:为什么会采用最大池化MAXPOOLING 或者 AVG POOLING
约定俗成会发现:好的特征会在学习迭代过程中越学习越好
好比你们班的同学越学越好就可以代表你们班
平均池化一般用于全局特征 -
Q7:为什么需要卷积?
最重要的是去获取深层特征,随着深度增加,会从局部特征逐渐提取到全局特征,代价是深度意味着时间
Q8:经典网络模型ALEXNET
-
Q9:经典网络模型VGG
实验正面随着maxpooling 损失了特征,那就使用加倍的卷积核,使之翻倍。(多次pooling下来剩下的都是精华,翻倍是使得精锐翻倍)
Q10:经典网络模型Resnet,它解决了随着深度增加,训练误差增加的问题。(源码分析第五期医学训练)
[
resnet.jpeg
]
通俗易懂的就是 打游戏BOSS前需要存档备份
x就是前面的备份 F是打boss函数,接受一个存档备份x的参数 (实际上x是第19层训练的结果,对比来看)
最后结果H(x)不会比x差,破罐子破摔,至少不必原来差
最终加x效果比加其他0.5x这种的要好
改进:yolo V7里面进行分支合并,分支越多速度越慢。推理的时候可以,但是训练的时候免不了
- Q11:感受野,即原始区域中的一个点对应原来图像的一块区域,这个区域叫做感受野。用于证明多个小卷积可以组成一个大的卷积。所以为什么要使用感受野,为什么要堆叠小卷积?
A:感受野越大越好,看到的信息更多。一方面是,参数少;另一方面,小卷积,卷积过程多,特征提取越来越细致,速度快(英伟达底层优化),非线性变化增多可以拟合跟复杂的模型。之所以增加非线性,在于每层卷积下都会有线性整流函数 - 激活函数的作用不仅仅是增加非线性,同时也是筛选
- 池化是下采样的一种方式,下采样是指特征浓缩变少,上采样是指特征翻倍,常用的上采样有反卷积在U-net网络模型中介绍
- 11的卷积有通道调整的功能*
- BN层的作用,是标准化,让特征分布更加稳定(坑+1)
- NLP、OCR本质就是分类问题
y_label.data.view_as(output) 返回保证维度相同
卷积的写法conv2d(in_channel, out_channel= , kernel_size =, stride = , padding)
a[(1, 2), (2, 3) ,(3, 4)]
[tup[1] for i in a]
[tup[0]]
b[(1, 3, 4, 4), (2, 4, 5, 6)]
for a in b[1]
for a, b in zip(* b)
存放acc的计算,如何进行
对每个batch返回一个losses=[]
dataloader的使用方法:
batch_idx,(x, y) in enumerate(dataloader):
如果你想对某个东西做输出 就可以用着个
(x, y) in dataloader