python
文章平均质量分 69
光电的一只菜鸡
个人技术交流群833459254
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
为什么深度学习中一般使用mean=[0.485, 0.456, 0.406]和std=[0.229, 0.224, 0.225]来归一化图像?
Q:图像预处理部分在resize后还会使用均值:image_mean=[0.485,0.456,0.406],标准差:image_std=[0.229,0.224,0.225]进行归一化,为什么使用这几个值?A:image_mean=[0.485,0.456,0.406]、image_std=[0.229,0.224,0.225]是Imagenet数据集的均值和标准差,使用Imagenet的均值和标准是一种常见的做法。如果你想在你自己的数据集上从头开始训练,你可以计算新的平均值和标准。原创 2025-09-08 18:13:09 · 361 阅读 · 0 评论 -
各深度学习框架优缺点
TensorFlow 的官网地址为 https://www.tensorflow.org/。TensorFlow 逐渐成为最流行的深度学习框架,目前在 GitHub 中已经有 1500 多个与深度学习相关的包中提到了 TensorFlow,而其中只有 5 个是谷歌公司官方提供的,可想而知它的应用是多么广泛。TensorFlow 在很大程度上推动了深度学习的发展,并成为这个行业的标准,目前可以说是深度学习的代名词了。原创 2025-09-08 10:33:01 · 1109 阅读 · 0 评论 -
对称量化和非对称量化
1][2]原创 2025-09-05 09:39:33 · 740 阅读 · 0 评论 -
合并golden、simulator、runtime精度日志
【代码】合并golden、simulator、runtime精度日志。原创 2025-09-04 10:55:54 · 233 阅读 · 0 评论 -
根据日志寻找精度爆炸层的脚本
【代码】根据日志寻找精度爆炸层的脚本。原创 2025-09-03 15:17:50 · 202 阅读 · 0 评论 -
npy可视化方法
npviewer 是一个应用程序,它允许您以热图的形式可视化 numpy 的 npy 文件中的数据。该应用程序根据不同的模式自动选择适当的维度进行显示。在桌面上打开npyviewr的快捷方式,并在地址栏输入要加载的文件目录或者npy文件即可。原创 2025-09-02 16:45:21 · 392 阅读 · 0 评论 -
onnx-graphsurgeon----ONNX计算图修改神器
作为深度学习用户,经常会听到ONNX、TensorRT等一系列常用的文件保存格式。而对于ONNX而言,经常我们会发现在利用TensorRT部署到NVIDIA显卡上时,onnx模型的计算图不好修改,在以前的操作中很多时候大佬是将onnx转换成ncnn的.paran和.bin文件后对.param的计算图做调整的。原创 2025-09-02 09:34:41 · 516 阅读 · 0 评论 -
onnx入门教程(七)——如何添加 TensorRT 自定义算子
在前面的模型入门系列文章中,我们介绍了部署一个 PyTorch 模型到推理后端,如 ONNXRuntime,这其中可能遇到很多工程性的问题。有些可以通过创建 ONNX 节点来解决,该节点仍然使用后端原生的实现进行推理。而有些无法导出到后端的算法,可以通过重写代码改变算法的实现过程,同样可以导出到 ONNX ,达到一致的效果。以上两种方式一般可以处理绝大多数的部署问题,同时也不需要向推理框架引入新的内容,是我们进行模型部署时候的优先选择。原创 2025-08-26 15:55:39 · 1074 阅读 · 0 评论 -
onnx入门教程(六)——TensorRT 模型构建与推理
TensorRT 是由 NVIDIA 发布的深度学习框架,用于在其硬件上运行深度学习推理。TensorRT 提供量化感知训练和离线量化功能,用户可以选择 INT8 和 FP16 两种优化模式,将深度学习模型应用到不同任务的生产部署,如视频流、语音识别、推荐、欺诈检测、文本生成和自然语言处理。TensorRT 经过高度优化,可在 NVIDIA GPU 上运行, 并且可能是目前在 NVIDIA GPU 运行模型最快的推理引擎。关于 TensorRT 更具体的信息可以访问 TensorRT官网 了解。原创 2025-08-26 15:42:47 · 891 阅读 · 0 评论 -
onnx入门教程(五)——实现 PyTorch-ONNX 精度对齐工具
精度对齐,是模型部署中重要的一个环节。在把深度学习框架模型转换成中间表示模型后,部署工程师们要做的第一件事就是精度对齐,确保模型的计算结果与之前相当。精度对齐时最常用的方法,就是使用测试集评估一遍中间表示模型,看看模型的评估指标(如准确度、相似度)是否下降。而在 PyTorch 到 ONNX 这条部署路线上,这种精度对齐方式有一些不便:一旦我们发现 PyTorch 模型和 ONNX 模型的评估指标有了出入,我们很难去追踪精度是在哪一个模块出了问题。原创 2025-08-26 15:32:09 · 984 阅读 · 0 评论 -
onnx入门教程(四)——ONNX 模型的修改与调试
在用 API 对 ONNX 模型进行操作之前,我们还需要先了解一下 ONNX 的结构定义规则,学习一下 ONNX 在 Protobuf 定义文件里是怎样描述一个神经网络的。回想一下,神经网络本质上是一个计算图。计算图的节点是算子,边是参与运算的张量。而通过可视化 ONNX 模型,我们知道 ONNX 记录了所有算子节点的属性信息,并把参与运算的张量信息存储在算子节点的输入输出信息中。事实上,ONNX 模型的结构可以用类图大致表示如下:如图所示,一个 ONNX 模型可以用 ModelProto 类表示。原创 2025-08-25 20:34:43 · 962 阅读 · 0 评论 -
onnx入门教程(三)——在 PyTorch 中支持更多 ONNX 算子
为了编写符号函数,我们需要获得 asinh 推理接口的输入参数定义。这时,我们要去 torch/_C/_VariableFunctions.pyi 和 torch/nn/functional.pyi 这两个文件中搜索我们刚刚得到的这个算子名。这两个文件是编译 PyTorch 时本地自动生成的文件,里面包含了 ATen 算子的 PyTorch 调用接口。经过这些步骤,我们确认了缺失的算子名为 asinh,它是一个有实现的 ATen 算子。我们还记下了 asinh 的调用接口。原创 2025-08-23 17:45:27 · 765 阅读 · 0 评论 -
onnx入门教程(二)—— PyTorch 转 ONNX 详解
在这一节里,我们将详细介绍 PyTorch 到 ONNX 的转换函数—— torch.onnx.export。我们希望大家能够更加灵活地使用这个模型转换接口,并通过了解它的实现原理来更好地应对该函数的报错(由于模型部署的兼容性问题,部署复杂模型时该函数时常会报错)。原创 2025-08-23 11:32:57 · 1523 阅读 · 0 评论 -
onnx入门教程(一):解决模型部署中的难题
直接使用 PyTorch 模型的话,我们修改几行代码就能实现模型输入的动态化。但在模型部署中,我们要花数倍的时间来设法解决这一问题。现在,让我们顺着解决问题的思路,体验一下模型部署的困难,并学习使用自定义算子的方式,解决超分辨率模型的动态化问题。刚刚的报错是因为 PyTorch 模型在导出到 ONNX 模型时,模型的输入参数的类型必须全部是 torch.Tensor。而实际上我们传入的第二个参数" 3 "是一个整形变量。这不符合 PyTorch 转 ONNX 的规定。我们必须要修改一下原来的模型的输入。原创 2025-08-23 11:17:09 · 998 阅读 · 0 评论 -
onnx入门教程(零):模型部署简介
在软件工程中,部署指把开发完毕的软件投入使用的过程,包括环境配置、软件安装等步骤。类似地,对于深度学习模型来说,模型部署指让训练好的模型在特定环境中运行的过程。因为这些难题的存在,模型部署不能靠简单的环境配置与安装完成。经过工业界和学术界数年的探索,模型部署有了一条流行的流水线:为了让模型最终能够部署到某一环境上,开发者们可以使用任意一种深度学习框架来定义网络结构,并通过训练确定网络中的参数。之后,模型的结构和参数会被转换成一种只描述网络结构的中间表示,一些针对网络结构的优化会在中间表示上进行。原创 2025-08-23 10:53:04 · 1049 阅读 · 0 评论 -
理解python中的self,这一篇就够了
理解python中的self,这一篇就够了原创 2024-09-07 16:19:12 · 225 阅读 · 0 评论 -
python网络爬虫(五)——爬取天气预报
本文介绍了使用中国气象局API获取天气预报数据并存储到MongoDB数据库的过程。主要内容包括:1)选择中国气象局免费API接口;2)搭建开发环境,安装requests库和配置MongoDB数据库;3)提供测试代码示例,展示如何获取并解析天气数据;4)列举了可能遇到的三个常见错误及其解决方法,包括charset-normalizer版本冲突、Mongo插件安装问题和MongoDB服务控制问题。文章为开发者提供了一个完整的天气预报数据采集与存储的技术方案。原创 2024-09-07 16:07:11 · 3395 阅读 · 5 评论 -
python网络爬虫(四)——实战练习
本次实践使用Python来爬取百度百科中《青春有你2》所有参赛选手的信息。https://baike.baidu.com/item/青春有你第二季普通用户:打开浏览器 --> 往目标站点发送请求 --> 接收响应数据 --> 渲染到页面上。爬虫程序:模拟浏览器 --> 往目标站点发送请求 --> 接收响应数据 --> 提取有用的数据 --> 保存到本地/数据库。原创 2024-08-31 18:51:53 · 2802 阅读 · 0 评论 -
python网络爬虫(三)——爬虫攻防
至此,很多读者会认为修改User-Agent很简单,但是正常人1秒钟看一张图,而爬虫1秒钟可以抓取好多张图,比如1秒钟抓取上百张图,那么服务器的牙利必然会增大。其原理也很简单,就是统计每个IP的访问频率,该频率超过阈值就会返回一个验证码,如果真的是用户在进行访问,用户就会填写验证码,然后继续访问,如果是代码在进行访问,就会被封掉IP。爬虫是模拟人的浏览访问行为,进行数据的批量抓取,当抓取的数据量逐渐增大时,会给被访问的服务器造成很大的压力,甚至有可能崩溃。原创 2024-08-31 17:39:44 · 1500 阅读 · 0 评论 -
python网络爬虫(二)——数据的清洗与组织
首先明确要提取的数据是标题和链接,标题在a标签中,提取标签的正文用get_text()方法;链接在a标签的href属性中,提取标签中的href属性用get()方法,在括号中指定要提取的属性数据,即get(‘href’)学会了网络爬虫发送请求后,我们可以获得一段目标的HTML代码,但是还没有把数据提取出来,接下来需要进行数据的清洗与组织。在Python中调用正则表达式时使用re库,这个库不用安装,可以直接调用。+:匹配前一个字符1次或多次。原创 2024-08-31 17:20:33 · 1303 阅读 · 0 评论 -
python网络爬虫(一)——网络爬虫基本原理
通过request库已经抓取到网页源码,接下来要从源码中找到并提取数据。Beautiful Soup是python的一个库,其主要功能是从网页中抓取数据。Beautiful Soup目前已经被移植到bs4库中,也就是说在导入Beautiful Soup时需要先安装bs4。安装好bs4库后,还需要安装lxml库。如果我们不安装lxml库,就会使用python默认的解析器。原创 2024-08-31 16:56:13 · 1774 阅读 · 0 评论 -
python网络爬虫(零)——认识网页结构
网页一般有三部分组成,分别是HTML(超文本标记语言)、CSS(层叠样式表)、JScript(活动脚本语言)原创 2024-08-31 14:44:31 · 1509 阅读 · 0 评论 -
使用清华源安装软件包
【代码】使用清华源安装软件包。原创 2024-07-16 21:56:51 · 549 阅读 · 0 评论 -
python学习之argparse模块
argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数。我们很多时候,需要用到解析命令行参数的程序。我们常常可以把argparse的使用简化成下面四个步骤。原创 2024-05-10 22:10:02 · 345 阅读 · 0 评论 -
MATLAB调用python
matlab调用python原创 2023-03-09 20:12:15 · 218 阅读 · 0 评论 -
python缩进相关问题
写Python程序的时候遇到和tabs、indentation有关的错误十有八九是缩进出了问题。有的解释器是会区分四个空格和一个tab的。有的时候从Git下载的代码常会出现这样的不匹配问题。就像这样第一行和第三行的缩进是由四个空格完成的,而第二行是一个tab,一眼看去根本看不出来,而等到出了错,再一个一个去改又很麻烦,所以我们可以在Notepad++里这样设置:视图——显示符号——显示空格和制表符这样缩进到底是四个空格还是一个tab就一目了然了...转载 2021-06-30 22:00:14 · 191 阅读 · 0 评论 -
pip管理工具
pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。pip 最常用命令显示版本和路径pip --version获取帮助pip --help升级 pippip install -U pip如果这个升级命令出现问题 ,可以使用以下命令:sudo easy_install --upgrade pip安装包pip install SomePackage # 最新版本pip insta原创 2021-05-31 18:03:09 · 402 阅读 · 0 评论 -
学习python(十八)——模块与包
1.模块Python提供了强大的模块支持,主要体现在,不仅 Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块。通过这些强大的模块可以极大地提高开发者的开发效率。那么,模块到底指的是什么呢?模块,英文为 Modules,至于模块到底是什么,可以用一句话总结:模块就是 Python程序。换句话说,任何 Python 程序都可以作为模块,包括在前面章节中写的所有 Python 程序,都可以作为模块。将 Python 代码写到一个文件中,但随着程序..原创 2021-02-04 20:33:09 · 199 阅读 · 1 评论 -
学习python(十七)——异常机制处理
0.编程错误编写程序时遇到的错误可大致分为 2 类,分别为语法错误和运行时错误。语法错误,也就是解析代码时出现的错误。当代码不符合 Python 语法规则时,Python解释器在解析时就会报出 SyntaxError 语法错误,与此同时还会明确指出最早探测到错误的语句。语法错误多是开发者疏忽导致的,属于真正意义上的错误,是解释器无法容忍的,因此,只有将程序中的所有语法错误全部纠正,程序才能执行。运行时错误,即程序在语法上都是正确的,但在运行时发生了错误。异常类型 含义 AssertionE原创 2021-02-04 20:06:07 · 236 阅读 · 0 评论 -
学习python(十六)——函数装饰器@
首先先来看一下这个代码:#funA 作为装饰器函数def funA(fn): #... fn() # 执行传入的fn参数 #... return '...'@funAdef funB(): #...实际上,上面程序完全等价于下面的程序:def funA(fn): #... fn() # 执行传入的fn参数 #... return '...'def funB(): #...funB = funA(f原创 2021-02-04 19:59:25 · 143 阅读 · 0 评论 -
学习python(十五)——迭代器与生成器
1.迭代器列式容器有一个共同的特性,它们都支持使用 for 循环遍历存储的元素,都是可迭代的,因此它们又有一个别称,即迭代器。从字面来理解,迭代器指的就是支持迭代的容器,更确切的说,是支持迭代的容器类对象,这里的容器可以是列表、元组等这些Python提供的基础容器,也可以是自定义的容器类对象,只要该容器支持迭代即可。如果要自定义实现一个迭代器,则类中必须实现如下 2 个方法:__next__(self):返回容器的下一个元素。 __iter__(self):该方法返回一个迭代器(itera..原创 2021-02-04 19:18:00 · 217 阅读 · 0 评论 -
学习python(十四)——类的特殊成员
1.__new__()方法__new__() 是一种负责创建类实例的静态方法,它无需使用 staticmethod 装饰器修饰,且该方法会优先 __init__() 初始化方法被调用。一般情况下,覆写 __new__() 的实现将会使用合适的参数调用其超类的 super().__new__(),并在返回之前修改实例。在 __init__() 不够用的时候使用 __new__() 。2.__repr__()方法通过重写类的 __repr__() 方法即可显示属性。默认情况下,__repr__(原创 2021-02-04 15:47:30 · 255 阅读 · 0 评论 -
学习python(十三)——枚举类
一些具有特殊含义的类,其实例化对象的个数往往是固定的,比如用一个类表示月份,则该类的实例对象最多有 12 个;再比如用一个类表示季节,则该类的实例化对象最多有 4 个。针对这种特殊的类,Python3.4 中新增加了 Enum 枚举类。也就是说,对于这些实例化对象个数固定的类,可以用枚举类来定义。如果想将一个类定义为枚举类,只需要令其继承自 enum 模块中的 Enum 类即可。例如:from enum import Enumclass Color(Enum): # 为序列值指定val.原创 2021-02-04 14:54:19 · 321 阅读 · 0 评论 -
学习python(十二)——继承
1.继承机制继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上添加一些成员(属性和方法),但又不想直接将现有类代码复制给新类。也就是说,通过使用继承这种机制,可以轻松实现类的重复使用。让 From 类继承 Shape 类,这样当 From 类对象调用 draw() 方法时,Python 解释器会先去 From 中找以 draw 为名的方法,如果找不到,它还会自动去 Shape 类中找。如此,我们只需在 From 类中添加计算面积的方法即可,示例代码如下:class Sh原创 2021-02-04 14:45:56 · 538 阅读 · 0 评论 -
学习python(十一)——类和对象
读者肯定听过Python中“一切皆对象”的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言。面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性。面向对象编程是程序员发展的分水岭,很多初学者会因无法理解面向对象而放弃学习编程。类和对象是 Python 的重要特征,相比其它面向对象语言,Python 很容易就可以创建出一个类和对象。同时,Python 也支持面向对象的三大特征:封装、继承和多态。面向对象编程(Object-or..原创 2021-02-03 14:32:33 · 346 阅读 · 2 评论 -
学习python(十)——eval()和exec()函数
eval() 和 exec() 函数都属于Python的内置函数,由于这两个函数在功能和用法方面都有相似之处。eval() 和 exec() 函数的功能是相似的,都可以执行一个字符串形式的 Python 代码(代码以字符串的形式提供),相当于一个 Python 的解释器。二者不同之处在于,eval() 执行完要返回结果,而 exec() 执行完不返回结果。eval() 函数的语法格式为:eval(source, globals=None, locals=None, /);而 exec() 函数...原创 2021-02-03 10:50:58 · 634 阅读 · 0 评论 -
学习python(九)——闭包函数与lamba
1.闭包闭包,又称闭包函数或者闭合函数,其实和前面讲的嵌套函数类似,不同之处在于,闭包中外部函数返回的不是一个具体的值,而是一个函数。一般情况下,返回的函数会赋值给一个变量,这个变量可以在后面被继续执行调用。闭包比普通的函数多了一个 __closure__ 属性,该属性记录着自由变量的地址。当闭包被调用时,系统就会根据该地址找到对应的自由变量,完成整体的函数调用。使用闭包,可以让程序变得更简洁易读。例如:现在要写一个求幂函数def power(number): def powerm原创 2021-02-02 18:38:16 · 294 阅读 · 0 评论 -
学习python(八)——函数
Python 还支持自定义函数,即将一段有规律的、可重复使用的代码定义成函数,从而达到一次编写、多次调用的目的。即允许我们将常用的代码以固定的格式封装(包装)成一个独立的模块,只要知道这个模块的名字就可以重复使用它,这个模块就叫做函数(Function)。其实,函数的本质就是一段有特定功能、可以重复使用的代码,这段代码已经被提前编写好了。直接通过起好的名字就可以调用这段代码。但需要注意的一点是,和其他编程语言中函数相同的是,Python 函数支持接收多个( ≥0 )参数,不同之处在于,Python 函数原创 2021-02-02 17:01:36 · 361 阅读 · 0 评论 -
学习python(七)——zip() 、reserved()、sorted()
1.zip() 函数zip() 函数是Python内置函数之一,它可以将多个序列(列表、元组、字典、集合、字符串以及 range() 区间构成的列表)“压缩”成一个 zip 对象。所谓“压缩”,其实就是将这些序列中对应位置的元素重新组合,生成一个个新的元组。和 Python 3.x 版本不同,Python 2.x 版本中的 zip() 函数会直接返回列表,而不是返回 zip 对象。但是,返回的列表或者 zip 对象,其包含的元素(都是元组)是相同的。zip() 函数的语法格式为:zip(iterab..原创 2021-02-02 16:42:18 · 2586 阅读 · 0 评论 -
学习python(六)——流程控制
0.前言(1)缩进执行第1条语句,然后是第2条、第3条……一直到最后一条语句,这称为顺序结构。Python是以缩进来标记代码块的,代码块一定要有缩进,没有缩进的不是代码块。另外,同一个代码块的缩进量要相同,缩进量不同的不属于同一个代码块。Python 要求代码块必须缩进,但是却没有要求缩进量,你可以缩进 n 个空格,也可以缩进 n 个 Tab 键的位置。但是从编程习惯的角度看,我建议缩进 1 个 Tab 键的位置,或者缩进 4 个空格;它们两者其实是等价的。Python 虽然不限制代码块的缩进量,.原创 2021-02-02 16:37:41 · 285 阅读 · 0 评论
分享