tensorflow简单实现卷积前向过程

时间:2023-03-09 17:05:27
tensorflow简单实现卷积前向过程

卷积,说白了就是对应位置相乘再求和,卷积操作用广泛应用于图像识别,在自然语言处理中也开始应用,用作文本分类问题。

卷积操作最重要的部分就是卷积核或者说过滤器
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")