Tensorflow之卷积神经网络池化层max_pool和avg_pool

1. max_pool和avg_pool接口参数

avg_pool(value, ksize, strides, padding, data_format=“NHWC”, name=None)
max_pool(value, ksize, strides, padding, data_format=“NHWC”, name=None)
1)value:当前神经网络层的节点矩阵。
2)ksize:过滤器的尺寸大小。
3)strides:移动的步长。
4)padding:添加补充方式。和卷积层类似,有两种方式,值分别为:‘SAME’和‘VALID’;SAME是Right和Bottom式填充为相邻值。

2. 示例

import os

import tensorflow as tf
import numpy as np

# 忽略不想提示警告错误的信息
# 1是提示,2是警告,3是错误
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
M = np.array([
        [[1],[-1],[0]],
        [[-1],[2],[1]],
        [[0],[2],[-2]]
    ])
M = np.asarray(M, dtype='float32')
M = M.reshape(1, 3, 3, 1)

pool_avg = tf.nn.avg_pool(M, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')
pool_max = tf.nn.max_pool(M, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')
with tf.Session() as sess:
    # 初始化
    tf.global_variables_initializer().run()
    # 输出池化层的值
    print("最大池化:\n",sess.run(pool_max))
    print("均值池化:\n",sess.run(pool_avg))    

结果:
在这里插入图片描述

3. 数学解析

神经网络节点输入层矩阵
在这里插入图片描述

填充相同值:
在这里插入图片描述

对于步长为[1,2,2,1];需要对四块小矩阵进行均值或者最大值运算,得到池化结果。
四小块矩阵如下:
在这里插入图片描述
对这四块小矩阵的元素,计算均值或者最大值。得到:
1)均值
在这里插入图片描述

2)最大值
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值