卷积神经网络:从简单示例到多级卷积的深入解析
1. 卷积基础与简单示例
在图像处理中,像素通常以二维数组形式存在,每个像素可能是一个强度列表。对于黑白图片,列表中只有一个值;而彩色图片则有三个值。卷积滤波器也是类似的情况,一个 $m * n$ 的滤波器会与 $m$ 行 $n$ 列的像素相匹配,并且像素和滤波器都可能有多个通道。
例如,为了检测番茄酱瓶的水平边缘,我们可以创建一个特殊的滤波器。这个滤波器的最上一行在输入光只有红色强度高,而蓝色和绿色强度低时会被高度激活;接下来的两行则希望红色较少(以形成对比),而蓝色和绿色较多。
下面是一个简单的 TensorFlow 卷积示例代码:
ii = [[ [[0],[0],[2],[2]], [[0],[0],[2],[2]], [[0],[0],[2],[2]], [[0],[0],[2],[2]] ]] # ’’’ ((0 0 2 2) # (0 0 2 2) # (0 0 2 2) # (0 0 2 2))’’’ I = tf.constant(ii, tf.float32) ww = [ [[[-1]],[[-1]],[[1]]], [[[-1]],[[-1]],[[1]]], [[[-1]],[[-1]],[[1]]] ] # ’’’((-1 -1 1) # (-1 -1 1) # (-1 -1 1))’’’ W = tf.constant(ww, tf.float32) C = tf.nn.conv2d( I, W, str