CNN_Structure_2

这篇文章还是一篇在学习中整理的笔记,不想做优化,就是这么任性

CNN如何做到的可视化?

在第一层,将权重可视化,因为他们直接和图像相关。那我们如何将后面的卷积层可视化?这些可视化方法都是对神经元的反应做出的可视化,而不是对滤波器本身,实际上目前并没有好的方法对滤波器本身做可视化,所以在ConventnetJS中你可以找到权重,但是并不能直接对他们做出很好的解释。因为权重自己没有很好的解释意义

Pooling Layer 的真正目的以及这么处理的原因

当你做池化时,实际做的事情是扔掉一些空间上的信息,所以在进行池化时,我知道某个2*2的小方块的某个地方有个咖喱棒,或者是可以投影回图像中的某个地方,但是我不知道咖喱棒的具体位置,因为我扔掉了部分空间信息,我就不知道剩下的数字是来自原来的哪个位置。所以在空间上,我们隔绝了部分信息,但我们仍然知道某个地方有咖喱棒。这样使得我们在每次池化时都扔掉了一小部分信息。

这里我想说的是,虽然我们扔掉了一部分信息,但是我们的目的是最终把分类算出来,比如我们分析出这个图片中有咖喱棒,那这个图片一定是saber;即你不必知道那些东西的具体位置,所以pooling layer就扔掉了一些相关的信息。

为什么要在滤波器中做点乘?

我们喜欢做点乘是因为我们知道怎么高效的做这个运算,而且他的输入域是局域的,我们希望共享参数,这样就不会使得权重的数量多到爆炸(所以没有一个简单的数学公式可以代替)

图片数据的存储形式

数据都是三维数组的形式,但是如果你想要用批处理的方式来处理数据,那它就是四维数组,总之你处理的每一层都是数组