对于 CNN 卷积网络的理解——神经网络卷积运算
导言
最近学习卷积神经网络,找了很多讲解卷积神经网络的资料,但是仍然不能对卷积神经网络有很好的理解。于是自己做了一个 gif 。如果以后有任何不清楚的地方,就回来看看自己这里写的博客吧。
卷积神经网络(CNN)工作流程
import tensorflow as tf
input = tf.Variable(tf.random.normal([1,5,5,1]))
conv1 = tf.keras.layers.Conv2D(3,1)(input)
conv2 = tf.keras.layers.Conv2D(2,3)(conv1)
上面的代码中,从 input 到 conv1 的步骤,从一般卷积滤波的方式都可以理解。但是在学习卷积神经网络(CNN)的过程中,从 conv1 到 conv2 的步骤却一直没法理解。于是在这里我对这个步骤做了一个动图,方便我们理解这个神经网络中的卷积运算。
话不多说,直接上图
其中,黄色和绿色 3 x 3 x 3 的立方体分别表示 conv2 中的两个 大小为 3 的卷积核。
上方的蓝色 5 x 5 x 3 的立方体表示 conv1
下方的白色 3 x 3 x 2 的立方体表示 conv2
在 conv2 中,红色的小方块表示正在运算的值,白色小方块表示还没计算的值,蓝色表示已经计算好的值。