19 卷积层 [动手学深度学习v2]

该博客探讨了图像处理中两个关键原则——平移不变性和局部性,并解释了如何将这些原则应用于全连接层以设计卷积层。通过限制权重和应用局部约束,实现了2维卷积运算,这在图像模式识别中至关重要。此外,还介绍了卷积层与交叉相关运算的区别,并提供了Python实现的示例。
摘要由CSDN通过智能技术生成
  1. 两个原则:

    • 平移不变性
    • 局部性

    这两个在图片里面找模式的原则启发了之后的设计。

  2. 重新考察全连接层

    1. 将输入和输出变形为矩阵(宽度,高度)

    2. 将权重变形为4-D张量:( h h h, w w w)到( h ′ h' h, w ′ w' w
      h i , j = ∑ k , l w i , j , k , l x k , l = ∑ a , b v i , j , a , b x i + a , j + b h_{i, j}=\sum_{k, l} w_{i, j, k, l} x_{k, l}=\sum_{a, b} v_{i, j, a, b} x_{i+a, j+b} hi,j=k,lwi,j,k,lxk,l=a,bvi,j,a,bxi+a,j+b
      V V V W W W的重新索引: v i , j , a , b = w i , j , i + a , j + b v_{i, j, a, b}=w_{i, j, i+a, j+b} vi,j,a,b=wi,j,i+a,j+b

  3. 原则 #1 - 平移不变性

    • x x x的平移导致 h h h的平移: h i , j = ∑ a , b v i , j , a , b x i + a , j + b h_{i, j}=\sum_{a, b} v_{i, j, a, b} x_{i+a, j+b} hi,j=a,bvi,j,a,bxi+a,j+b

    • v v v不应该依赖于( i i i, j j j)[( a a a, b b b)可以看作是我们要识别的东西]

    • 解决方案:加一个限制, v i , j , a , b = v a , b v_{i,j,a,b} = v_{a,b} vi,j,a,b=va,b
      h i , j = ∑ a , b v a , b x i + a , j + b h_{i, j}=\sum_{a, b} v_{a, b} x_{i+a, j+b} hi,j=a,bva,bxi+a,j+b
      这就是2维卷积(交叉相关)

  4. 原则 #2 - 局部性

    • 当评估 h i , j h_{i,j} hi,j时,我们不应该用远离 x i , j x_{i,j} xi,j的参数

    • 解决方案:当 ∣ a ∣ , ∣ b ∣ > Δ |a|, |b| > \Delta a,b>Δ时,使得 v a , b = 0 v_{a,b} = 0 va,b=0
      h i , j = ∑ a = − Δ Δ ∑ b = − Δ Δ v a , b x i + a , j + b h_{i, j}=\sum_{a=-\Delta}^{\Delta} \sum_{b=-\Delta}^{\Delta} v_{a, b} x_{i+a, j+b} hi,j=a=ΔΔb=ΔΔva,bxi+a,j+b

  5. 对全连接层使用平移不变性和局部性得到卷积层
    h i , j = ∑ a , b v i , j , a , b x i + a , j + b → h i , j = ∑ a = − Δ Δ ∑ b = − Δ Δ v a , b x i + a , j + b h_{i, j}=\sum_{a, b} v_{i, j, a, b} x_{i+a, j+b} \quad \rightarrow \quad h_{i, j}=\sum_{a=-\Delta}^{\Delta} \sum_{b=-\Delta}^{\Delta} v_{a, b} x_{i+a, j+b} hi,j=a,bvi,j,a,bxi+a,j+bhi,j=a=ΔΔb=ΔΔva,bxi+a,j+b

  6. 交叉相关 vs 卷积

    • 二维交叉相关
      y i , j = ∑ a = 1 h ∑ b = 1 w w a , b x i + a , j + b y_{i, j}=\sum_{a=1}^{h} \sum_{b=1}^{w} w_{a, b} x_{i+a, j+b} yi,j=a=1hb=1wwa,bxi+a,j+b

    • 二维卷积
      y i , j = ∑ a = 1 h ∑ b = 1 w w − a , − b x i + a , j + b y_{i, j}=\sum_{a=1}^{h} \sum_{b=1}^{w} w_{-a, -b} x_{i+a, j+b} yi,j=a=1hb=1wwa,bxi+a,j+b

    • 由于对称性,在实际使用中没有区别

  7. 卷积层将输入和核矩阵进行交叉相关,加上偏移后得到输出;核矩阵和偏移是可学习的参数;核矩阵的大小是超参数(局部性)。

  8. 互相关运算

    import torch
    
    def corr2d(X, K):
        """计算二维互相关运算"""
        h, w = K.shape
        Y = torch.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))
        for i in range(Y.shape[0]):
            for j in range(Y.shape[1]):
                Y[i, j] = (X[i:i + h, j:j + w] * K).sum()
         return Y
    
### 回答1: 动手深度学习v2是一本非常好的深度学习教材,是从谷歌机器习研究员李沐所主持的Gluon团队创作的。它提供了丰富的案例和实际应用,深入浅出地介绍了深度学习的基础理论和实践技能。 下载动手深度学习v2非常简单,可以通过访问官方网站来获取。首先,打开谷歌或百度搜索引擎,搜索"动手深度学习v2下载",就可以找到相关的下载链接。建议选择官网下载,因为官网下载最为安全可靠。 进入官网后,点击首页上的"下载"按钮,然后在目录下找到本书的下载链接,下载适合你的版本即可。此外,动手深度学习v2还有在线阅读的版本,方便习者随时随地习。 总的来说,动手深度学习v2是一本非常优秀的深度学习教材,相关下载链接也十分便捷,能够帮助广大习者更好地掌握深度学习相关的知识和技能。 ### 回答2: 动手深度学习v2是一本非常优秀的深度学习入门书籍,笔者十分推荐。如果您想要下载该书籍,可以使用以下方法: 1.进入动手深度学习v2的官网(https://zh.d2l.ai/),点击右上角的“Github”按钮,进入书籍的Github仓库。 2.在仓库中找到“releases”目录,选择最新的版本号,点击进入。 3.在该版本的页面中,找到“Source code (zip)”或“Source code (tar.gz)”选项,点击下载压缩包。 4.下载完成后,解压缩文件即可得到电子书的文件夹,其中包括PDF和HTML格式的书籍。 除此之外,您也可以在该官网中找到由中文社区翻译的在线电子书版本。在该电子书中,您可以直接在线阅读和习。值得注意的是,该书籍的在线翻译版本可能会比英文原版稍有滞后。如果您想要阅读最新的内容,请下载英文原版或者在该官网上查看最新的更新。 ### 回答3: 深度学习是现在的热门话题之一。而动手深度学习v2是一本非常好的深度学习教材,旨在为做实际项目的习者提供知识技能和实战经验。为了下载此书,您需要按照以下步骤进行。 首先,您需要访问动手深度学习官方网站,网址为d2l.ai。然后,您需要找到下载页面,这个页面可以通过页面上的“全书下载”按钮或主页面上的一个标签来访问。 在下载页面,您需要选择您所需要的版本,v2版本是最新版本。接着,您需要选择您所需的格式。您可以选择PDF格式或HTML格式,下方还提供了在线阅读链接。 若您选择了PDF格式,则需要点击下载链接,页面会跳到GitHub仓库中。在GitHub页面,您需要选择ZIP文件并下载。下载完成后,您就可以在本地解压并阅读这本书了。 若您选择了HTML格式,则不需下载,只需点击在线阅读链接即可。页面会跳转到包含书籍所有章节、实例代码、作者笔记等信息的HTML页面,您可以任意阅读或者下载章节(在左侧点击对应章节)。 总之,动手深度学习v2是一本亲身实践的深度学习教材,其深入浅出的讲解以及丰富的实战案例,能够帮助初者快速掌握深度学习这一技术,同时也是深度学习领域专业人士的必备读物。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值