网站网站平台建设方案,网址域名是什么,企业邮箱入口登录,qq群排名优化软件官网1.depthwise卷积Pointwise卷积 depthwise与pointwise卷积又被称为Depthwise Separable Convolution#xff0c;与常规卷积不同的是此卷积极大地减少了参数数量#xff0c;同时保持了模型地精度#xff0c;depthwise操作是先进行二维平面上地操作#xff0c;然后利…1.depthwise卷积Pointwise卷积 depthwise与pointwise卷积又被称为Depthwise Separable Convolution与常规卷积不同的是此卷积极大地减少了参数数量同时保持了模型地精度depthwise操作是先进行二维平面上地操作然后利用pointwise进行维度上的更新。
2. 1*1的卷积核有什么作用 实现不同通道数据之间的计算降维、升维、跨通道交互、增加非线性大大减少了参数量其次增加的1X1卷积后面也会跟着有非线性激励这样同时也能够提升网络的表达能力 意义实现了不同通道同一位置的信息融合可以实现通道数的降维或升维
3. 反卷积相比其他上采样层的缺点棋盘格现象怎么产生的 上采样可以扩大输入图像的尺寸将一个小分辨率的图像扩展成一个高分辨率的图像。在YOLOv4模型中上采样被加入卷积网络中作为中间层使用扩展特征图尺寸便于张量拼接上采样常用的方法有双线性插值法反卷积也称转置卷积法和上池化法。 正向卷积 反向卷积 在上采样使用反卷积的时候卷积核的大小不能被步长整除导致的。处理方法多层反卷积反卷积后面接个步长为1的卷积调整kernel权重分布采取可以被stride整除的kernel size调整图像大小使用最近邻插值或双线性插值然后执行卷积操作。
4.3D卷积和2D卷积的区别主要存在问题如何加速运算视频理解的sota方法还有什么方向可以改进 2D卷积可以分为单通道卷积和多通道卷积 3D卷积由于Convolution Filter只能在高度和宽度方向上移动因此仍被称为2D卷积一个Filter和一张图像卷积只能生成一个通道的输出数据。 3D卷积使用的数据和2D卷积最大的不同就在于数据的时序性。3D卷积中的数据通常是视频的多个帧或者是一张医学图像的多个分割图像堆叠在一起这样每帧图像之间就有时间或者空间上的联系
5.卷积核大小如何选取
6.卷积层减少参数的方法使用13,31代替3*3的原理是什么 非对称卷积通常用于逼近现有的正方形卷积以进行模型压缩和加速可以将标准的dd卷积分解1d为和d*1卷积以减少参数量。其背后的理论相当简单如果二维卷积核的秩为1则运算可等价地转换为一系列一维卷积。然而由于深度网络中下学习到的核具有分布特征值其内在秩比实际中的高因此直接将变换应用于核会导致显著的信息损失。
7.设计一个在CNN卷积核上做dropout的方式
8.反卷积转置卷积的实现原理
9.Dropout的原理 Dropout说的简单一点就是我们在前向传播的时候让某个神经元的激活值以一定的概率p停止工作这样可以使模型泛化性更强因为它不会太依赖某些局部的特征。相同点都有正则化的效果。二者的机制是有差别的。过拟合的原因就是使用了对问题而言过于复杂的表述所以缓解过拟合的基本方法就是降低对问题表述的复杂度。
不同点BN实现这一点的机制是尽量在一个更平滑的解子空间中寻找问题的解强调的是处理问题的过程的平滑性隐含的思路是更平滑的解的泛化能力更好Dropout是强调的鲁棒性即要求解对网络配置的扰动不敏感隐含思路是更鲁棒的解泛化能力更好。从这个机制看Dropout对过拟合的控制机制实际上更直接更表面化更简单粗暴而BN则要间接一点但是更底层更本质。但是二者的机制有差别又有重叠平滑和鲁棒二者常常是一致的但又不完全一致不能简单说哪个效果更好但从机制上看BN的思想在统计上似乎应该更好一点但是由于BN用于约束平滑性的手段本身并不完备只是选用了一种控制模式所以并不能完全体现其控制平滑性的思想所以BN对泛化性能的实际影响也不是非常大。
10.直接转置卷积和先上采样再卷积的区别
上采样过程(使用插值的方法)。如果后面拼接一个卷积其感受野大小基本保持不变。如果是多个卷积其感受野还是会增大。 2. 上采样过程中复制的点也具有和原始特征点相同的感受野。也就是本层中的两个完全相同的特征点的感受野等价于上一层的一个特征点的感受野。直接转置卷积的感受野相同。反卷积: 一维- 多维立方 -重叠融合上采样卷积: 一维变 多维 变一维。
11.maxpooling怎么传递导数
12.CNN里面池化的作用 平均池化倾向于保留突出背景特征 最大池化倾向于保留突出纹理特征 卷积的作用就是为了提取某些指定的特征而池化就是为了进一步抽取更高阶的特征。通过池化操作忽略一些细节信息强行让CNN学到的更多我们想要的高阶信息。
13.反向传播的时候怎么传递pooling的导数 max pooling: 下一层的梯度会原封不动地传到上一层最大值所在位置的神经元其他位置的梯度为0 average pooling: 下一层的梯度会平均地分配到上一层的对应相连区块的所有神经元。
14.卷积神经网络在maxpooling处怎么反向传播误差
15. shufflenet的结构 第一代模型主要核心为分组卷积和通道打乱第二代模型主要核心为通道分割和通道打乱。 第二代模型是在四条提速规则下对第一代模型进行调整的结果论文说在同等复杂度下shufflenet v2比shufflenet和mobilenetv2更准确。这四条准则如下G1同等通道大小最小化内存访问量 对于轻量级CNN网络常采用深度可分割卷积depthwise separable convolutions其中点卷积 pointwise convolution即1x1卷积复杂度最大。这里假定输入和输出特征的通道数分别为C1和C2经证明仅当C1C2时内存使用量(MAC)取最小值这个理论分析也通过实验得到证实。G2过量使用组卷积会增加MAC 组卷积group convolution是常用的设计组件因为它可以减少复杂度却不损失模型容量。但是这里发现分组过多会增加MAC。G3网络碎片化会降低并行度 一些网络如Inception以及Auto ML自动产生的网络NASNET-A它们倾向于采用“多路”结构即存在一个lock中很多不同的小卷积或者pooling这很容易造成网络碎片化减低模型的并行度相应速度会慢这也可以通过实验得到证明。G4不能忽略元素级操作 对于元素级element-wise operators比如ReLU和Add虽然它们的FLOPs较小但是却需要较大的MAC。这里实验发现如果将ResNet中残差单元中的ReLU和shortcut移除的话速度有20%的提升。
16. 深度网络attention怎么加
17.resnet的结构特点以及解决地问题是什么 复杂问题越深的网络往往有更好的性能然而随着网络的加深训练集的准确率反而下降可以确定这不是由于Overfit过拟合造成的(过拟合的情况训练集应该准确率很高)所以作者针对这个问题提出了一种全新的网络叫深度残差网络它允许网络尽可能的加深。 理论上对于“随着网络加深准确率下降”的问题Resnet提供了两种选择方式也就是identity mapping和residual mapping如果网络已经到达最优继续加深网络residual mapping将被push为0只剩下identity mapping这样理论上网络一直处于最优状态了网络的性能也就不会随着深度增加而降低了。 这两种结构分别针对ResNet34左图和ResNet50/101/152右图一般称整个结构为一个”building block“。其中右图又称为”bottleneck design”目的一目了然就是为了降低参数的数目。看右图输入是一个3×3×256的特征第一个步骤用64个1x1的卷积把256维channel降到64维然后在最后通过1x1卷积恢复到256个channel整体上用的参数数目1x1x256x64 3x3x64x64 1x1x64x256 69632而不使用bottleneck的话参考左图输入假设是3x3x256第一步经过256个卷积核3×3×256第二部再经过256个卷积核3×3×256。所以参数数目: 3x3x256x256x2 1179648差了16.94倍。 18. 图神经网络的理解
19.unet结构为什么要下采样上采样 下采样 1.降低显存和计算量图小了占内存也就小了运算量也少了。2.增大感受野使同样3*3的卷积能在更大的图像范围上进行特征提取。大感受野对分割任务很重要小感受野是做不了多类分割的而且分割出来的掩膜边界很粗糙3.多出几条不同程度下采样的分支可以很方便进行多尺度特征的融合。多级语义融合会让分类很准。 上采样
20.resnet v1到v2有什么改进下采样过程是什么样的跳跃链接怎么实现shape如何保持
21.fpn的结构 FPN 的结构较为简单可以概括为特征提取上采样特征融合多尺度特征输出。FPN 的输入为任意大小的图片输出为各尺度的 feature map。与 U-net 类似 FPN 的整个网络结构分为自底向上 (Bottom-Up) 和自顶向下 (Top-Down) 两个部分Bottom-Up 是特征提取过程对应 Unet 中的 Encoder 部分文中以 Resnet 作为 backboneTop-Down 将最深层的特征通过层层的上采样采样至与 Bottom-Up 输出对应的分辨率大小与之融合后输出 feature map融合方式为对应位置相加而 Unet 采用的融合方式为对应位置拼接关于两者的差异我之前在 Unet 这篇文章中提过这里就不再赘述。在下图中放大的部分中包含了 3 个步骤1. 对上层输出进行 2 倍的上采样2. 对 Bottom-Up 中与之对应的 feature map 的进行 1x1 卷积以保证特征 channels 相同3. 将上面两步的结果相加。
22.roi pooling和roi align的区别
23.resnet的理解和全连接相比有什么区别
24.简述alexnetvggresnet,densenet,googlenet alexnet: vgg: resnet: densenet: googlenet:
25.mobileNet v1,v2,shuffleNet v2,xception,denseNet
26.感受野的计算增加 感受野是卷积神经网络(CNN)每一层输出的特征图(feature map)上的像素点在原始输入图像上映射的区域大小。感受野的计算从最深层开始向浅层计算逐步计算到第一层(即上图的蓝色层开始向红色层传递计算)所以计算前要知道网络的整体结构和参数。 增加方法1.增加pooling层但是会降低准确性pooling过程中造成了信息损失2.增大卷积核的kernel size但是会增加参数 3.增加卷积层的个数但是会面临梯度消失的问题
27.为什么卷积神经网络适用于图像和视频还能用于其他领域吗 卷积网络的特点主要是卷积核参数共享池化操作。参数共享的话的话是因为像图片等结构化的数据在不同的区域可能会存在相同的特征那么就可以把卷积核作为detector每一层detect不同的特征但是同层的核是在图片的不同地方找相同的特征。然后把底层的特征组合传给后层再在后层对特征整合(一般深度网络是说不清楚后面的网络层得到了什么特征的)。而池化主要是因为在某些任务中降采样并不会影响结果。所以可以大大减少参数量另外池化后在之前同样大小的区域就可以包含更多的信息了。综上所有有这种特征的数据都可以用卷积网络来处理。
28.CNN反向传播细节怎么过全连接层池化层卷积层
29.CNN里能自然起到防止过拟合的办法 正则化是指修改学习算法使其降低泛化误差而非训练误差。常用的正则化方法根据具体的使用策略不同可分为1直接提供正则化约束的参数正则化方法如L1/L2正则化2通过工程上的技巧来实现更低泛化误差的方法如提前终止(Early stopping)和Dropout3不直接提供约束的隐式正则化方法如数据增强等。
30.CNN中感受野权值共享是什么意思 把局部连接感受野中的每一个卷积核中对应的权值进行共享就可以进一步减少网络中参数的个数即下一层每一个像素点是由上一层对应位置的N×N的局部区域图片也就是感受野与同一卷积核N×N的权值做内积加 偏置后 再 经过非线性映射 而来的至此网络训练参数的数量不再受原始输入图片大小的影响因为卷积核固定了里边的权值多少也就固定了。 把局部连接感受野中的每一个卷积核中对应的权值进行共享就可以进一步减少网络中参数的个数即下一层每一个像素点是由上一层对应位置的N×N的局部区域图片也就是感受野与同一卷积核N×N的权值做内积加 偏置后 再 经过非线性映射 而来的至此网络训练参数的数量不再受原始输入图片大小的影响因为卷积核固定了里边的权值多少也就固定了
31.BN层的作用为什么有这个作用训练和测试时有什么不同在测试时怎么使用 BN作用是收敛速率增加可以达到更好的精度。 BN层是一种数据归一化方法往往用在深度神经网络中激活层之前。其作用可以加快模型训练时的收敛速度使得模型训练过程更加稳定避免梯度爆炸或者梯度消失。并且起到一定的正则化作用几乎代替了Dropout。 归一化的目的将数据规整到统一区间减少数据的发散程度降低网络的学习难度。BN的精髓在于归一之后使用r,b作为还原参数在一定程度上保留原数据的分布。 神经网络中传递的张量数据其维度通常记为[N, H, W, C]其中N是batch_sizeH、W是行、列C是通道数。 训练时均值、方差分别是该批次内数据相应维度的均值与方差推理时均值、方差是基于所有批次的期望计算所得。
import tensorflow as tf
from tensorflow.python.training import moving_averages
def batch_normalization(input, is_training, nameBN, moving_decay0.999, eps1e-5):input_shape input.get_shape()params_shape input_shape[-1]axis list(range(len(input_shape) - 1))with tf.variable_scope(name, reusetf.AUTO_REUSE) as scope:beta tf.get_variable(beta,params_shape,initializertf.zeros_initializer)gamma tf.get_variable(gamma,params_shape,initializertf.ones_initializer)moving_mean tf.get_variable(moving_mean,params_shape,initializertf.zeros_initializer,trainableFalse)moving_var tf.get_variable(moving_var,params_shape,initializertf.ones_initializer,trainableFalse)def train():# These ops will only be preformed when training.mean, var tf.nn.moments(input, axis)update_moving_mean moving_averages.assign_moving_average(moving_mean,mean, moving_decay)update_moving_var moving_averages.assign_moving_average(moving_var, var, moving_decay)return tf.identity(mean), tf.identity(var)mean, var tf.cond(tf.equal(is_training, True), train,lambda: (moving_mean, moving_var))return tf.nn.batch_normalization(input, mean, var, beta, gamma, eps)32.BN层做预测的时候方差均值怎么算online learning的时候怎么算 训练时均值、方差分别是该批次内数据相应维度的均值与方差推理时均值、方差是基于所有批次的期望计算所得
33.BN机制BN怎么训练 BNBatch Normalization层的作用1加速收敛防止梯度消失2控制过拟合可以少用或不用Dropout和正则3降低网络对初始化权重不敏感4允许使用较大的学习率 对于每个隐层神经元把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的比较标准的正态分布使得非线性变换函数的输入值落入对输入比较敏感的区域以此避免梯度消失问题。因为梯度一直都能保持比较大的状态所以很明显对神经网络的参数调整效率比较高就是变动大就是说向损失函数最优值迈动的步子大也就是说收敛地快。方法很简单道理很深刻。 就是说经过BN后目前大部分Activation的值落入非线性函数的线性区内其对应的导数远离导数饱和区这样来加速训练收敛过程。
34.发生梯度消失梯度爆炸的原因如何解决 梯度消失产生的原因有一是在深层网络中二是采用了不合适的损失函数 梯度爆炸一般出现在深层网络和权值初始化值太大的情况下。在深层神经网络或循环神经网络中误差的梯度可在更新中累积相乘。如果网络层之间的梯度值大于 1.0那么重复相乘会导致梯度呈指数级增长梯度变的非常大然后导致网络权重的大幅更新并因此使网络变得不稳定。梯度爆炸会伴随一些细微的信号如①模型不稳定导致更新过程中的损失出现显著变化②训练过程中在极端情况下权重的值变得非常大以至于溢出导致模型损失变成 NaN等等。
梯度消失和梯度爆炸问题都是因为网络太深网络权值更新不稳定造成的本质上是因为梯度反向传播中的连乘效应。解决梯度消失、爆炸主要有以下几种方法1 pre-trainingfine-tunning 2 梯度剪切对梯度设定阈值 3 权重正则化 4 选择relu等梯度大部分落在常数上的激活函数 5 batch normalization (6) 残差网络的捷径shortcut 7)LSTM的“门gate”结构
35. CNN网络很大手机上运行效率不高如何模型压缩
36 欠拟合、过拟合及如何防止过拟合 对训练数据集有很好的拟合训练误差同时也希望它可以对未知数据集测试集有很好的拟合结果泛化能力所产生的测试误差被称为泛化误差。度量泛化能力的好坏最直观的表现就是模型的过拟合overfitting和欠拟合underfitting 欠拟合通过增加网络复杂度或者在模型中增加特征 过拟合原因训练数据集样本单一样本不足训练数据中噪声干扰过大模型过于复杂1.增加数据 2.采用合适的模型控制模型的复杂度3.降低特征的数量 4.L1 / L2 正则化 5.dropout 6.Early stopping提前终止 CNN在图像识别的过程中有强大的“不变性”规则即待辨识的物体在图像中的形状、姿势、位置、图像整体明暗度都不会影响分类结果。我们就可以通过图像平移、翻转、缩放、切割等手段将数据库成倍扩充