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

卷积层:

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,前者为最大值池化,后者为均值池化。


你可能感兴趣的:(深度学习,机器学习)