python
文章平均质量分 57
永力
这个作者很懒,什么都没留下…
展开
-
python中float32与float64强转偏差
torchpytorch中定义张量,要确定好正确的数据类型,否则会出现float32-float64之间的强转偏差,虽然误差很小,但是在某些场合(模型推理、imu预积分等)会出现比较大的累计误差。pytorch定义张量,默认的数据类型为torch.float32.g1 = torch.tensor([9.8065000000]) # 默认torch.float32print(format(g1.item(), '.10f'))# 9.8065004349g2 = torch.tensor([9原创 2023-02-28 10:45:13 · 629 阅读 · 1 评论 -
【yolov5】loss.py源码理解
yolov5的loss.py中的build_targets函数中由两处扩充正样本的地方:因为anchor有3个,所以将targets扩充成3份,每一份共享一个anchor;假设一共有20个targets目标框,则将目标数扩充至[3, 20],共60个目标;第一份的20个目标与第一个anchor匹配,第二份的20个目标与第二个anchor匹配,第三份的20个目标与第三个anchor匹配,那么会有一部分目标没有匹配上(目标框与anchor的宽比或高比超出阈值),则最后可能会只有30个目标匹配成功,剩余的ta原创 2022-04-23 23:41:32 · 2145 阅读 · 0 评论 -
pytorch中的normalize应用
torch.nn.functional.normalize(input, p=2, dim=1, eps=1e-12, out=None)其中,p表示范数(这里是2范数),dim表示计算范数的维度(默认为1),eps是为了防止分母为0;pytorch中的normalize函数本质上就是针对某个维度进行归一化,公式为:ν=νmax(∣∣ν∣∣p,ϵ)\nu = \frac{\nu}{max(||\nu||_p,\epsilon)}ν=max(∣∣ν∣∣p,ϵ)ν示例a = F.softmax(原创 2021-11-14 15:46:55 · 5468 阅读 · 0 评论 -
【opencv】pytorch->onnx->opencv模型推理
opencv的DNN推理模块是不直接支持pytorch训练出来的pth文件。一般来说,可以将pth文件转成onnx格式,再用opencv调用onnx文件,即可实现推理。pth文件转onnx文件时,因为onnx对于pth中某些定义的层是不支持的,难免会碰到一些问题。近期,对一些分割网络进行了部署,碰到的一些问题记录在下。RuntimeError: ONNX export failed: Couldn’t export operator aten::adaptive_avg_pool2donnx不支持原创 2021-08-28 17:40:43 · 3781 阅读 · 0 评论 -
py文件编译成so动态库
由于python设计的初衷是开源,因此py文件是可以直接看到源码的。但用在商业用途时,就需要对代码进行加密保护。本文使用Cython库将py文件编译成二进制so动态库,达到对python源码的保护。1. 安装Cythonpip install Cython2. 编译py文件生成so库Cython可以帮助程序带来性能的提升,主要原理是:先将py文件转换成c文件,再将c文件编译成so(Unix)或pyd(windows)。其带来的另一个好处是难以破解。from distutils.core impo原创 2021-04-20 14:54:58 · 886 阅读 · 1 评论 -
打印模型结构到文件中
看pytorch版的深度学习模型代码,打印出模型结构能更好、更快地理解模型。这只要短短的几行代码就可实现:with('model.txt','a') as f: # 打印模型到model.txt print(model, file = f) # 打印模型参数 for params in model.state_dict(): f.write("{}\t{}\n".format(...原创 2019-09-13 21:40:40 · 1250 阅读 · 0 评论 -
opencv-python之直方图相关操作
import cv2import numpy as npimport matplotlib.pyplot as pltpyimg_name = 'cat.jpg'img = cv2.imread(img_name,1)img = cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)# 1. 使用cv2.calcHist计算直方图,返回二维tuple''' ...原创 2019-09-13 20:15:54 · 254 阅读 · 0 评论 -
python中的深浅拷贝
# 1.赋值(引用) 并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,# 所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。# 2. 浅拷贝: 拷贝父对象,不会拷贝对象的内部的子对象。只拷贝浅层的对象# 3. 深拷贝: copy 模块的 deepcopy 方法# 将被复制对象完全再复制一遍作为独立的新个体单独存在。# 所以改变原有被复...原创 2019-08-28 17:20:53 · 68 阅读 · 0 评论 -
python零碎知识点(2019-08-16)
python零碎知识点(1)近来在复现Meta-SR,写这系列总结相当于备忘录,记录每天遇到的一些python语法知识点,为方便日后不断复习(小白在成长)1. open()函数open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。常见的写入模式:a如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如...原创 2019-08-16 17:39:59 · 271 阅读 · 0 评论 -
python零碎知识点(2019-8-19)
.item()一个元素张量可以用item()得到元素值,请注意这里的print(x)和print(x.item())值是不一样的,一个是打印张量,一个是打印元素: x = torch.randn(2, 2) print(x[1, 1]) print(x[1, 1].item())#结果tensor(0.4279)0.4278833866119385np.ran...原创 2019-08-19 10:17:23 · 125 阅读 · 0 评论