Python 深度学习

article/2025/11/4 0:03:46

Pytorch

  • 一 、深度学习概览
    • 1、工具篇
    • 2、流程介绍
    • 3、基础知识(常用操作)
      • 1、数据结构类型
    • 4、常见名词概念
  • 二、深度学习Pytorch
    • 1、神经网络
      • 1.1 如何构建神经网络
      • 1.2 核心组件
    • 2、数据处理工具
      • 2.1 torchvision(可视化处理工具)
        • 2.1.1、torchvision.transforms
        • 2.1.2、torchvision.datasets
        • 2.1.3、torchvision.models
        • 2.1.4、torchvision.utils
      • 2.2 torch.utils.data
    • 3 、神经网络工具箱nn
      • 3.1 nn.Module模块
      • 3.2 nn.functional模块
    • 4 、优化器
      • 4.1 动态修改学习率参数
    • 5 、可视化工具(tensorboardX)
    • 6 、机器学习基础
      • 6.1 机器学习一般流程
      • 6.2 相关知识介绍
    • 7 、视觉处理基础
      • 7.1 卷积神经网络(CNN)
      • 7.2 卷积层
      • 7.3 池化层
  • 三、具体常用算法
    • 1、YOLOv5
    • 2、BEV感知算法
  • 四、相关工具及工具包配置环境
    • 待补充

一 、深度学习概览

1、工具篇

推荐10个好用到爆的Jupyter Notebook插件,让你效率飞起(先安装python,再安装pip)

2、流程介绍

请点击---->深度学习计算机视觉学习流程
在这里插入图片描述
在这里插入图片描述

请点击–> 深度学习模型训练全流程!
请点击–> 深度学习一般工作流程:
step 1、定义问题,收集数据集。
step 2、定义模型预测性能指标
step 3、确定模型评估方式
step 4、数据预处理
step 5、搭建模型
1、确定激活函数、损失函数
在这里插入图片描述
2、从简单结构开始逐步扩大模型规模
3、考虑正则化和dropout
step 6、交叉验证
step 7、测试集验证
注意:测试集性能和验证集性能相差较大,考虑采用更复杂的验证方法,如乱序重复K折交叉验证

3、基础知识(常用操作)

1、数据结构类型

请点击—> Tensor 常用操作
Pytorch基本变量类型FloatTensor与Variable

torch成员函数函数作用解释
torch.where(condition,a,b)torch.where()函数的作用是按照一定的规则合并两个tensor类型。输入参数condition:条件限制,如果满足条件,则选择a,否则选择b作为输出。注意:a和b是tensor.
torch.zeros(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)返回一个形状为为size,类型为torch.dtype,里面的每一个值都是0的tensor.
torch.full(size, fill_value, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)返回创建size大小的维度,里面元素全部填充为fill_value.
torch.ones(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)返回创建size大小的维度,里面元素全部填充为1.

4、常见名词概念

SOTA

Sota实际上就是State of the arts 的缩写,指的是在某一个领域做的Performance最好的model,一般就是指在一些benchmark的数据集上跑分非常高的那些模型。
SOTA model:并不是特指某个具体的模型,而是指在该项研究任务中,目前最好/最先进的模型。
SOTA result:指的是在该项研究任务中,目前最好的模型的结果/性能/表现。

Benchmark、Baseline

Benchmark和baseline都是指最基础的比较对象。你论文的motivation是想超越现有的baseline/benchmark,你的实验数据都需要以baseline/benckmark为基准来判断是否有所提高。唯一的区别就是baseline讲究一套方法,而benchmark更偏向于一个目前最高的指标,比如precision,recall等等可量化的指标。举个例子,NLP任务中BERT是目前的SOTA,你有idea可以超过BERT。那在论文中的实验部分你的方法需要比较的baseline就是BERT,而需要比较的benchmark就是BERT具体的各项指标。

迁移学习

迁移学习通俗来讲,就是运用已有的知识来学习新的知识,核心是找到已有知识和新知识之间的相似性,用成语来说就是举一反三。

泛化(Generalization)

模型的泛化能力通俗易懂的说就是模型在测试集(其中的数据模型以前没有见过)中的表现,也就是模型举一反三的能力

二、深度学习Pytorch

常用两个功能函数:dir() ; help()。
【目录】【中文】【deplearning.ai】【吴恩达课后作业目录】

Python深度学习基于PyTorch:第1章 NumPy基础
Python深度学习基于PyTorch:第2章 Pytorch基础
Python深度学习基于PyTorch:第3章 Pytorch神经网络工具箱
Python深度学习基于PyTorch:第4章 Pytorch数据处理工具箱

1、神经网络

1.1 如何构建神经网络

step 1:构建网络层:一般采用torch.nn.Sequential()来构建;
step 2:前向传播:定义forward函数。forward函数的任务需要把输入层、网络层、输出层链接起来,实现信息的前向传导。在forward函数中,有些层来自nn.Module,也可以使用nn.functional定义。来自nn.Module的需要实例化,而使用nn.functional定义的可以直接使用。
step 3:反向传播:在反向传播过程中,优化器是一个重要角色。pytorch常用的优化方法都封装在torch.optim里面。最常用的优化算法就是梯度下降法及其各种变种。所有的优化方法都是继承了基类optim.Optimizer。

优化方法优化器
随机梯度下降法torch.optim.SGD()
含有动量的 随机梯度下降法torch.optim.SGD()
Per-parameter adaptive learning rate methods(逐参数适应学习率方法)torch.optim.RMSprop()
Per-parameter adaptive learning rate methods(逐参数适应学习率方法)torch.optim.Adam()
torch.optim.Adadelta()
torch.optim.Adagrad()
以上优化器

nn.CrossEntropyLoss:

step 4:训练模型:缺省情况下,梯度是累加的,需要手工把梯度初始化或清零,调用optimizer.zero_grad()即可。如果希望用GPU训练,需要把模型、训练数据、测试数据发送到GPU上,即调用.to(device)。如果需要多GPU进行处理,可使模型或相关数据引用nn.DataParallel。
step 5:

1.2 核心组件

(1)层:神经网络的基本结构,将输入张量转换为输出张量。
卷积层:
全连接层:
Dropout层:
池化层:
隐含层:
(2)模型:层构成的网络。
(3)损失函数:参数学习的目标函数,通过最小化损失函数来学习各种参数。
(4)优化器:如何使损失函数最小,这就涉及优化器。常用的是4种。

2、数据处理工具

在这里插入图片描述一边用torch.utils.data.Dataset处理同一个目录下的数据。如果数据在不同目录下,不同目录代表不同类别(这种情况比较普遍),使用data.Dataset来处理就不很方便。不过,可以使用Pytorch另一种可视化数据处理工具(即torchvision)就非常方便,不但可以自动获取标签,还提供很多数据预处理、数据增强等转换函数。

2.1 torchvision(可视化处理工具)

torchvision是pytorch的一个图形库,它服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。torchvision有4个功能模块:model、datasets、transforms和utils。

2.1.1、torchvision.transforms

torchvision.transforms是pytorch中的图像预处理包。例如裁剪、旋转等。
一般用Compose把多个步骤整合到一起,transforms.Compose。
数据归一化处理transforms.Normalize。

2.1.2、torchvision.datasets

另说明: torch.utils.data包括Dataset(只负责数据的抽取,不能进行批处理)和DataLoader(不光可以批处理还能shuffle和并行加速)。
提供常用的数据集加载,设计上都是继承自torch.utils.data.Dataset。
torchvision学习之torchvision.datasets。 一些加载数据的函数及常用的数据集接口。
torchvision.datasets中包含了以下数据集:
(1)MNIST
(2)COCO(用于图像标注和目标检测)(Captioning and Detection)
(3)LSUN Classification
(4)ImageFolder
(5)Imagenet-12
(6)CIFAR10 and CIFAR100
(7)STL10

2.1.3、torchvision.models

PyTorch源码解读之torchvision.models
torchvision.models这个包中包含alexnet、densenet、inception、resnet、squeezenet、vgg等常用的网络结构,并且提供了预训练模型,可以通过简单调用来读取网络结构和预训练模型。

2.1.4、torchvision.utils

2.2 torch.utils.data

它包括以下4个类:
(1)Dataset:是一个抽象类,其它数据集需要继承这个类,并且覆写其中的两个方法( _ getitem 、_ len __)。
(2)DataLoader:定义一个新的迭代器,实现批量(batch)读取,打乱数据(shuffle)并提供并行加速等功能。
(3)random_split:把数据集随机拆分为给定长度的非重叠新数据集。
*(4)sampler:多种采样函数。

3 、神经网络工具箱nn

3.1 nn.Module模块

nn.Module是nn核心数据结构,它可以是神经网络的某个层(Layer),也可以是包含多层的神经网络。在实际应用中,最常见的做法是继承nn.Module,生成自己的网络/层。

3.2 nn.functional模块

两者区别: 具有学习参数的(例如,conv2d, linear, batch_norm)采用nn.Xxx方式。没有学习参数的(例如,maxpool、loss func、activation func)等根据个人选择使用nn.functional.xxx或者nn.Xxx方式。

4 、优化器

代码示例:

import torch.optim as optim
lr = 0.01
momentum = 0.5
optimizer = optim.SGD(model.parameters(), lr=lr, momentum=momentum)

4.1 动态修改学习率参数

修改参数的方式可通过修改参数optimizer.params_groups或新建optimizer。对于使用动量的优化器(momentum参数的sgd)可能会造成收敛中的震荡,所以建议采用修改参数optimizer.params_groups。

torch.unsqueeze(input, dim, out=None)  # 解压缩(升维)
torch.squeeze(input, dim = None, out = None) # 压缩(降维)
#####
torch.linspace(start, end, steps=100, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
# 函数的作用是,返回一个一维的tensor(张量),这个张量包含了从start到end,分成steps个线段得到的向量。

5 、可视化工具(tensorboardX)

tensorboardX功能很强大,支持scalar、image、figure、histogram、audio、text、graph、onnx_graph、embedding、pr_curve and videosummaries等可视化方式。

6 、机器学习基础

在这里插入图片描述

6.1 机器学习一般流程

明确目标收集数据(收集的数据尽量实现自动化、程序化)→输入数据数据探索与预处理(一般包括数据清理、数据转换、规范数据、特征选择等)→训练及测试算法或建模(不同方法来训练进而选取最优)→评估及优化模型(留出法、K折交叉验证、重复的K折交叉验证,若出现过拟合,尤其是回归类的问题,可用正则化方法来降低模型的泛化误差)

如何解决过拟合问题呢? 正则化是指在机器学习中,很多被显式地用来减少测试误差的策略。正则化旨在减少泛化误差而不是训练误差。正则化不仅可以有效降低高方差,还有利于降低偏差。
1、权重正则化
2、Dropout正则化
3、批量正则化
4、权重初始化

6.2 相关知识介绍

代价函数(cost function): 衡量模型预测出来的值 h(θ) 与真实值 y 之间差异的函数叫做代价函数J(θ)。
在这里插入图片描述

7 、视觉处理基础

7.1 卷积神经网络(CNN)

卷积神经网络是一种前馈神经网络。卷积神经网络由一个或多个卷积层和顶端的全连接层(对应经典的神经网络)组成,同时也包括关联权重和池化层(Pooling Layer)等。

7.2 卷积层

卷积层是卷积神经网络的核心层,而卷积又是卷积层的核心。卷积核(kernel)又称权重过滤器,简称为过滤器(filter)。常见卷积核有Horizontalfilter(水平边缘检测)、Verticalfilter(垂直边缘检测)、Sobelfilter(增强图像中心区域权重)。
1、卷积核
2、步幅(strides)
3、填充(padding)
4、激活函数
卷积神经网络与标准的神经网络类似,为保证其非线性,也需要使用激活函数,即在卷积运算后,把输出值另加偏移量,输入到激活函数,然后作为下一层的输入。
常用的激活函数有:nn.Sigmoidnn.ReLUnn.LeakyReLUnn.Tanh等。
ReLU是将所有的负值都设为零,相反,Leaky ReLU是给所有负值赋予一个非零斜率。
5、卷积函数
卷积函数是构建神经网络的重要支架,通常PyTorch的卷积运算是通过nn.Conv2d来完成的。
6、转置卷积(Transposed Convolution)在一些文献中也称为反卷积(Deconvolution)或部分跨越卷积(Fractionally-Strided)。转置卷积在生成式对抗网络(GAN)中使用很普遍。

7.3 池化层

池化(Pooling)又称下采样,通过卷积层获得图像的特征后,理论上可以直接使用这些特征训练分类器(如Softmax)。常用池化方法有3种:(1)最大池化;(2)均值池化;(3)全局最大池化。
池化的作用体现在降采样:保留显著特征、降低特征维度,增大感受野。
1、局部池化
2、全局池化
全局平均池化(Global Average Pooling,GAP)。GAP的优势在于:各个类别与Feature Map之间的联系更加直观(相比与全连接层的黑箱来说),Feature Map被转化为分类概率也更加容易,因为在GAP中没有参数需要调,所以避免了过拟合问题。GAP汇总了空间信息,因此对输入的空间转换鲁棒性更强。所以目前卷积网络中最后几个全连接层,大都用GAP替换。PyTorch虽然没有对应名称的池化层,但可以使用PyTorch中的自适应池化层(nn.AdaptiveMaxPool2d或nn.AdaptiveAvgPool2d)来实现。

三、具体常用算法

1、YOLOv5

详解:yolov5中推理时置信度,设置的conf和iou_thres具体含义
YOLOV5模型转onnx并推理

名称名词解释
Intersect over Union Threshold交并比阈值
Roboflow在线图像标注软件。目标检测中的数据格式转换工具
pipeline直译就是管线,也就是流水线,流程
mAP(Mean Average Precision)其中代表P(Precision)精确率。AP(Average precision)单类标签平均(各个召回率中最大精确率的平均数)的精确率,mAP(Mean Average Precision)所有类标签的平均精确率。
ONNX(Open Neural Network Exchange)开放神经网络交换格式,ONNX 模型一般用于中间部署阶段,起到要给中间翻译的作用。ONNX简明教程。
• Pytorch -> ONNX -> TensorRT
• Pytorch -> ONNX -> TVM
• TF –ONNX – NCNN
Pytorch -> ONNX -> tensorflow
protobufprotocol buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小、更快、更为简单。 protobuf详细介绍和使用 。protocol buffer 文本格式
Objective-C通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。
DLA深度学习加速器
TensorRTTensorRT是nvidia家的一款高性能深度学习推理SDK。此SDK包含深度学习推理优化器和运行环境,可为深度学习推理应用提供低延迟和高吞吐量。

2、BEV感知算法

BEV视觉3D感知算法梳理

四、相关工具及工具包配置环境

jupyter notebook创建/删除虚拟环境----都在命令行执行
(包含源码+模型数据)使用TensorFlow, ONNX和TensorRT加速深度学习推理
resnet为残差网络-resnet-50介绍(一)
庖丁解牛-Resnet50 深度剖析,细致讲解,深入理解
window10下在anconda中虚拟环境下离线安装pytorch

待补充

请点击–> 深度学习与计算机视觉系列(10)_细说卷积神经网络
请点击–> 11种主要神经网络结构图解

系统学习Pytorch笔记一:Pytorch的数据载体张量与线性回归
系统学习Pytorch笔记二:Pytorch的动态图、自动求导及逻辑回归
系统学习Pytorch笔记三:Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms)
系统学习Pytorch笔记四:模型创建Module、模型容器Containers及AlexNet网络搭建
系统学习Pytorch笔记五:nn的网络层介绍(卷积层,池化层,激活函数,全连接层等)
系统学习Pytorch笔记六:模型的权值初始化与损失函数介绍
系统学习Pytorch笔记七:优化器和学习率调整策略
系统学习Pytorch笔记八:Tensorboard可视化与Hook机制
系统学习Pytorch笔记九:正则化与标准化大总结
系统学习Pytorch笔记十: 模型的保存加载、模型微调、GPU使用及Pytorch常见报错

Protobuf的简单介绍、使用和分析


http://chatgpt.dhexx.cn/article/yGlnZkqF.shtml

相关文章

神经网络与深度学习作业8:RNN - 简单循环网络

1. 使用Numpy实现SRN import numpy as npinputs np.array([[1., 1.],[1., 1.],[2., 2.]]) # 初始化输入序列 print(inputs is , inputs)state_t np.zeros(2, ) # 初始化存储器 print(state_t is , state_t)w1, w2, w3, w4, w5, w6, w7, w8 1., 1., 1., 1., 1., 1., 1., 1.…

深度神经网络回归_深度神经网络

深度神经网络回归 深度神经网络 (Deep Neural Networks) A deep neural network (DNN) is an ANN with multiple hidden layers between the input and output layers. Similar to shallow ANNs, DNNs can model complex non-linear relationships. 深度神经网络(DNN)是在输入和…

DNN深度神经网络、RBM受限玻尔兹曼机、DBN深度置信网络

DNN前向传播算法和反向传播算法 感知机的模型大家都比较熟悉,它是一个有若干输入和一个输出的模型,如下图: 输出和输入之间学习到一个线性关系,得到中间输出结果: 接着是一个神经元激活函数: 从而得到我们想要的输出结果1或者-…

十道CSS+HTML高频企业级面试题

有句古话说得好,面试造火箭,工作拧螺丝。经历过职场的小伙伴都清楚,对于一般的工作需求,用不到太过高深的技术,但是,往往面试过程中,会进行所谓深层次的技术交流,所以,跳…

详细前端面试题HTML篇

CSS篇 JS篇 Vue篇 TypeScript篇 React篇 微信小程序篇 前端面试题汇总大全(含答案超详细,HTML,JS,CSS汇总篇)-- 持续更新 前端面试题汇总大全二(含答案超详细,Vue,TypeScript,React&…

前端面试题---html/css

文章目录 1. html标签的类型(head, body,!Doctype) 他们的作用是什么2. 在head标签里面的标签的作用分别是啥?3. 在 HTML 中插入 css 样式表的方法4. 比较插入 css 样式的链接方式和导入方式5. html5 新特性…

HTML 常见面试题

一、HTML5(超文本标记语言,第五次重大修改) 二、HTML5新特性 ①:新的语义标签 header footer nav aside article section ②:新的表单控件 calendar date time email url search ③:音频、视频(…

经典HTML前端面试题总结

经典HTML前端面试题总结 1. 1简述一下你对 HTML 语义化的理解?.1.2 标签上 title 与 alt 属性的区别是什么?1.3 iframe的优缺点?1.4 href 与 src?1.5 HTML、XHTML、XML有什么区别1.6 知道img的srcset的作用是什么?1.7 …

html相关面试题

html相关面试题 1.html和css中的图片加载与渲染规则是什么样的?2.title与h1的区别、b与strong的区别、i与em的区别?title 和 h1 的区别b 和 strong 的区别i 和 em 的区别最后 3.script 标签为什么建议放在 body 标签的底部(defer、async&…

html面试复习

目录 网页的显示过程 浏览器的渲染引擎 不同浏览器的内核 什么是标记语言(markup language ) 什么是超文本( HyperText ) 完整的html结构 文档声明 html元素 head元素 body元素 html元素 img标签 a标签 锚点链接 i…

HTML 面试题汇总

HTML 面试题汇总 1. 什么是 <!DOCTYPE>&#xff1f;是否需要在 HTML5 中使用&#xff1f; 参考答案&#xff1a; 它是 HTML 的文档声明&#xff0c;通过它告诉浏览器&#xff0c;使用哪一个 HTML 版本标准解析文档。 在浏览器发展的历史中&#xff0c;HTML 出现过很多个…

【2022前端面试】HTML面试题汇总(加紧收藏)

【2022前端面试】HTML面试题汇总&#xff08;加紧收藏&#xff09; 更新时间&#xff1a;2022年2月23日。 本文致力于建设前端面试题库&#xff0c;欢迎兄弟们投稿哈&#xff01; 引言 没办法&#xff0c;逃不过。看了很多面经和总结&#xff0c;时过一年&#xff0c;再次更新…

前端html+css+js面试题

HTML&CSS&#xff1a;对Web标准的理解&#xff08;结构、表现、行为&#xff09;、浏览器内核、渲染原理、依赖管理、兼容性、CSS语法、层次关系&#xff0c;常用属性、布局、选择器、权重、盒模型、Hack、CSS预处理器、CSS3、Flexbox、CSS Modules、Document flow、BFC、H…

10个最常见的HTML5面试题

本文为大家分享了最常见的10个HTML5面试题,希望大家喜欢。 问题1、新的 HTML5 文档类型和字符集是? 答:HTML5 文档类型很简单: HTML5 使用 UTF-8 编码。 问题2、HTML5 中如何嵌入音频? 答:HTML5 支持 MP3、Wav 和 Ogg 格式的音频,下面是在网页中嵌入音频。 问题3、H…

前端面试题 —— HTML

目录 一、src 和 href 的区别 二、对 HTML 语义化的理解 三、DOCTYPE(⽂档类型) 的作⽤ 四、script 标签中 defer 和 async 的区别 五、常⽤的 meta 标签有哪些&#xff1f; 六、HTML5 有哪些更新 八、行内元素有哪些&#xff1f;块级元素有哪些&#xff1f; 空(void)元素…

前端十五道html面试题

目录 01.说一下对语义化的理解&#xff1f;✅ 02.说一下iframe有哪些优点和缺点&#xff1f;✅ 03.DOCTYPE的作用&#xff1f;严格模式和混杂模式的区别&#xff1f; 04.说一下渐进增强和优雅降级的区别&#xff1f; 05. <!DOCTYPE html> 标签是否为 HTML 标签&#…

【前端面试题】01—42道常见的HTML5面试题(附答案)

HTML5为我们提供了更多的语义化标签、更丰富的元素属性&#xff0c;以及更让人欣喜的功能。但在面试中&#xff0c;HTML5部分的面试题主要考察应试者对HTML5API的掌握情况&#xff0c;这是HTML5的重点&#xff0c;也正是这些API推动了前端的发展。 这些新技术早已应用在很多大型…

28道HTML基础面试题及答案汇总

1、内元素和块级元素的区别&#xff1f; 行内元素&#xff1a;不会独立出现在一行&#xff0c;单独使用的时候后面不会有换行符的元素。eg&#xff1a;span, strong, img, a 等。这些元素&#xff0c;默认的高宽&#xff0c;总是其内容的高宽。并且&#xff0c;margin和padding…

HTML+CSS基础面试题总结

1. display:none; 和visibility:hidden;的区别 display:none; 彻底消失&#xff0c;释放空间。可能引发页面的reflow回流&#xff08;重排&#xff09;。 visibility:hidden; 就是隐藏&#xff0c;但是位置没释放&#xff0c;好比opacity:0; 不引发页面回流。 2.CSS 选择器权…

HTML面试题整理

HTML面试题整理 01.说一下对语义化的理解&#xff1f;✅ 对开发者友好&#xff0c;让人更容易读懂&#xff0c;利于代码可读性对机器友好&#xff0c;让搜索引擎更容易读懂&#xff0c;利于seo 02.说一下HTML5有哪些更新/新增&#xff1f;✅ 新增语义化标签&#xff0c;音频…