在学习RNN的时候,经常会用CNN来类比,过程中我发现自己对CNN有些地方理解的还不是很清楚。
疑惑1:CNN卷积层的神经元是什么样的?
CNN的卷积层包括各种概念,各种计算,但是我忽然发现,基本没人提到卷积层的神经元,而且在tensorflow编程中,也无需设置卷积层的神经元,这使得我们更加忽略了卷积层的神经元到底是啥样的。
权值共享,那么是不是只要一个神经元就够了呢?
于是我开始思考...
1. 对比全连接的神经元,可以发现,神经元包含一组输入,一组weight,一个函数,一个输出,也就是说一个神经元在每次传输中只有一个输出。
// 试想,如果一次输出多个值,它又怎么保存这些值呢?显然没办法,所以这是一个重点。
2. 卷积层的输出是feture map,是很多个值,一个神经元肯定不行
3. 那么神经元和卷积核啥关系呢?一个卷积核对应一个神经元?
仔细思考下,卷积核可以是多通道的,一个通道一个future map,所以不是一个卷积核一个神经元。
综上,卷积层的神经元个数为:
size(future map) * num(future map)
疑惑2:为什么CNN能够权值共享,全连接网络不行
1. 首先,你要理解,权重是什么? 权重就是偏好,权重3就比权重1更受关注,甚至权重-1被讨厌
那么一组权重是什么?我们可以把它称作一个模板,或者叫做一个过滤器,意思是每个位置都有规范。
我们用过滤器来过滤东西时,有孔的位置才会被关注到。
2. 其次,我们理解一句话:横看成岭侧成峰,就是说看一个事物,不同角度看到的样子是不同的,不同的角度就是不同的过滤器,要了解一张图片,就要很多个过滤器。
这就是多个卷积核。
3. 我们用多个过滤器筛到图片不同角度的特征,最后通过多次卷积形成了这些特征的非线性组合,也就代表了图片的特征。
那么全连接为什么不权重共享?
试想,如果不同特征到一个神经元权重相同,那你只要一个特征就行了啊,要那么多干啥;
如果一个特征到每个神经元权重相同,那这些神经元输出的值都一样,要那么多神经元干啥。
原文地址:https://www.cnblogs.com/yanshw/p/10438741.html