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


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值