cnn和lstm原理

cnn基础理论

1.图像是怎么表示的

用像素点表示,0~256

2.为什么不用全连接层表示图片

因为参数量太多了,比如一个24*24的图片,576个像素点,输入到256*128的网络里,第一层参数量是576*256个参数,占用字节空间是576*256*4 byte.

3.局部感知野

cnn和lstm对数据规模的要求 cnn与lstm_cnn和lstm对数据规模的要求

降低参数量,权值共享

通过滑动窗口来完成整个区域的扫描

通过权值共享来完成参数量不增加

4. 卷积为什么是先相乘,再累加

从信号学上理解

卷积核的理解:

比如一个3*3的卷积核,里面的值都一样,表示周围像素点对当前像素点的影响

比如做边缘检测的卷积核,表示当前像素点对周围的试探

5.对padding和stride的理解

padding可以使输出的长度宽度增加

stride可以使输出的长度宽度降低

两者一起使用可以使的输出的长度宽度可以调节。

6.池化层

cnn和lstm对数据规模的要求 cnn与lstm_卷积_02

7.channel

channel可以理解为卷积核的数量,图片输入是[b,w,h,c],随着网络的加深,希望w和c越来越小,c越来越大,长度宽度越来越小,通道数越来越多。

多通道输入,多通道输出。

cnn和lstm对数据规模的要求 cnn与lstm_lstm_03

8.深层cnn如何防止过拟合

残差网络?

9. xception的输出维度

base_model的输出是[b,2048,h,w],2048表示通道数,通过一个avg pooling把宽和宽的像素值加起来做个均值。

cnn和lstm对数据规模的要求 cnn与lstm_lstm_04

cnn和lstm对数据规模的要求 cnn与lstm_cnn_05

1.介绍一下卷积神经网络

图像识别任务里面卷积神经网络比较常见。先说经典的全连接神经网络为什么不太适合图像识别任务:

一是参数太多,图像是由像素点矩阵来表示的,假如一个25*25*1的矩阵,每个像素点都连接dense层的话,维度会很大。

二是没有利用像素之间的位置信息,单个像素和其周围像素的联系是比较紧密的。

三是网络层数限制,全连接网络超过三层很容易出现梯度消失问题。?是用池化层来缓解梯度消失的问题吗

然后说说卷积神经网络,一个卷积神经网络由若干卷积层、池化层、全连接层组成。

2.如何理解卷积

卷积其实是周围像素点(卷积核大小的像素点)对当前像素点的影响。

rnn和lstm理论基础

rnn会把之前所有的结果都记下来,记的多了就不准了,离着太远的对当前影响不大。

lstm的优化点可以忘掉前面的一些信息。c控制什么信息保留下来,什么信息丢弃。

cnn和lstm对数据规模的要求 cnn与lstm_卷积_06

 

cnn和lstm对数据规模的要求 cnn与lstm_cnn_07

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

cnn和lstm对数据规模的要求 cnn与lstm_cnn和lstm对数据规模的要求_08

在inception的基础上,结合深度可分离卷积。深度可分离卷积:图像是三个通道(平面+空间),深度可分离卷积是在空间维度上把卷积拆分,降低参数量。