长期更新的一些 pytorch 知识点总结

2023-05-16

文章目录

    • Deep Learning
      • Basic
        • Metric
          • Accuracy 和 Precision
        • batchsize
        • 切 patch
        • 归纳偏置
        • pytorch 模型 cpu 和 gpu load--相互转换

Deep Learning

Basic

Metric

Accuracy 和 Precision

Ref: https://www.youtube.com/watch?v=hRAFPdDppzs
Ref: https://blog.csdn.net/hlzgood/article/details/110916942
accuracy 是准确率。是指 How close you can get to the correct result.测量值(或预测值)和实际值有多相近。通过计算测量值和实际值的误差函数,如计算均方根误差,均方根误差越接近 0,说明准度越高。换言之–准不准
precision 是精确度。是指 How consistent you can get that result.多个测量值(或预测值)互相之间有多相近。在所有预测出来的结果中,预测结果为正类的比例。通过计算测量值的离散程度,如计算测量值的标准差,标准差越小,说明测量值越集中,精度也就越高。换言之–稳不稳

batchsize

Ref: https://www.zhihu.com/question/32673260
当batch size比较小的情况下收敛变慢的主要原因是样本之间的局部variance增大,那么在保证variance reduction的情况下,其收敛率大大加快,理论上等价于一定范围内的更大batch size(一般为2个order以内),题主有没有考虑这种情况?另外batch size增大的情况下达到相同的精度所需epoch更多,是指相同学习率?除去内存开销以及分布式学习的开销以外,从最优化角度是可以在不同学习率下处理epoch找到等价解的。

切 patch

问下医学图像切patch的大致策略是什么?
Ref:https://www.zhihu.com/question/436498354
也就是用一个滑动窗口将二维或是三维的图像切分成许多大小一致的小块作为训练数据。这样一来图像大小得到了统一,并且小的patch相当于对图像局部的放大,降低显存并且大大丰富了数据集。

归纳偏置

我的理解:就像加入了先验,所以 CNN 的归纳偏置会更高,而 Transformer 低一些,那么对于场景变化适应性会更强,相当于对模型约束减小了。
Ref: https://blog.csdn.net/qq_39478403/article/details/121107057

在机器学习中,很多学习算法经常会对学习的问题做一些关于目标函数的必要假设,称为 归纳偏置 (Inductive Bias)。
归纳 (Induction) 是自然科学中常用的两大方法之一 (归纳与演绎,Induction & Deduction),指从一些例子中寻找共性、泛化,形成一个较通用的规则的过程。偏置 (Bias) 则是指对模型的偏好。

  • 通俗理解:归纳偏置可以理解为,从现实生活中观察到的现象中归纳出一定的规则 (heuristics),然后对模型做一定的约束,从而可以起到 “模型选择” 的作用,类似贝叶斯学习中的 “先验”。
  • 西瓜书解释:机器学习算法在学习过程中对某种类型假设的偏好,称为归纳偏好,简称偏好。归纳偏好可以看作学习算法自身在一个庞大的假设空间中对假设进行选择的启发式或 “价值观”。
  • 维基百科解释:如果学习器需要去预测 “其未遇到过的输入” 的结果时,则需要一些假设来帮助它做出选择。
  • 广义解释:归纳偏置会促使学习算法优先考虑具有某些属性的解。

CNN、RNN 和 attention

  • CNN 的 Inductive Bias 是 局部性 (Locality) 和 空间不变性 (Spatial Invariance) / 平移等效性 (Translation Equivariance),即空间位置上的元素 (Grid Elements) 的联系/相关性近大远小,以及空间 平移的不变性 (Kernel 权重共享) (但也有证伪的 证伪:CNN中的图片平移不变性 – 知乎,CNN为什么丢失了平移不变性?怎么保持? – 知乎)。
  • RNN 的 Inductive Bias 是 序列性 (Sequentiality) 和 时间不变性 (Time Invariance),即序列顺序上的时间步 (Timesteps) 有联系,以及时间变换的不变性 (RNN 权重共享)。
  • 注意力机制,也是基于从人的直觉、生活经验归纳得到的规则。

pytorch 模型 cpu 和 gpu load–相互转换

load 模型的时候,会有将模型加载到 cpu 还是 gpu 内存的区别。
会遇到这种问题。

RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location='cpu' to map your storages to the CPU.
  1. cpu -> cpu 或 gpu -> gpu:
model.load_state_dict(torch.load('model.pth'))
  1. cpu -> gpu
torch.load('model.pth', map_location= lambda storage, loc: storage.cuda(0)). 
  1. gpu 0 -> gpu 1
torch.load('model.pth', map_location={'cuda:0' : 'cuda:1'})
  1. gpu -> cpu
torch.load('model.pth', map_location= lambda storage, loc: storage)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

长期更新的一些 pytorch 知识点总结 的相关文章

  • Ubuntu18.04下更改apt源

    任意版本的系统代号 xff1a Ubuntu 12 04 LTS 代号为precise Ubuntu 14 04 LTS 代号为trusty Ubuntu 15 04 代号为vivid Ubuntu 15 10 代号为wily Ubuntu
  • C语言中数的二进制、八进制、十进制以及十六进制表示及输出

    以十进制数163为例 xff1a 二进制的英文是Binary xff0c 简写为B或BIN xff0c 所以163 61 0b10100011 xff08 前面加上 0b 或 0B xff09 八进制的英文是Octal xff0c 简写为O
  • java-字符串数组排序

    问题 43 代码 xff1a 创建一个长度是8的字符串数组 使用8个长度是5的随机字符串初始化这个数组 对这个数组进行排序 xff0c 按照每个字符串的首字母排序 无视大小写 注1 xff1a 不能使用Arrays sort 要自己写 注2
  • python 装饰器

    1 装饰器 装饰器 Decorators 是Python的一个重要部分 简单地说 xff1a 他们是修改其他函数的功能的函数 他们有助于让我们的代码更简短 xff0c 也更Pythonic xff08 Python范儿 xff09 大多数初
  • Java的俩个list之间比较,判断是否一致的方法

    前文 我看了一篇博客 xff0c 是关于判断俩个list的 看完之后我觉得可能并不是很好 结合他的思路 xff0c 我重新整理了一下代码 同时也看了看String中的equals的实现 原文是 xff1a https blog csdn n
  • ARP地址解析过程(同一子网和不同子网)

    人们最熟悉的网络可以说是以太网 xff0c 而且人们都知道 xff0c 每块网卡都有一个编号 xff0c 也就是网卡地址 xff08 称为MAC地址 xff09 xff0c 代表计算机的物理地址 另外 xff0c 网络中的每一台计算机都分配
  • (2)树莓派3B连接隐藏wifi网络

    连接隐藏wifi可以使用nano编辑器打开wpa supplicant配置文件 xff1a sudo nano etc wpa supplicant wpa supplicant conf 在文件底部添加 xff1a network 61
  • 获取本地外网ip的api接口

    开发时偶尔会需要前端传客户端的ip地址 xff0c 以下方法可以获取客户端外网ip 1 新增加载js方法 export const loadScript 61 src 61 gt return new Promise resolve rej
  • Ubuntu 18.04 配置ibus中文拼音输入法

    Ubuntu 18 04系统想安装中文输入法 xff08 利用ibus输入法配置 xff09 只要三步 注意 xff1a 你的Ubuntu需要可以上网 xff01 xff01 xff01 因为要下载一系列安装包 第一步 xff1a 首先需要
  • VMware安装Kali后黑屏 只有左上角光标

    在安装过程中选择安装GRUB引导程序 xff0c 默认是否 xff0c 我们需要选择是
  • vCenter Server目录/storage/core,/storage/log 空间不足问题解决

    概述 xff1a VC是7 0的 xff0c 存储警告 storage core及 storage log目录空间不足 xff1b 且出现VC web管理页面运行缓慢 xff1b 用途概述 storage core xff1a 存储来自vC
  • C#反编译利器--dotPeek

    在开发项目的时候 xff0c 当项目数量变大 xff0c 源代码管理也是一件非常头疼的事 xff0c 如果没有专门的人员来管理代码 xff0c 没有code review机制的话 xff0c 代码很容易乱 xff0c 这就会导致现场的代码与
  • C/C++调用Rust编写的动态库

    目录 C C 43 43 调用Rust编写的动态库一 背景二 解决方案三 测试3 1 正确性检验3 2 内存安全检验 C C 43 43 调用Rust编写的动态库 一 背景 Rust通过大量的编译期检查能够有效避免程序运行时出现的各种内存问
  • 计蒜客习题-班长竞选 最小割 “二选一 方案不同有额外开销”模型

    设源点S xff0c 汇点T 对于所有赞成的人 从S连一条边到他们对应的点上 容量设为1 对于所有反对的人 从他们对应的点上连一条边到T 容量为1 对于所有有朋友 关系的a和b 在他们之间连一条无向边 容量为1 最小割可以用dinic跑出来
  • 百度之星2020 初赛第三场

    Discount Accepts 1432 Submissions 2728 Time Limit 2000 1000 MS Java Others Memory Limit 65536 65536 K Java Others Proble
  • 快速幂取模_C++

    一 题目背景 已知底数a xff0c 指数b和模数mo xff0c 求ans 61 ab mo 二 朴素算法 就是暴力啦 1 void power int a int b int mo 2 long long ans 61 1 3 for
  • python抓取Windows系统内存和CPU占用率

    python抓取Windows系统内存和CPU占用率 主要参考来源 xff1a https www jianshu com p 23c2a518019a 1 源代码 cpuget py from time import sleep strf
  • 汇编语言(十)——条件判断指令

    首先了解按位指令 xff0c 这里使用的技术也可以用于操作硬件设备控制位 xff0c 实现通信协议以及加密数据 xff0c 操作说明AND源操作数和目的操作数进行逻辑与操作OR源操作数和目的操作数进行逻辑或操作XOR源操作数和目的操作数进行
  • [Altium Designer] AD PCB中相同模块的布局布线方法(Room Copy方法)

    最近画的一个板子 xff0c 有12路4 20mA采集电路 xff0c 每一路的元件都是一样的 xff0c 恰好板子空间也够 xff0c 就想着能不能画好一个之后其他的可以 照抄 xff0c 网上查了一圈还真有 xff0c 那就是 Room
  • 【实用教程】VSPD虚拟串口工具——从此告别硬件串口调试

    modbus测试工具链接 xff1a https blog csdn net byxdaz article details 77979114 1 下载VSPD工具 VSPD下载链接 xff0c 点击这里直接下载 2 安装 解压后的安装包是这

随机推荐