cnn和lstm原理
cnn基础理论
1.图像是怎么表示的
用像素点表示,0~256
2.为什么不用全连接层表示图片
因为参数量太多了,比如一个24*24的图片,576个像素点,输入到256*128的网络里,第一层参数量是576*256个参数,占用字节空间是576*256*4 byte.
3.局部感知野
降低参数量,权值共享
通过滑动窗口来完成整个区域的扫描
通过权值共享来完成参数量不增加
4. 卷积为什么是先相乘,再累加
从信号学上理解
卷积核的理解:
比如一个3*3的卷积核,里面的值都一样,表示周围像素点对当前像素点的影响
比如做边缘检测的卷积核,表示当前像素点对周围的试探
5.对padding和stride的理解
padding可以使输出的长度宽度增加
stride可以使输出的长度宽度降低
两者一起使用可以使的输出的长度宽度可以调节。
6.池化层
7.channel
channel可以理解为卷积核的数量,图片输入是[b,w,h,c],随着网络的加深,希望w和c越来越小,c越来越大,长度宽度越来越小,通道数越来越多。
多通道输入,多通道输出。
8.深层cnn如何防止过拟合
残差网络?
9. xception的输出维度
base_model的输出是[b,2048,h,w],2048表示通道数,通过一个avg pooling把宽和宽的像素值加起来做个均值。
1.介绍一下卷积神经网络
图像识别任务里面卷积神经网络比较常见。先说经典的全连接神经网络为什么不太适合图像识别任务:
一是参数太多,图像是由像素点矩阵来表示的,假如一个25*25*1的矩阵,每个像素点都连接dense层的话,维度会很大。
二是没有利用像素之间的位置信息,单个像素和其周围像素的联系是比较紧密的。
三是网络层数限制,全连接网络超过三层很容易出现梯度消失问题。?是用池化层来缓解梯度消失的问题吗
然后说说卷积神经网络,一个卷积神经网络由若干卷积层、池化层、全连接层组成。
2.如何理解卷积
卷积其实是周围像素点(卷积核大小的像素点)对当前像素点的影响。
rnn和lstm理论基础
rnn会把之前所有的结果都记下来,记的多了就不准了,离着太远的对当前影响不大。
lstm的优化点可以忘掉前面的一些信息。c控制什么信息保留下来,什么信息丢弃。
lstm面试题
1.介绍一下RNN、LSTM、GRU?他们的区别和联系是什么
rnn: rnn中隐藏层的输出不仅取决于当前的输入x,还取决于上一次隐藏层的输出值。适合处理数据有先后顺序的一种神经网络结构。
rnn在训练中比传统的网络更容易发生梯度爆炸和梯度消失。
梯度消失:根源是神经网络天然属性决定的:反向传播,链式求导。rnn的序列太长的话,激活函数的导数最大是1,经常小于1,很多小于1的数相乘,趋紧于0.
梯度爆炸: 参数过大的时候,链式相乘,发生梯度爆炸。
lstm:是基于rnn改进而来的,解决了rnn的梯度消失梯度爆炸问题。相比rnn多了一个遗忘门,决定了上一时刻的信息有多少保留到当前时刻。其实门的结构很简单,就是一个sigmoid层和一个点乘操作的组合,因为sigmoid层的输出是0-1的值,这代表有多少信息能够流过sigmoid层。0表示都不能通过,1表示都能通过。
视频分类
1.为什么用cnn+lstm而不是用3d卷积
xception
深度可分离卷积
各种卷积层的理解
深度可分离卷积
keras里的AP
xception
在inception的基础上,结合深度可分离卷积。深度可分离卷积:图像是三个通道(平面+空间),深度可分离卷积是在空间维度上把卷积拆分,降低参数量。