3、最大池化maxinmum pooling

这篇具有很好参考价值的文章主要介绍了3、最大池化maxinmum pooling。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

了解有关最大池化特征提取的更多信息。

简介

在第二课中,我们开始讨论卷积神经网络(convnet)的基础如何进行特征提取。我们了解了这个过程中的前两个操作是在带有 relu 激活的 Conv2D 层中进行的。

在这一课中,我们将看一下这个序列中的第三个(也是最后一个)操作:通过最大池化进行压缩,这在 Keras 中是通过 MaxPool2D 层完成的。

通过最大池化进行压缩

在我们之前的模型中添加压缩步骤,将得到以下结果:

In [1]:

from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    layers.Conv2D(filters=64, kernel_size=3), # activation is None
    layers.MaxPool2D(pool_size=2),
    # More layers follow
])

MaxPool2D 层很像 Conv2D 层,只不过它使用一个简单的最大函数而不是内核,其中 pool_size 参数类似于 kernel_size。然而,MaxPool2D 层没有像卷积层在其内核中那样的可训练权重。

让我们再看一下上一课中的提取图。记住,MaxPool2D 是 Condense 步骤。

3、最大池化maxinmum pooling

注意,应用 ReLU 函数(Detect)后,特征图最终会有很多“死区”,即只包含 0 的大面积区域(图像中的黑色区域)。如果让这些 0 激活值通过整个网络,将会增加模型的大小,而不会添加太多有用的信息。相反,我们希望压缩特征图,只保留最有用的部分——特征本身。

这实际上就是最大池化所做的。最大池化在原始特征图的激活块中取最大的激活值。

3、最大池化maxinmum pooling

当在 ReLU 激活后应用时,它具有“强化”特征的效果。池化步骤增加了活动像素与零像素的比例。

示例 - 应用最大池化

让我们在第二课中的示例中添加“压缩”步骤。这个下一个隐藏单元将带我们回到我们之前的位置。

In [2]:

import tensorflow as tf
import matplotlib.pyplot as plt
import warnings

plt.rc('figure', autolayout=True)
plt.rc('axes', labelweight='bold', labelsize='large',
       titleweight='bold', titlesize=18, titlepad=10)
plt.rc('image', cmap='magma')
warnings.filterwarnings("ignore") # to clean up output cells

# Read image
image_path = '../input/computer-vision-resources/car_feature.jpg'
image = tf.io.read_file(image_path)
image = tf.io.decode_jpeg(image)

# Define kernel
kernel = tf.constant([
    [-1, -1, -1],
    [-1,  8, -1],
    [-1, -1, -1],
], dtype=tf.float32)

# Reformat for batch compatibility.
image = tf.image.convert_image_dtype(image, dtype=tf.float32)
image = tf.expand_dims(image, axis=0)
kernel = tf.reshape(kernel, [*kernel.shape, 1, 1])

# Filter step
image_filter = tf.nn.conv2d(
    input=image,
    filters=kernel,
    # we'll talk about these two in the next lesson!
    strides=1,
    padding='SAME'
)

# Detect step
image_detect = tf.nn.relu(image_filter)

# Show what we have so far
plt.figure(figsize=(12, 6))
plt.subplot(131)
plt.imshow(tf.squeeze(image), cmap='gray')
plt.axis('off')
plt.title('Input')
plt.subplot(132)
plt.imshow(tf.squeeze(image_filter))
plt.axis('off')
plt.title('Filter')
plt.subplot(133)
plt.imshow(tf.squeeze(image_detect))
plt.axis('off')
plt.title('Detect')
plt.show();

3、最大池化maxinmum pooling

我们将使用 tf.nn 中的另一个函数来应用池化步骤,即 tf.nn.pool。这是一个 Python 函数,它做的事情与你在模型构建时使用的 MaxPool2D 层相同,但是,作为一个简单的函数,直接使用更容易。

In [3]:

import tensorflow as tf

image_condense = tf.nn.pool(
    input=image_detect, # image in the Detect step above
    window_shape=(2, 2),
    pooling_type='MAX',
    # we'll see what these do in the next lesson!
    strides=(2, 2),
    padding='SAME',
)

plt.figure(figsize=(6, 6))
plt.imshow(tf.squeeze(image_condense))
plt.axis('off')
plt.show();

3、最大池化maxinmum pooling

非常酷!希望你能看到池化步骤是如何通过在最活跃的像素周围压缩图像来强化特征的。

平移不变性

我们称零像素为“不重要”。这是否意味着它们根本不携带任何信息?实际上,零像素携带位置信息。空白空间仍然将特征定位在图像中。当 MaxPool2D 移除其中一些像素时,它移除了特征图中的一些位置信息。这给卷积网络赋予了一种称为平移不变性的属性。这意味着一个带有最大池化的卷积网络倾向于不通过图像中的位置来区分特征。(“平移”是改变某物位置而不旋转它或改变其形状或大小的数学词汇。)

观察当我们反复应用最大池化到以下特征图时会发生什么。

3、最大池化maxinmum pooling

池化倾向于破坏位置信息

原始图像中的两个点在反复池化后变得无法区分。换句话说,池化破坏了它们的一些位置信息。由于网络在特征图中无法再区分它们,所以它也无法在原始图像中区分它们:它对位置差异已经不变。

实际上,池化只在网络中的小距离上创建平移不变性,就像图像中的两个点一样。开始时相距很远的特征在池化后仍然会保持不同;只有一些位置信息丢失了,但并非全部。

3、最大池化maxinmum pooling

但只在小距离上。两个相距很远的点保持分离

对于图像分类器来说,对特征位置的小差异具有不变性是一个很好的属性。仅仅因为视角或构图的差异,同一种类型的特征可能会位于原始图像的各个部分,但我们仍然希望分类器能够识别出它们是相同的。因为这种不变性是内置在网络中的,我们可以使用更少的数据进行训练:我们不再需要教它忽略那种差异。这使得卷积网络比只有密集层的网络具有很大的效率优势。(你将在第6课中看到另一种免费获得不变性的方法——数据增强!)

结论

在这一课中,我们学习了关于特征提取的最后一步:使用 MaxPool2D 进行压缩。在第4课中,我们将完成我们对卷积和池化的讨论,以滑动窗口结束。

AI算法蒋同学致力于信息学奥赛教学、人工智能算法研究工作! B站 ! 淘宝 !文章来源地址https://www.toymoban.com/news/detail-844649.html

到了这里,关于3、最大池化maxinmum pooling的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机视觉入门 3)最大池化

    计算机视觉入门 1)卷积分类器 计算机视觉入门 2)卷积和ReLU 计算机视觉入门 3)最大池化 计算机视觉入门 4)滑动窗口 计算机视觉入门 5)自定义卷积网络 计算机视觉入门 6) 数据集增强(Data Augmentation) 提示:仅为个人学习笔记分享,若有错漏请各位老师同学指出,Th

    2024年02月12日
    浏览(42)
  • PyTorch入门学习(九):神经网络-最大池化使用

    目录 一、数据准备 二、创建神经网络模型 三、可视化最大池化效果 一、数据准备 首先,需要准备一个数据集来演示最大池化层的应用。在本例中,使用了CIFAR-10数据集,这是一个包含10个不同类别图像的数据集,用于分类任务。我们使用PyTorch的 torchvision 库来加载CIFAR-10数据

    2024年02月07日
    浏览(34)
  • Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)

    目录 1. 池化的功能 2. 神经原网络设定最大卷积层的作用 3. torch.nn.MaxPool2d() 4. 使用torch.nn.MaxPool2d()实战  3. Pytorch源码 1. 池化的功能 先通过与卷积的相同点及不同点说明池化的功能。 池化与卷积的共同点: 池化操作也是原图像矩阵(或特征图矩阵)与一个固定形状的窗口(

    2024年02月05日
    浏览(48)
  • 一文带你了解MySQL数据库InnoDB_Buffer_Pool

    前言 通过前边的学习我们知道,对于使用 InnoDB 作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚簇索引和二级索引),还是各种系统数据,都是以页的形式存放在表空间中的,而所谓的表空间只不过是 InnoDB 对文件系统上一个或几个实际文件的抽象,也就是

    2024年02月01日
    浏览(56)
  • MySQL | 深入了解如何最大化利用 MySQL 函数(一)

    前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL字符串函数和数学函数的讲解 ✨ 一、字符串函数 函数 作用 UPPER(列|字符串) 将字符串每个字符转为大写 LOWER(列|字符串) 将字符串每个字符转为小写 CONCAT(str1,str2,…) 将所有字符串连接成一个字符串 REPLACE(列|字符串,新字符

    2024年02月08日
    浏览(51)
  • Java LeetCode篇-深入了解二叉树经典解法(三种方式实现:获取二叉树的最大深度)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍    文章目录         1.0 对称二叉树         1.1 判断对称二叉树实现思路         1.2 代码实现:判断对称二叉树         2.0 二叉树的最大深度         2.1 使用递归实现获取二叉树的最大深度思

    2024年02月05日
    浏览(77)
  • 上采样,下采样,卷积,反卷积,池化,反池化,双线性插值【基本概念分析】

    上采样(upsampling):又名放大图像、图像插值; 主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上; 上采样有3种常见的方法:双线性插值(bilinear),反卷积(Transposed Convolution),反池化(Unpooling); 图像放大几乎都是采用内插值方法,即在原有图像像素的基础上在

    2024年02月05日
    浏览(45)
  • 神经网络:池化操作

    在计算机视觉中,池化操作是一种常用的特征降维技术,它在卷积神经网络(CNN)中起着重要的作用。池化操作主要有以下作用和意义: 1. 特征降维: 池化操作可以减小特征图的尺寸,从而降低了模型的计算复杂度和内存消耗。 通过将特征图的空间维度缩小,可以保留重要

    2024年02月10日
    浏览(39)
  • 什么是池化层?

    池化层(Pooling Layer)是卷积神经网络(CNN)中的一个重要组件,用于减少特征图(feature maps)的维度,同时保留重要的特征信息。以下是池化层的几个关键特点: 降低维度:池化层通过减少特征图的大小来降低数据的空间维度,这有助于减少计算量和避免过拟合。 操作方式

    2024年01月17日
    浏览(43)
  • 22/76-池化

    池化(最大池化层:选每个kernel中最大的数) 填充、步幅、多个通道: 池化层与卷积层类似,都具有填充和步幅。 没有可学习的参数。 在每个输入通道应用池化层以获得相应的输出通道。 输出通道数=输入通道数。 平均池化层(将最大池化层中的最大数替换为平均数) 总

    2024年01月17日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包