Tensorflow学习五:卷积神经网络

一:tf中的卷积层:

#通过tf.get_variable的方式创建过滤层的权重变量和偏置项变量。是一个四维矩阵,前面两个维度代表了
#过滤器的尺寸,第三个维度代表当前层的深度,第四个代表过滤器的深度
filter_weight = tf.get_variable(name='weight', shape=[5,5,3,16], initializer=tf.truncated_normal_initializer(stddev=0.1))
#偏置层只需要表现深度
biases = tf.get_variable(name='biases', shape=[16], initializer=tf.constant_initializer(0.1))

#tf.nn.conv2d提供了一个函数实现卷积,第一个参数是当前层的输入,注意输入是一个四维矩阵,其第一个维度对应一个
#输入batch,表示第几张图片。
#tf.nn.conv2d第二个参数是卷积层的权重
#第三个参数是不同维度上的步长。是一个长度为四的数组,但是第一个维度和最后一个维度都必须是1.中间对应矩阵的长和宽
#最后一个参数是填充方法,字符串类型,有两个选择,‘SAME'表示添加全0填充。‘VALID'表示不添加
conv = tf.nn.conv2d(input, filter_weight, strides=[1,1,1,1], padding='SAME')

#tf.nn.bias_add提供了一个函数给每一个节点加上偏置项。这里不能直接上使用加法,因为矩阵不同位置上的节点需要
#加上同样的偏置项。
bias = tf.nn.bias_add(conv, biases)

#将计算结果通过relu实现去线性化
active_conv = tf.nn.relu(bias)  

二:tf中的池化层:

    tf中的池化层有两种,最大值池化和平均值池化。以下代码实现了最大值池化:

pool = tf.nn.max_pool(active_conv, ksize=[1,3,3,1], strides=[1,2,2,1], padding='SAME')
其中ksize提供了过滤器的尺寸,strides提供了过滤器的步长信息。

   

猜你喜欢

转载自blog.csdn.net/xckkcxxck/article/details/80040348
今日推荐