卷积,说白了就是对应位置相乘再求和,卷积操作用广泛应用于图像识别,在自然语言处理中也开始应用,用作文本分类问题。
卷积操作最重要的部分就是卷积核或者说过滤器
1、常用过滤器尺寸为3*3或者5*5
2、卷积神经网络中,每个卷基层中过滤器中的参数都是一样的,这样就巨幅减少神经网络的参数
3、边缘可以采用全0填充,或者不进行填充,其结果矩阵略有不同
4、卷积层参数的个数与输入层图片尺寸无关,与深度有关,比如输入层维度32*32*3,卷积层尺寸5*5,深度16,那么这个卷积层的参数个数为:5*5*3*16+16
简单实现代码如下:
#coding:utf-8 import tensorflow as tf #设置过滤器 filter_weight = tf.get_variable('weights',[5,5,3,16],initializer=tf.truncated_normal_initializer(stddev=0.1))#5 5代表过滤器的尺寸,3为当前层的深度,16为过滤器的深度,即输出深度为16 #设置每一个w对应的b biases = tf.get_variable("basises",[16],initializer=tf.constant_initializer(0.1))#因为上面说了,输出维度为16,所以这里有16个basis #对输入进行卷积操作(没有加b) conv = tf.nn.conv2d(input,filter_weight,strides=[1,1,1,1],padding ="SAME" ) #将求得的卷积每一个加上b bias = tf.nn.bias_add(conv,biases) #施加激活函数 active_conv = tf.nn.relu(bias) #添加最大池化层 pool = tf.nn.max_pool(active_conv,ksize = [1,3,3,1],strides = [1,2,2,1],padding = "SAME")