一、处理图像时,卷积神经网络相比MLP的优势有哪些?
1、MLP需要把图像转成向量作为输入,而CNN把矩阵作为输入。MLP将图片转成向量的过程中,丢失了二维信息(空间信息或位置信息)
2、CNN的参数较少,不容易过拟合。MLP使用了全连接(导致有很多参数),CNN使用更加稀疏互联的层级,接受的是二维矩阵输入,保持了图像的二维信息。
二、请解释卷积、卷积层深度、过滤器、过滤器步长、过滤器大小、填充、池化的概念
-卷积是指原始像素点与卷积核作用后输出最终结果的过程
-卷积层的深度是指卷积核的个数
-过滤器,也就是卷积核,就是一些值网格,通过和原始图像运算修改原始图像。网格里面的值表示周围像素点和核心像素点的权值。
-过滤器步长是指过滤器在图像上滑动的距离
-过滤器大小就是网格的大小,比如3×3
-填充是指在图像周围添加像素边界
-池化输出的是邻近区域的概括统计量,一般是矩形区域。 卷积也会产生平移不变性,注意区分,卷积对输入平移是不变的,池化对特征平移是不变的。
三、设置一个发现水平边缘的卷积核
权值和为0
四、既然卷积核要对图像的每个像素都进行运算,为什么说卷积神经网络的连接是稀疏的?
稀疏交互是指卷积网络最后的全连接层与输入层之间的“间接连接”是非全连接的,多次卷积可以找出一种合理的连接,使输入图片分成各种“小区域”,这种小区域再成为全连接层的输入。输入层进入全连接的第一层的元素会少很多,全连接层的参数会少很多
密集层时完全连接的,节点与前一层的所有节点相连,卷积层是局部相连的,节点仅与上一层中的一部分节点相连。
五、为什么要引入池化?有哪些池化操作?
pooling层(池化层)的输入一般来源于上一个卷积层,主要有以下几个作用:
1、保留主要的特征,同时减少下一层的参数和计算量,防止过拟合;
2、保持某种不变性,包括translation(平移),rotation(旋转),scale(尺度),常用的有mean-pooling和max-pooling。
池化有最大池化、平均池化、滑动平均池化、L2范数池化等。
池化的目的:降低维度,减少网络参数,防止过拟合。
平均池化,最大池化:最大池化更适合发现图像边缘等重要特征,而平均池化更适合平滑图像这种应用。
六、什么是胶囊网络?它相比池化的优势是什么?
胶囊网络能够从图像中检测出对象的各个部分,并表示这些部分之间的空间关系。如果对象(例如人脸)具有不同的形态和典型数量的特征(眼睛、鼻子、嘴),胶囊网络便能够识别同一对象,即使没有在训练数据里见过这些形态。胶囊网络由父节点和子节点组成,这些节点构成了对象的完整样貌。
胶囊实际上是节点集合,每个节点都包含关于特定部分的信息,例如宽度、方向、颜色等特性。注意,每个胶囊都输出一个向量,该向量由大小和方向组成。
大小 (m) = 某个部分存在的概率;值在 0 到 1 之间。
方向 (theta) = 某个部分的状态。
七、解释torch.nn.MaxPool2d(2,4)
的含义
池化层的参数是核大小和步长。
最大池化窗口大小2,步长为4
八、解释torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0)
各参数的含义
in_channels:输入图片的深度
out_channels:卷积层的深度
kernel_size:卷积核的大小
stride=1:卷积核的步长为1
padding=0:边缘填充为0
九、一个卷积层的参数个数是如何计算的?
KFFD_in + K K个卷积核,FF大小,D_in代表深度
十、一个卷积层的宽度是如何计算的?
(W_in−F+2P)/S+1
十一、假设卷积神经网络的输入层深度为2,输出层深度为3。画图说明该CNN的神经元是如何连接和计算的?
https://blog.csdn.net/qq_15192373/article/details/78536107
十二、为什么CNN在构建网络时,每层的深度要逐渐增加? (D)
加入更多隐含层学习输入图像的抽象特征,网络越来越深时,图像深度的增加会提取越来越复杂的图像和特征,帮助我们识别图像中的内容和对象,并且会舍弃一些空间特征信息,例如平滑的背景等,这些信息对于识别图像没有帮助。
十三、将网络层数提升到100多层需要克服什么困难?微软的ResNet随着网络深度的增加,网络的性能不升反降,部分原因是梯度消失的问题。
但是直接让一些层去拟合一个潜在的恒等映射函数H(x) = x,比较困难,这可能就是深层网络难以训练的原因。但是,如果把网络设计为H(x) = F(x) + x,如下图。我们可以转换为学习一个残差函数F(x) = H(x) - x. 只要F(x)=0,就构成了一个恒等映射H(x) = x. 而且,拟合残差肯定更加容易。
十四、将网络的权值全部初始化为0有什么问题?全部初始化为1呢?
全部初始化为0,权重都是相同的!然后不管进行多少轮正向传播以及反向传播,每俩层之间的参数都是一样的。
换句话说,本来我们希望不同的结点学习到不同的参数,但是由于参数相同以及输出值都一样,不同的结点根本无法学到不同的特征!这样就失去了网络学习特征的意义了。
初始化为1同初始化为0。
反向传播不同用常亮初始化,因为反向传播不能解决一致性的情况。
0:计算交叉熵损失,使用反向传播确定误差来源时,无法确定是哪个节点导致错误的,因为隐藏层权重都为0,以至于所有节点的梯度都一样
1:有时也会出现全为0的情况,输入像素值需要在隐藏节点乘以1并求和,当输入在MLP层级中向前移动时,隐藏层的计算结果也一样,无法确定哪一个是错误来源
PS:反向传播不能处理权重一致的情况
十五、torch默认的权值初始化方法是什么?视频认为通常效果比较好的权值初始化方法是什么?
默认:均匀分布采样
效果好的:正态分布采样
这些数字是从概率分布中抽样的数字,获得随机权重的最好方法是从均匀分布中抽样,均匀分布使我们能以同等概率从某个范围中挑选任何数字。
一般法则是将权重设置为接近0,但是不能太小,-y到y,其中y=1/sqrt(n),以0为中心
十六、自编码器有什么功能?在结构上有什么特点?
降维和去燥。自编码器通常用于压缩数据 。
自编码能将图像压缩为一组向量,可以去噪或者压缩图像。
结构特点:对称,沙漏
自编码器包含编码器和解码器,通常不同通用,需要针对不同的数据集进行训练。编码器和解码器都是有神经网络构成的。
十七、在解码过程中使用的upsample的原理是什么?为什么不使用deconvolution操作?*
视频中解码器使用上采样加卷积层的方式。
图像生成网络的上采样部分通常用反卷积网络,不合理的卷积核大小和步长会使反卷积操作产生棋盘效应 (checkerboard artifacts). 直观地看,假设生成的图像中包含1只黑猫。黑猫身体部分的像素颜色应平滑过渡,或极端地说,该部分应全为黑色。实际生成的图像中该部分却有深深浅浅的近黑方块组成,很像棋盘的网格,即棋盘效应。
上采样:图像放大几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素。邻近插值,双线性插值