神经元

本博客所说的神经元指的是输入输出矩阵的数,每一个数就算一个神经元,而不是权重参数(也可以理解为kernel)。

卷积操作


一次扫描:生成一张新特征图 先生成与原特征图数量相等的kernel,kernel一般是1 * 1,3 * 3这种
生成卷积要kernel对应元素相乘,然后加和,就生成了一块新的神经元,以此类推,3个原特征图各被扫描一次生成了三个扫描后的图,这三个扫描后的图相加就生成了一张新的特征图。

注意
相加操作在扫描中被用了两次,三个扫描后的图相加可能造成数字量级变大,可以用bn缓解
步长默认为1
总共的kernel=生成一张特征图的kernel新特征图总数
kernel=原特征图总数
新特征图总数
每一次扫描对于不同图来说kernel都是不一样的,也就是kernel的有效期就只是对一张图扫一次,这也是为什么生成一张新特征图要len(原特征图)个kernel。

残差结构

见菜菜sklearn,李牧ai

我对于残差理解的话就是我不知道网络多少层深是最好的,所以我先让网络变得很深,然后根据学习自动地去使一部分层失效,就可以学习到一个最佳的层深,也就是所说的残差网络可以缓解层加深带来的网络退化问题。

假如正常净果变换层x变为H(x),那么我要让这层失效,就是经过这一层还输出x,就要拟合一个函数使x=H(x),这个事情不好办,我想要的是如果这一层所有权重都为0时失效,也就是完全输出0,这样的权重也就是H(x)很好得到,就权重都为0就好了(我认为网络初始权重也都是在0附近,这也是为什么选择0让网络失效,因为失效变得更加容易,不需要太多甚至不需要梯度下降就能做到,且计算也会更快),所以我就在层输出F(x)上加x得到最终输出h(x),当我这一层不想要时直接权重全变为0,也就是H(x)输出0,此时最终输出就是x,也就是残差让一层失效变得简单了

需要注意F(x)和x要能对应元素相加,要size相同,要满足频道数相同,特征图大小肯定是相同的,因为kernel=3,padding=1,这样。要满足频道数相同就对x使用1*1卷积核进行卷积,变得和F(x)通道数相同就好了

这种情况下输出size肯定是不变的,想降采样该变可以修改stride

矩阵乘法

内积=点积=np.dot

条件:矩阵的size必须相等,不相等使用广播

两种算法(理解方式),在矩阵真正运算使用的是第二种

由几何表示可知内积(点积)也是在判断两个向量的相似度

A(3,5) B(3,5)的点积=A(BT),T代表转置,结果R(3,3),每一个元素就是A的样本对应B的样本的内积

矩阵乘法有许多特殊的含义,

矩阵乘法=点积(相似度),=MLP,=全连接层,=线性层,=权重加和(权重加和可以解释一切),都是由简单的矩阵乘法来实现的,而矩阵乘法的本质就是维度的转换,也说明了特征提取的本质

矩阵乘法与仿射变换

矩阵乘法不完全等于仿射变换,仿射变换是矩阵乘法+矩阵加法,当然同样也能理解成全连接或者MLP

全连接神经网络FC与多层感知机MLP的关系

全连接神经网络=多层感知机MLP=线性层,两个做的都是一样的事情,都是将1条数据内部的特征进行提取形成新的特征,特征得提取是不与其他数据进行交互的,如下图layer是数据,,也就是神经元。由上一节知二者=矩阵乘法

都是size=1的kernel生成

不同的是放入MLP的是[batchsize,channel,x,y]的数据

linear可以放[batchsize,x,y,channel]的数据,linear的优点在于不用麻烦地去变换维度,比MLP是更方便的

input*W,四组加权求和得到4个结果。

上面二图是等价的,本质实现的最终实现方式都是矩阵乘法。都是一个原理,沿着特征的方向全部扫过去,沿着数据的方向相加,得到最终结果。

关于MLP,对不同条目同一个特征用的是相同的kernel参数,也就是一轮扫描对于不同条目用到的参数是一样的(可以说从来没有说在一轮中不同条目用到了不同参数的,不可能的),且并行地对对不同条目同一个特征进行扫描,然后条目内加和。

学习率调度LR

MultiStepLR

pytorch动态调整学习率torch.optim.lr_scheduler.MultiStepLR()_岁月神偷小拳拳的博客-CSDN博客

使用方法很简单,只有两行相关代码,控制初始化和学习率变动。

是在optimizer创建之后执行,因为第一个参数就要传入优化器

    optimizer = torch.optim.SGD(model.parameters(), lr=args.base_lr, momentum=args.momentum, weight_decay=args.weight_decay)#使用动量和权重衰减scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[int(args.epochs*0.6), int(args.epochs*0.8)], gamma=0.1)

在第60%个epoch时学习率乘以gamma,80%再来一次

之后要改变学习率那就调用scheduler.step()

scheduler.step() #学习率改变成下一个epoch的学习率

Poly策略

pytorch动态调整学习率之Poly策略_gz7seven的博客-CSDN博客

在power为0.9的时候,epoch增大,

假设为a,a 减小 ,pow(a,0.9)在减小,因为a大于0时,pow(a,0.9)为增函数,前面学习率下降快,后面下降慢。

不同层,channel的所在位置

bn层,channel总是在第二个位置

linear,channel总是在最后位置

relu任意

offset和batch的两种数据训练格式

比如我有点集p,特征x,有两个batch,第一个为[3,3],第二个为[4,3]

使用offset的话还有offset=[3,7],点集合在一起为[7,3],

对于linear,relu都是无所谓的,这两种方式进入该层都是无所谓的,因为linear每一个点操作独立,relu对每一个单元的数据独立。

batchnorm的话对每一个特征独立,比如是offset也就是[7,3],那么每一个特征都是[7],对于常规的,就是[3],[4],这么看都是完全一样的,我以xyz为特征,那么无论怎么样,取得的都是所有点的x,y,z,而与是否是offset型和普通型无关。

PyTorch深度学习笔记相关推荐

  1. PyTorch深度学习笔记之四(深度学习的基本原理)

    本文探讨深度学习的基本原理.取材于<PyTorch深度学习实战>一书的第5章.也融入了一些自己的内容. 1. 深度学习基本原理初探 1.1 关于深度学习的过程的概述 给定输入数据和期望的输 ...

  2. pytorch深度学习笔记(一)

    深度卷积神经网络(AlexNet) 在2012年前,图像特征都是机械地计算出来的.事实上,设计一套新的特征函数.改进结果,并撰写论文是盛极一时的潮流.SIFT [Lowe, 2004].SURF [B ...

  3. Pytorch深度学习笔记(七)逻辑斯蒂回归

    目录 1. logistic(逻辑斯蒂)函数 2.二分类任务(binary classification)损失函数 3.二分类任务(binary classification)最小批量损失函数 4.逻 ...

  4. Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合

    目录 一.损失函数 二.交叉熵损失函数详解 1.交叉熵 2.信息量 3.信息熵 4.相对熵(KL散度) 5.交叉熵 6.交叉熵在单分类问题中的应用 7.总结: 三.过拟合和欠拟合通俗解释 1.过拟合 ...

  5. Pytorch深度学习笔记(四)梯度向下算法

    目录 (1)梯度向下算法思想 (2)模型公式 (3)代码实现 (4)优化算法:指数加权均值 (5)随机梯度下降 课程推荐:03.梯度下降算法_哔哩哔哩_bilibili 优化问题:求误差值函数最小的权 ...

  6. 深度学习笔记其五:卷积神经网络和PYTORCH

    深度学习笔记其五:卷积神经网络和PYTORCH 1. 从全连接层到卷积 1.1 不变性 1.2 多层感知机的限制 1.2.1 平移不变性 1.2.2 局部性 1.3 卷积 1.4 "沃尔多在 ...

  7. 深度学习笔记其三:多层感知机和PYTORCH

    深度学习笔记其三:多层感知机和PYTORCH 1. 多层感知机 1.1 隐藏层 1.1.1 线性模型可能会出错 1.1.2 在网络中加入隐藏层 1.1.3 从线性到非线性 1.1.4 通用近似定理 1 ...

  8. 深度学习笔记其七:计算机视觉和PYTORCH

    深度学习笔记其七:计算机视觉和PYTORCH 1. 图像增广 1.1 常用的图像增广方法 1.1.1 翻转和裁剪 1.1.2 改变颜色 1.1.3 结合多种图像增广方法 1.2 使用图像增广进行训练 ...

  9. 深度学习笔记其六:现代卷积神经网络和PYTORCH

    深度学习笔记其六:现代卷积神经网络和PYTORCH 1. 深度卷积神经网络(AlexNet) 1.1 学习表征 1.1 缺少的成分:数据 1.2 缺少的成分:硬件 1.2 AlexNet 1.2.1 ...

最新文章

  1. express 使用 redirect 对 ajax 无效 页面不跳转
  2. VTK:Utilities之PCAStatistics
  3. img加载不出来,给个默认图片。
  4. mysql scrapy 重复数据_小心避坑:MySQL分页时使用 limit+order by 会出现数据重复问题...
  5. 树和二叉树2——输出广义表形式(带括号)二叉树
  6. 鸡蛋掉落(动态规划)
  7. Qt开发的超轻量http server
  8. vue项目中如何下载excel表格模板
  9. go beego在apache服务器上域名配置 --小丑
  10. github标准pull request提交流程
  11. 学霸(bushi)读python3
  12. 从零到壹搭建一个商城架构--k8s集群安装
  13. 解决for循环有时只输出最后一个结果
  14. 敬业签苹果ios手机便签里的完成记录如何筛选查看
  15. JSON与fastjson
  16. 解决ubuntu键盘乱码问题
  17. 如何使用NC进行通信
  18. android 复制,粘贴
  19. class_create函数源码分析
  20. 算法与数据结构(三) 时间复杂度分析 [例题]

热门文章

  1. 中国帐篷和庇护所行业市场供需与战略研究报告
  2. uboot启动流程详解(3)-cpu_init_cp15
  3. 这个是干货,好久没和大家见面了,一直在学,但是Python犹如大海,无尽无止
  4. 【深度探究css】--- vertical-align
  5. SecureCRT常用Linux命令,SecureCRT 常用命令
  6. 加入新版必应(New Bing)出错的解决方法
  7. 成都榆熙电子商务有限公司:运费险理赔难吗?
  8. 这些 Linux 问题,我猜你一定不知道!
  9. springboot使用ServletFileUpload上传文件
  10. 容斥原理·Gym101350G·Snake Rana