从0开始学习计算机视觉--Day09--卷积与池化

在卷积神经网络中,由于卷积核在输入的数据上滑动时,输出的总是一个尺寸更小的数据,假如神经网络有很多层,那么最后输出的图片不仅尺寸会跟初始数据不一样,还会有很多特征丢失。为了防止这种情况,同时尽可能地保留初始特征,也就是尽可能地让边缘的数据参与激活函数的运算,我们会在滑动前,对数据做零填充,即在数据外多一层填充了0的数据,从而让输出的数据保持原来的尺寸。假设输入的数据是7×7,卷积核是3×3,步幅为1的话,这样输出的就是5×5的尺寸,而在外围包了一层后,原来的尺寸就变成了9×9,输出也就变为了7×7,而由于我们使用的0填充,做了点积运算后,结果还是0,不影响实际的运算。

当然,在实际使用中,图片的数据是有深度的,比如32×32×3,这里的3指的就是图像数据的3个通道,比如红,绿,蓝,所以我们的输出的数据理所当然的也会有深度,但并不是对齐输入数据的深度,输出数据的深度取决于我们所用的卷积核的数量,这是因为不管输入数据的深度是多少,卷积核的深度与其保持一致,做了点积后输出的是尺寸×尺寸×1,然后再乘以卷积核的数量,也就是输出的数据叠在一起(有多少个卷积核就有多少个数据叠在一起)。注意,最终输出的数据的参数总数,等于输出数据的长乘宽后要加1再乘以深度,这里的1指的是偏置项,适用于调整权重矩阵的。

总的来说,卷积改变的是输入数据的深度,可以想象一下假如用的卷积核是1×1的尺寸,那么你选用的个数,就是你输出的数据的深度,即通过卷积改变了输入数据的深度,同时提取到了一部分特征(比较边缘化)。

而池化层部分,改变的则是数据的宽度,即尺寸的长和宽,这么做的意义是,减少输出数据的参数量,让训练不会过于复杂(且池化层部分是没有超参数的,计算复杂度更小),从而能让模型更好地学习到特征,对后续图片的分类有更大的帮助。一般我们用最大池化法,也就是选定每个区域内最显著的那个参数作为输出,而步幅我们会选择在滑动时尽量没有重叠的大小,比如输入的尺寸是4×4,池化器的大小是2×2,那么步幅就设置为2,滑动3次就将输入的数据的区域都覆盖过了。这部分也不需要做0填充,因为池化本质就是在减少数据的宽度,不需要担心有边缘数据因为大小限制没被纳入。

学习来自于斯坦福教程:Stanford University CS231n: Deep Learning for Computer Vision

相关推荐
数智工坊9 分钟前
【Mask2Former论文阅读】:基于掩码注意力的通用分割Transformer,大一统全景/实例/语义分割
论文阅读·深度学习·transformer
fpcc1 小时前
AI和大模型——Fine-tuning
人工智能·深度学习
向量引擎1 小时前
向量引擎接入 GPT Image 2 和 deepseek v4:一个 api key 把热门模型串起来,开发者终于不用深夜修接口了
人工智能·gpt·计算机视觉·aigc·api·ai编程·key
努力努力再努力FFF1 小时前
医生对AI辅助诊断感兴趣,作为临床人员该怎么了解和学习?
人工智能·学习
AI医影跨模态组学2 小时前
如何将纵向MRI深度学习特征与局部晚期直肠癌新辅助放化疗后的免疫微环境建立关联,并解释其对pCR及预后的机制
人工智能·深度学习·论文·医学·医学影像·影像组学
格林威3 小时前
工业视觉项目:如何与客户有效沟通验收标准?
人工智能·数码相机·计算机视觉·视觉检测·机器视觉·工业相机·视觉项目
sakiko_3 小时前
UIKit学习笔记5-使用UITableView制作聊天页面
笔记·学习·swift·uikit
Alice-YUE4 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
冰西瓜6004 小时前
深度学习的数学原理(三十三)—— Transformer编码器完整实现
人工智能·深度学习·transformer
北山有鸟5 小时前
修改源码法和插件法
嵌入式硬件·学习