TensorFlow基础篇(六)——tf.nn.max_pool()和tf.nn.avg_pool()

tf.nn.max_pool()和tf.nn.avg_pool()是TensorFlow中实现最大池化和平均池化的函数,在卷积神经网络中比较核心的方法。

有些和卷积很相似,可以参考TensorFlow基础篇(七)——tf.nn.conv2d()(附代码详解)

两个函数调用方式相同,下边讲解以tf.nn.max_pool()为例子进行加讲解。


函数格式:

tf.nn.max_pool(value, ksize, strides, padding, name=None)

参数说明:

第一个参数value:需要做池化的输入图像,输入feaure map,因为池化在卷积后边。shape为[batch, in_height, in_width, in_channels]:

batch:训练时一个batch的图片数量
in_height:输入图像的高度
in_width:输入图像的宽度
in_channels:输入feature map的数量
第二个参数ksize:类似于卷积的过滤器,池化窗口的大小,是一个长度为4的一维数组,但是这个数组的第一个和最后一数必须为1,即[1, height, width, 1]。这意味着池化层的过滤器是不可以在batch和channels上做池化。实际应用中,使用最多的过滤器尺寸为[1, 2, 2, 1]或者[1, 3, 3, 1]。

height:过滤器的高度
width:过滤器的宽度
第三个参数strides:不同维度上的步长,是一个长度为4的一维向量,[ 1, strides, strides, 1],第一维和最后一维的数字要求必须是1。因为卷积层的步长只对矩阵的长和宽有效。

第四个参数padding:string类型,是否考虑边界,值为“SAME”和“VALID”,"SAME"是考虑边界,不足的时候用填充周围,"VALID"则不考虑边界。。

 返回tensor,shape仍然是[batch, height, width, channels]这种形式。

下边通过例子来说明tf.nn.max_pool()函数的用法:

输入是1张 3*3 大小的feature map,数量是1,过滤器大小是[1, 2, 2, 1],步长是[1,1,1,1],padding值时'VALID',最后得到一个 2*2 的feature map。1张图最后输出就是一个 shape为[1,2,2,1] 的tensor。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
import tensorflow as tf
 
value = tf.Variable(tf.random_normal([1, 3, 3, 1]))
ksize = [1, 2, 2, 1]
 
pool = tf.nn.max_pool(value, ksize, strides=[1, 1, 1, 1], padding='VALID')
 
with tf.Session() as sess:
    # 初始化变量
    op_init = tf.global_variables_initializer()
    sess.run(op_init)
 
    print("value的值为:")
    print(sess.run(value))
    print("池化值为:")
    print(sess.run(pool))


执行过程如下:

运行结果:
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值