首先先说明第一个答案,也就是PyTorch中卷积层的计算方法,其实这点很多人可能在书上已经看过图了,我只是用代码复现一遍

我们把所有变量都明确,首先是输入变量,我们设为2 * 2的全1矩阵,如下:

然后初始化一个二维卷积层,并输出其weight和bias,如下:

我们可以看到,weight和bias都有两个值,这是因为我们定义了输出通道为2,所以给我们分配了两个卷积核,然后可以看到权值分别为0.7843和0.51,bias分别为0.7589和0.4449,然后我们把input输出进去看看输出值,如下图:


输出的为两个22的tensor,我来解释一下它们怎么来的,首先两个tensor还是因为我们定义的输出通道为2,如果是图片的话,就会输出两张卷积过后的图片(是不是非常熟悉),然后0.154 = 0.7843(weight) 1 + 0.7589(bias),后面的同理,四个都一样是因为卷积核是1*1大小的,具体的计算方法理解了可以套到更大size的卷积核中。


这是第一点,计算方法跟逻辑回归很像,不难理解,一直让我弄不懂的是另外一个问题,那就是weight和bias是怎么来的?是PyTorch固定分配的?我查阅了很多资料,最后才找到答案:通过一个公式再加上这两个步骤随机生成的

先看PyTorch给出的计算公式,其实会很懵,懵的话没关系,我们直接看更下面的源码:

源码:

我们来根据上面我们的例子计算一下,n = in_channels,那我们的n就等于1,因为我们的输入维度是1 * 1 * 2 * 2,这里第一个值是batchsize,也就是你输入了多少个input,第二个就是我们的输入通道,ok,看下一步,我们的kernel_size为1,所以n乘到最后还是等于1,sqrt(1)等于1(开平方根),所以stdv还是等于1。。。。

ok然后就是初始化了,可以看到weight和bias都是初始化为-1到1之间的随机数,如下:

至此,我们知道了卷积的计算方法,也知道了卷积核中的值是怎么来的,你是不是对卷积这一整个步骤都有了更深层次的理解了呢?

三分钟完全了解PyTorch中卷积层内部计算方法和权值初始值的来历,让你对模型有更深层次的理解相关推荐

  1. Pytorch中卷积层转向全连接层时,全连接层输入维度的确定

    Pytorch中卷积层转向全连接层时,全连接层输入维度的确定 一.代码法: 改变的AlexNet网络结构: AlexNet 二.公式法: 一.代码法: 改变的AlexNet网络结构: 输入维度为 ( ...

  2. pytorch中卷积层的使用方法

    1. 官方文档解释 如图为卷积层的参数汇总: 1.kernel_size: 指卷积核,一般情况下定义大小,这里我们只需要定义其size,而对于其中的参数会自动进行采样,会在训练过程中不断的进行调整. ...

  3. pytorch基于卷积层通道剪枝的方法

    pytorch基于卷积层通道剪枝的方法 原文:https://blog.csdn.net/yyqq7226741/article/details/78301231 本文基于文章:Pruning Con ...

  4. 三分钟了解,阁中物电商是什么样的平台

    三分钟了解,阁中物电商是什么样的平台 阁中物优享商城,于2020年创办研发"阁中物"商城APP是一家以会员制为模式的生活商城分享平台. 由福建名企古韵阁拍卖有限公司入资创办古韵阁拍 ...

  5. PyTorch构建卷积层

    PyTorch构建卷积层 二维图像卷积 一. 二维卷积层的实现 1. 手动实现二维卷积层 2. Pytorch的卷积层API实现 二. 二维卷积层的填充和步幅 二维图像卷积 使用全连接层来处理图片时, ...

  6. CNN中卷积层、池化层和全连接层分别有什么作用和区别?

    卷积层:提取特征."不全连接,参数共享"的特点大大降低了网络参数,保证了网络的稀疏性,防止过拟合.之所以可以"参数共享",是因为样本存在局部相关的特性. 池化层 ...

  7. 【转】刨根究底CSS(2):CSS中的各种值——初始值,就是默认值吗?

    先问个非常简单的问题,这个问题的答案,相信大部分Web开发人员都自认为显而易见,但却又多半会答错:CSS属性中的初始值(initial value),就是默认值(default value)吗? 难道 ...

  8. 二维数组各行分别求和_【PyTorch入门】之十分钟看懂二维卷积层的运算、实现及应用...

    原文链接: [动手学深度学习笔记]之二维卷积层​mp.weixin.qq.com 1.二维卷积层 本节介绍卷积神经网络中最常见的二维卷积层.二维卷积层常用来处理图像数据,它具有两个空间维度(高和宽). ...

  9. 学习观察神经网络:可视化整个模型训练中卷积层的激活

    全文共3425字,预计学习时长10分钟 图源:www.raincent.com 深度学习是机器学习领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标--人工智能. 深度学习是学习样本数据的 ...

最新文章

  1. java设计模式教程_Java设计模式教程
  2. Hibernate常用的Java数据类型映射到mysql和Oracle
  3. spi总线 上层调用_spi总线设备驱动分析
  4. 2D-六边形瓦片地图的随机生成
  5. python求三个整数最大值_python 练习题:定义一个getMax()函数,返回三个数(从键盘输入的整数)中的最大值。...
  6. java新职篇:面向对象之抽象
  7. 自动化测试(二)如何用python写一个用户登陆功能
  8. c语言void swap1,C语言的一些遗留问题(1):关于交换两个数的swap()函数的一些问题...
  9. grub4dos linux live,Grub4DOS 正常引导 Ubuntu 16.04 镜像文件
  10. 声声慢 - 程序人生(程序员生活的真实写照)
  11. AC Dream1069
  12. Centos6 密钥登陆,解决所选的用户密钥未在远程主机上注册
  13. windows 7z命令行压缩
  14. 云中网络的隔离:GRE、VXLAN
  15. 沐风:了不起的便利店
  16. OpenLayers实现小车的轨迹查询的功能
  17. js求两圆交点_如何求两个圆的交点坐标,请举例
  18. 关于几款主流的发行版Linux纵向测评(centOS,Ubuntu,deepin,manjaro)
  19. 英雄远征(9:20--11:29)30级体验
  20. android高仿ios控制中心,高仿ios控制中心安卓版

热门文章

  1. Python自动化二--jmeter分布式测试,抓包,python语法基本介绍
  2. 安卓开发1-质量管理app-技术预演
  3. Hadoop源码分析21:namenode概要
  4. easyui layout 收缩的bug
  5. oracle产生随机日期,Oracle生成随机日期时间
  6. java充血模型orm框架,关于领域驱动设计和贫血、失血、充血模型
  7. linux中如何自定义命令行,linux终端颜色和命令行自定义
  8. 迁移实战:一次AntDB(基于pgxl分布式架构的数据库)数据库迁移经验分享
  9. 连载一:Oracle迁移文档大全
  10. 来了!PostgreSQL 同步流复制原理和代码浅析,请签收