您的位置:首页 > 编程语言

TensorFlow:简单的卷积层、池化层(采样层)示例

2017-09-13 19:20 225 查看
卷积层:

ws=tf.get_variable('w',[5,5,3,16],initializer=tf.truncated_normal_initializer(stddev=0.1))
bs=tf.get_variable('b',[16],initializer=tf.constant_initializer(0.1))

conv=tf.nn.conv2d(input,ws,strides=[1,1,1,1],padding='SAME')
b=tf.nn.bias_add(conv,bs)

now_conv=tfnn.relu(b)
tf.get_variable函数有四个参数,第一维为名字,第二维为变量维度(前两维为卷积核尺寸,第三维为层的深度,第四维为卷积核深度),第三维是变量的初始化方法,主要有以下几种:
tf.constant_initializer:常量初始化函数

tf.random_normal_initializer:正态分布

tf.truncated_normal_initializer:截取的正态分布

tf.random_uniform_initializer:均匀分布

tf.zeros_initializer:全部是0

tf.ones_initializer:全是1

tf.uniform_unit_scaling_initializer:满足均匀分布,但不影响输出数量级的随机值

tf.nn.conv2d函数有四个参数,第一维为输入图像,第二维为卷积层权值,第三维为不同维度的步长(在CNN中,第一维、第四维固定为1),第四维填充方式(SAME表示全0填充,VALID为不填充)。

层的深度:例如一个输入图像是28*28*3,其中3代表深度,即为(R,G,B)

卷积核的深度:我的理解就是卷积核的个数(不知道对不对)

当然,我们有更简单的方法实现一个卷积层,代码如下:

now_conv=slim.conv2d(input,16,[3,3])
slim.conv2d函数有三个必填参数,第一维为输入图像,第二维为卷积核的深度,第三维为卷积核的尺寸。

池化层(采样层):

p=tf.nn.max_pool(now_conv,ksize=[1,3,3,1],strides=[1,2,2,1],padding='SAME']
TensorFlow提供两种池化函数,分别是max_pool和avg_pool,前者为最大值池化,后者为均值池化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息