【DL学习笔记】DL入门指南

DL入门指南

资料课程

  1. 李沐老师 《动手学深度学习》
    https://tangshusen.me/Dive-into-DL-PyTorch/
  2. 李宏毅老师课程
    https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.php

DL入门必掌握知识点

  • 数据处理 : numpy、torch
  • 地址处理 : os、pathlib
  • 文件处理 : json、yaml
  • 命令行参数解析 :args
  • 获取时间 : time
  • 图片读取与可视化: PIL、cv2、matplotlib
  • 数据预处理与数据增强 :torchvision.transforms、cv2
  • 获取常用数据/处理数据 :torchvision.datasets、自定义dataset
  • 迭代batch数据 : torch.utils.data.DataLoader、自定义collate_fn
  • 模型搭建 : torch.nn、torch.nn.functional
  • 获取(预训练)模型 :torchvision.models
  • 保存日志 :tensorboard、logging
  • 优化器 :torch.optim
  • 学习率调度器 :torch.optim.lr_scheduler
  • 模型参数/checkpoint 保存与加载
  • 迁移学习:模型修改、参数冻结
  • 各任务常用损失函数
  • 各任务评价指标
  • 项目环境配置

入门算法

包括但不限于以下算法:
第一阶段 :LeNet、AlexNet、GoogleNet、VGG
第二阶段 :Resnet、DenseNet、Unet、FCN
第三阶段 :Faster RCNN、SSD、YOLO v3、self-attention、Vision Transformer(encoder-decoder模块)
第四阶段 : YOLO 系列 、 DETR 系列、(有兴趣的可以看 Mamba 系列)

入门评估

怎样才算入门?
1、掌握模型训练代码框架
2、熟悉各种常用数据集
3、无障碍预处理数据
4、玩转以 resnet 为 backbone 的各种迁移学习算法
5、熟悉图像分类任务、目标检测任务、语义分割任务的常用损失函数与评价指标
6、完全理解 Fater RCNN、SSD、YOLO v3、Attention 的理论,看懂并理解每一行代码

如何快速入门

1、入门有哪些东西需要学习
2、建议的学习步骤
3、相关的学习资料从哪获取

深度学习 想要快速入门,需从2个方面进行提升:

  • 理论知识 :多看 csdn、b站 等平台的 经典算法理论讲解
  • 代码能力 :动手临摹一些经典算法,这些算法基本都是开源的
    • Step 1 :动手临摹一些 简单的、经典的开源算法,(比如 LeNet、AlexNet、GoogleNet、VGG) ,务必搞懂每一行代码的作用与原理、整理自己的训练代码框架 训练代码框架
    • Step 2 :入门后,在代码能力提升阶段,多看别人的代码,碰到经常见到的、不熟悉的模块的使用,再进行资料查找并学习,整理自己的学习笔记 (功能模块代码)!一定要整理自己的学习笔记!

Step 1 : LeNet、AlexNet、GoogleNet、VGG 一定是你入门必学必临摹的算法

这个阶段的目标:

  • 熟悉整体的训练代码框架 训练代码框架、理解每一行代码的作用与原理
  • 掌握 torchvision 中的3个重要模块:torchvision.modelstorchvision.datasetstorchvision.transforms
  • 掌握如下知识点的理论与代码使用:
    • 简单的基础模型搭建
    • 模型查看
    • 如何直接从 torchvision.datasets 获取常用数据
    • 简单的使用 torchvision.transforms 进行图像预处理
    • DataLoader 的基础使用,参数功能掌握
    • 几种优化器的理论知,torch.optim 的模块使用
    • 学习率、梯度、反向传播的关系
    • 分类任务、目标检测任务、分割任务 常用的损失函数 理论与 相关pytorch类的使用

Step 2 :玩转常用数据集

熟悉常用数据集:MNIST、Flowers、CIFAR、MSCOCO、PascalVOC

根据每个数据集,整理你自己的 数据处理通用代码 :

  • 一方面,帮助你学习数据处理
  • 另一方面,方便之后复用

通过这个阶段,你的目标:

  • 熟悉各个数据集的:数据结构、支持的任务、图片大小、类别数
  • 数据读取库:PIL、cv2
  • 自定义 DataSet :3个必要的函数的使用: init()getitem()len()
  • 数据处理,数据增强 : 进一步 了解 torchvision.transforms 的使用
  • Dataloader 的使用,各个参数的含义
  • 数据可视化库:cv2、matplotlib

Step 3 : 玩转 Resnet

通过这个阶段的目标:

  • 完全理解 Resnet,以及 Resnet 的网络特点,知道怎么将它作为 backbone 提取 feature map
  • 迁移学习的各种技巧:修改网络,网络加载参数、冻结参数
  • 了解一些基础的 目标检测、语义分割的理论知识
  • 图像预处理/图像增强的技巧:针对不同任务,图像预处理/图像增强需要注意的点

Resnet 是最常用的 backbone,玩转它很有必要,学习内容:

  • 学习 Resnet 理论知识、临摹 Resnet 网络搭建
  • 在 Resnet 的基础上做迁移学习,再去学习一个以 Resnet 为 backbone 的网络
    • 图像分类:直接在 Resnet 网络上做修改,去训练一些 常用数据集(图像尺寸不易太小)
    • 目标检测:以 ResNet 为 backbone 的 YOLO v3
    • 语义分割:以 ResNet 为 backbone 的 FCN
  • 有时间再去学习一下 U-net 网络,对你网络搭建技巧有很大的帮助

Step 4 : 学习你研究方向相关的经典网络

比如 :Faster-RCNN、SSD、YOLO系列、self-attention

  • 学习你研究方向的 理论知识
    • 比如,什么是 one-stage,什么是 two-stage
    • 比如,end-to-end 的方法需要我们输出包括哪些内容
    • 比如,目标检测任务的目标是什么,图像分割任务的目标是什么
    • 比如,目标检测任务的评价指标 mAP 怎么计算,图像分割任务的评价指标是那几个
    • 比如,什么是 self- attention,什么是 cross-attention;
  • 提升代码能力,复现代码的时候,看到不了解的代码行,代码块,记录下来,去查资料学习,整理为自己的学习笔记。

算法学习流程

(1)先找1~2个 点赞多的视频 或者 博客看,了解一下算法的背景,做了啥,重点思想是什么
(2)然后去看论文,根据 abstract 部分,了解作者提出了哪些创新点;算法部分会仔细的看(一般是第3节、第4节),以及论文中贴出来的每张图 也会仔细的看
(3)再回头多找几个 博客或者视频看,看大家的理解是什么
(4)需要了解算法细节的,就翻代码,一边看一边随手画画数据处理流程图,帮助理清思路
(5)了解数据处理过程之后,再回头自己思考背后的思想,这么做的用意是什么,
(6)有觉得以后能用得上的代码,就整理到自己的代码库中,方便以后 control c + control v
(7)有需要就再多翻一翻论文,论文中总有 别人博客中没有提及到的细节
(8)看代码可以和看书一样,多看几遍,第一遍不需要多细,大概看个结构,一遍比一遍往细了看

想复现 却找不到源码

完美复现是一件非常非常困难的事情

1、github

  • 通过算法关键词搜索
  • 去各个作者的仓库中查看
  • 去 issue 中提问

2、paper with code 里面可能会有相关代码

3、kaggle 找相关数据集,看与这个数据集 相关的代码中是否有可参考代码。

4、其他方式 :

  • 在 stackoverflow 或其他平台进行提问
  • 如果是系列代码,去查看同系列其他代码
  • 给作者发邮件,去要代码
  • 问师兄师姐
  • 找相关方向的群组,群组内提问

如何仅下载GitHub项目的部分文件

1、Downgit
Downgit 地址 : https://minhaskamal.github.io/DownGit/#/home

将仓库中,需要下载的那一部分的根目录地址,粘贴到 DownGit,然后 download 即可

在这里插入图片描述
2、GitZip for github

GitZip for github 是 Chrom浏览器中的插件, 安装地址: https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn/related
在这里插入图片描述

用 Chrom 浏览器打开 Github 中的某目标仓库,仓库中的 文件/文件夹前面,就会显示出一个 checkbox,选中要下载的 文件/文件夹, 在右下角点击加载即可。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91631.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 uni-app 中进行路由跳转前的权限验证(检查用户是否登录)

使用场景: 适用于需要登录才能访问的 uni-app 应用保护需要认证的页面不被未授权用户访问统一处理路由跳转的权限控制 /utils/cookies.js下的部分代码内容: // #ifdef H5 import Cookies from js-cookie // #endif// ums const tokenKey user_center_to…

垃圾收集器ParNewCMS与底层三色标记算法详解

垃圾收集技术详解笔记 1. 分代收集理论 当前虚拟机的垃圾收集采用分代收集算法,根据对象存活周期将内存分为不同代区,以优化回收效率。 核心分区: 新生代(Young Generation):对象存活周期短,约9…

全排列(回溯算法)

本文参考代码随想录 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路 排列是有序的,在排列问题中不需要startIndex;但排列问题需要一个…

在线任意长度大整数计算器

具体请前往:在线大整数计算器--支持超大整数的加减乘除,幂运算/模运算,最大公约数,最小公倍数

AT6668B芯片说明书

这颗北斗专用单芯片解决方案AT6668B,采用射频前端与基带处理一体化设计,集成北斗二号/三号双模B1IB1C信号处理器。通过优化星历解码算法实现秒级卫星锁定,配合硬件加速的干扰监测模块,在电磁环境复杂的应用场景中仍可维持10Hz高频…

谷歌Chrome浏览器安装插件

因为google浏览器的应用市场(https://chrome.google.com/webstore/category/extensions)在国内无法访问,所以无法在线安装插件,这里提供开发者模式离线安装插件的方法。 1、下载crx脚本 谷歌浏览器的插件离线文件的扩展名为:crx(Firefox火狐浏览器的插件扩展名为fpi)。…

【制造】erp和mes系统建设方案(word)

第一部分 概述 第二部分 方案介绍 第三部分 系统业务流程 3.1 关键需求概括分析 3.1.1 销售管理方面 3.1.2 采购管理方面 3.1.3 仓库管理方面 3.1.4 财务管理方面 3.1.5 人力资源方面 3.2 关键需求具体分析 3.2.1 财务管理 3.2.1.1会计凭证解决 3.2.1.2钞票流…

Spring AI 系列之二十八 - Spring AI Alibaba-基于Nacos的prompt模版

之前做个几个大模型的应用,都是使用Python语言,后来有一个项目使用了Java,并使用了Spring AI框架。随着Spring AI不断地完善,最近它发布了1.0正式版,意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

IMAP电子邮件归档系统Mail-Archiver

简介 什么是 Mail-Archiver ? Mail-Archiver 是一个用于从多个 IMAP 账户归档、搜索和导出电子邮件的 web 应用程序。它提供了一种全面的解决方案,帮助用户管理和存储电子邮件。 主要特点 📌自动归档:自动归档进出邮件&#xff…

李宏毅深度学习教程 第6-7章 自注意力机制 + Transformer

强烈推荐!台大李宏毅自注意力机制和Transformer详解!_哔哩哔哩_bilibili 目录 1. 词嵌入&问题情形 2. self-attention 自注意力机制 3. 自注意力的变形 3.1 多头注意力(multi-head) 3.2 位置编码 3.3 截断自注意力&…

大模型幻觉的本质:深度=逻辑层次,宽度=组合限制,深度为n的神经网络最多只能处理n层逻辑推理,宽度为w的网络无法区分超过w+1个复杂对象的组合

大模型幻觉的本质:深度逻辑层次,宽度组合限制,深度为n的神经网络最多只能处理n层逻辑推理,宽度为w的网络无法区分超过w1个复杂对象的组合🧩 "深度逻辑层次"具体含义🔢 "宽度组合限制"具…

2419.按位与最大的最长子数组

Problem: 2419. 按位与最大的最长子数组 思路 子数组按位与的结果,不会超过子数组里的最大值(因为 a & b ≤ max(a, b))。 进一步推导,整个数组最大按位与的结果就是数组本身的最大值。 因为最大的那个元素自己作为子数组时&a…

智能时代:先管端点,再谈效率

为什么需要统一端点管理?在混合办公常态化、设备类型爆炸式增长的2025年,分散的端点如同散落各地的哨所。传统管理方式让IT团队疲于应对系统更新、漏洞修复、权限分配等重复劳动,不仅消耗60%以上的运维时间,更可能因响应延迟导致安…

Windows字体simsum.ttf的安装与Python路径设置指南

下载工具: https://fontforge.org/en-US/downloads/windows-dl/ 使用工具: 复制到c:\windows\fonts路径下面。 并复制到运行的python程序同一路径下。比如:c:\pythoncode\new\

GitHub下载项目完整配置SSH步骤详解

GitHub下载项目完整配置步骤(从零开始) 默认下好了git ,在文件夹中右键打开git bash , 如果没有请在csdn搜索教程 第一步:检查并清理现有SSH配置 # 进入.ssh目录 cd ~/.ssh# 备份并删除所有现有密钥(避免冲…

数据结构(9)栈和队列

1、栈 1.1 概念与结构 栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除的一端称为栈顶,另一端称为栈底。栈里面的数据元素遵循后进先出的原则。栈的底层实现一般可以使用数组或者链表来实现,但数组的…

湖北大学暑期实训优秀作品:面向美丽中国的数据化可视平台

开发背景2024年1月11日,《中共中央国务院关于全面推进美丽中国建设的意见》发布,明确了建设美丽中国的总体要求、主要目标和重点任务,为我国生态文明建设提供了顶层设计和行动指南。系统简介当前,中国正以空前的力度推进生态文明建…

Ubuntu系统VScode实现opencv(c++)随机数与随机颜色

在图像处理与计算机图形学中,随机数与随机颜色的生成常用于增强图像的多样性、可视化多个目标区域、模拟自然现象以及生成测试数据等任务。通过随机化元素的颜色、位置或形状,可以使程序在动态展示、调试输出、以及数据增强等方面更加灵活和丰富。例如&a…

机器学习、深度学习与数据挖掘:三大技术领域的深度解析

基本概念与历史沿革数据挖掘起源于20世纪90年代,是数据库技术、统计学和机器学习交叉融合的产物。它经历了从简单查询到复杂知识发现的演变过程,早期阶段主要关注数据存储和检索,随着IBM、微软等公司的推动,逐渐形成了完整的知识发…

MoR vs MoE架构对比:更少参数、更快推理的大模型新选择

Google DeepMind 近期发布了关于递归混合(Mixture of Recursion)架构的研究论文,这一新型 Transformers 架构变体在学术界和工业界引起了广泛关注。该架构通过创新的设计理念,能够在保持模型性能的前提下显著降低推理延迟和模型规…