池化层的作用[通俗易懂]

maxpooling是CNN当中的最大值池化操作,其实用法和卷积很类似tf.nn.max_pool(value,ksize,strides,padding,name=None)参数是四个,和卷积很类似:第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是featuremap,依然是[batch,height,width,channels]这样的shape第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1,height,width,1],

大家好,又见面了,我是你们的朋友全栈君。

1. 池化层理解

池化层夹在连续的卷积层中间, 用于压缩数据和参数的量。
简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。
个人理解的同图片resize方法类似(双线性插值法,邻近法),只不过池化层用的是取最大值法。

在这里插入图片描述

2. 池化层的作用:

个人觉得主要是两个作用:

  1. invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)
  2. 保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力

A: 特征不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。

B. 特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用

在这里插入图片描述

3. 函数解析 tf.nn.max_pool(value, ksize, strides, padding, name=None)

参数是四个,和卷积很类似:
第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape

第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1

第三个参数strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]

第四个参数padding:和卷积类似,可以取’VALID’ 或者’SAME’

返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式

4. 代码演示详解维度变化

import tensorflow as tf
import numpy as np
# [ batch, in_height, in_weight, in_channel ]
input_data = np.random.randn(32, 32).reshape(1, 32, 32, 1)
# [ filter_height, filter_weight, in_channel, out_channels ]
# 8: 输出有 8 个 1: 同 input_data 中的 1 对应
filter_ = np.random.randn(5, 5, 8).reshape(5, 5, 1, 8)
# 一层卷积
conv = tf.nn.conv2d(input_data, filter_, strides=[1, 1, 1, 1], padding='VALID')
# VALID:不会补0。 28如何得到的: 32 - 5 + 1,宽度和高度的shape变化都是这个公式
# SAME:补0,得到的就是 32 * 32 同输入一样的大小。
# (1, 28, 28, 8)
print(conv.shape)
# 池化层, 此函数参数同 tf.nn.conv2d 一样
# [1, 2, 2, 1]: 输入:1 高度:2 宽度:2 channel:1
max_pool = tf.nn.max_pool(conv, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding="SAME")
# (1, 14, 14, 8)
print(max_pool.shape)
# 激活层,不改变维度
relu = tf.nn.relu(max_pool)
# (1, 14, 14, 8)
print(relu.shape)
# dropout
dropput = tf.nn.dropout(relu, keep_prob=0.6)
# (1, 14, 14, 8)
print(dropput.shape)
# 第二层卷积
# 高度:5 宽度:5 输入8:同dropout中的8 输出:20
filter2_ = np.random.randn(5, 5, 8, 20)
conv2 = tf.nn.conv2d(dropput, filter2_, strides=[1, 1, 1, 1], padding='VALID')
# (1, 10, 10, 20)
print(conv2.shape)
# 池化层
# [1, 2, 2, 1]: 输入:1 高度:2 宽度:2 channel:1
max_pool = tf.nn.max_pool(conv2, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding="SAME")
# (1, 5, 5, 20)
print(max_pool.shape)
#
# # 激活层
# sigmoid = tf.nn.sigmoid(max_pool)
# # (1, 5, 5, 20)
# print(relu.shape)
#
# # dropout
# dropput2 = tf.nn.dropout(sigmoid, keep_prob=0.5)
# # (1, 5, 5, 20)
# print(dropput.shape)
#
# # 全连接层
# # 500: 上面:5*5*20
# dense = np.random.randn(500, 120)
# fc = tf.reshape(dropput2, shape=[1, 5*5*20])
# conn = tf.matmul(fc, dense)
# # (1, 120)
# print(conn.shape)
#
# # out输出层
# w = np.random.randn(120, 9)
#
# b = np.random.randn(9)
#
# out = tf.matmul(conn, w) + b
# # (1, 9)
# print(out.shape)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/127602.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • c语言图书馆管理系统课程设计报告_图书管理系统课程设计代码

    c语言图书馆管理系统课程设计报告_图书管理系统课程设计代码C语言课程设计报告第第PAGE1页《程序设计语言-C》课程设计报告题目:图书管理系统班级:学号:姓名:2016年5月12日目录程序总体功能新增功能函数调用关系主要算法流程图排序算法流程图插入算法流程图过程难点及解决方法附录:源程序一:程序总体功能本图书管理系统可以实现图书管理的基本功能,包括图书信息的录入、输出、排序、删除、查找及批量导入/导出等。图书属性信息包括书号、书名、第一作者、…

    2022年10月11日
  • 哪条区块链可以运行DAPP_区块链应用开发入门

    哪条区块链可以运行DAPP_区块链应用开发入门在区块链上编程:DApp 开发简介

  • Xray扫描器[通俗易懂]

    Xray扫描器[通俗易懂]简介xray是一款可以使用HTTP/HTTPS代理进行被动扫描的安全工具,支持功能如下独立的URL扫描 基于HTTP的被动代理扫描,同时支持HTTPS SQL注入检测模块 命令注入检测模块 任意重定向检测模块 路径遍历模块Xray扫描器内置插件XSS漏洞检测(key:xss):利用语义分析的方式检测XSS漏洞 SQL注入检测(key:sqldet…

  • 苹果2021尺寸(生肖年份对照表2020)

    iPhone11 6.1英寸 iPhone11Pro 5.8英寸 iphone手机爆降价1500这活动太给力了机会不容错过http://iphone.adiannao.cn/2iPhone11ProMax 6.5英寸iPhoneSE2020款 4.7英寸 iPhone12mini 5.4英寸 iPhone12 6.1英寸 iPhone12Pro 6.1英寸 iPhone12ProMax 6.7英寸第一代iPhone2GiOS1

  • 概率论:随机事件和概率事件_随机事件概率的求法

    概率论:随机事件和概率事件_随机事件概率的求法相关定义;随机试验:满足以下三个条件的:1.实验相同条件下可重复2.实验的所有结果都是明确可知的,且不止一个3.实验结果出来之前,最总会是个什么结果,我们是无法预料的。样本空间:随机实验的所有可能的结果的集合就是这个实验的样本空间。基本事件(样本点):就是样本空间的每一个具体的可能的结果随机事件:样本空间的子集必然事件:每次实验必定发生的事件…

    2022年10月18日
  • idea2021.7.16激活码(JetBrains全家桶)「建议收藏」

    (idea2021.7.16激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号