- 博客(25)
- 收藏
- 关注
原创 C++面向对象编程之多态
C++多态是面向对象编程的核心特性,分为编译时多态(函数重载)和运行时多态(虚函数)。运行时多态通过虚函数表实现,允许基类指针调用派生类的重写函数。使用override关键字可避免重写错误,纯虚函数定义抽象接口。关键要点包括:必须使用虚析构函数确保正确释放资源;C++11引入的final关键字可禁止继承或重写;typeid和dynamic_cast支持运行时类型识别。多态提高了代码复用性、扩展性和维护性,适用于需要统一接口处理不同对象或实现工厂模式等场景。
2025-10-16 15:49:49
428
原创 C++中的类
摘要:C++中的类是面向对象编程的核心,通过封装数据(成员变量)和行为(成员函数)实现模块化设计。类包含访问修饰符(private/public/protected)、构造函数/析构函数、this指针、静态成员等特性,支持继承、多态、友元和运算符重载等面向对象特性。示例代码展示了类的定义、静态成员初始化和对象创建过程,演示了封装、继承和静态成员等关键概念。类作为C++的基础构建块,是实现代码复用、抽象和软件系统组织的重要工具。
2025-10-14 11:44:42
317
原创 使用NNCF[openvino]对模型进行训练后量化
后,模型性能相差无几,推理速度降低。nncf还有一些其他的模型量化策略,以上代码只是一部分,在实际应用中验证可行。个人实践中曾碰到过模型基本构建块为。r,模型性能下降,推理速度略微增加,将。函数还包含一些其他可调的参数,对于。r结构,但将自注意力模块修改为了由。组成,其他不变,没有设置。类模型,需要调整一个。
2025-10-12 20:28:37
725
原创 深度学习模型量化技术简介
文章摘要: 量化是将高精度数值映射到低精度的优化技术,用于减少模型计算和存储开销,提升推理速度。主要包括静态量化(离线校准参数)和动态量化(实时计算参数)。按时机分为训练后量化(PTQ)(无需重训练,但可能损失精度)和量化感知训练(QAT)(训练中模拟量化,精度更高但成本高)。PTQ适合快速部署,QAT适用于高精度需求场景。动态量化常用于RNN/Transformer模型,静态量化多用于CNN。量化技术广泛应用于移动端、边缘计算等资源受限环境。
2025-10-12 19:59:39
1351
原创 深度学习模型剪枝技术简介
结构化剪枝是一种重要的模型压缩技术,能够在不显著降低模型性能的前提下,显著减少计算资源的需求。相比非结构化剪枝,它的优势在于能够更好地适配现有的硬件架构,从而实现更高效的推理。总结来说, 非结构化剪枝是一种细粒度的模型压缩技术,虽然在理论上可以实现更高的压缩率,但在实际应用中面临硬件支持不足的问题。因此,它通常与其他模型压缩技术结合使用,以达到最佳效果。
2025-10-12 19:51:58
570
原创 C++中的头文件和源文件
/ 假设我们直接定义所有内容:// 在多个地方都需要这个函数声明// 声明1return 0;void log_message(const std::string& message) { // 定义// 在另一个函数中又需要声明// 声明2 - 重复!// ❌ 没有头文件的类使用问题:class Student { // 必须在每个使用的地方都定义类private:int age;public:// 如果多个文件需要使用Student,每个文件都要重复类定义!
2025-10-11 14:41:13
957
原创 DETR目标检测算法
DETR源码中提供了两种位置编码,第一种非常接近于原始Transformer论文中的位置编码""""""eps = 1e-6return pos第二种是绝对位置编码""""""return pos。
2025-10-11 14:14:23
540
原创 C++中的命名空间
namespace MyNamespace { // 使用namespace关键字定义一个命名空间// 命名空间中定义变量void print() { // 命名空间中定义一个函数class MyClass { // 命名空间中定义一个类// 类定义。
2025-10-10 16:03:35
324
原创 C++中的头文件保护
C++头文件保护技术简介:为防止头文件重复包含导致的编译错误,C++提供两种保护方式:1)传统的#ifndef/#define/#endif宏组合,通过检查唯一宏名实现;2)简洁的#pragma once指令(非标准但广泛支持)。两种方式各有优劣,传统方法兼容性更好,#pragma once更简洁高效。现代项目可考虑同时使用两者,或转向C++模块特性。良好实践要求所有头文件必须包含保护机制,这对代码健壮性和编译效率至关重要。
2025-10-10 10:19:46
597
原创 Pytorch数组的索引类型限制
摘要 在实现Mask2Former实例分割时,使用torch.uint8类型的labels数组计算类别损失会报索引错误。这是因为PyTorch要求索引张量必须是有符号整数类型(如torch.int64或torch.int32),而torch.uint8作为无符号整数类型不被支持。将labels改为torch.int64类型后问题解决。这种限制与索引可能为负数的需求一致。
2025-09-29 08:51:38
169
原创 Python中的抽象类、抽象方法、抽象属性
摘要:Python通过abc模块实现抽象类机制,包含抽象方法、抽象属性的定义。抽象类继承ABC基类,不能被实例化;子类必须实现所有带@abstractmethod装饰的抽象方法,具体类需完整实现父类抽象成员,若子类未完全实现抽象成员,则自动成为抽象类。该机制强制规范子类接口,确保多态行为一致性。
2025-08-15 11:31:49
374
原创 Python将项目依赖导出到requirements.txt
摘要 Python项目依赖管理有三种主要方法:1)使用pip freeze导出全部安装包到requirements.txt;2)使用pipreqs只导出项目实际使用的包;3)使用conda命令导出完整环境配置到environment.yml文件。conda环境文件包含环境名称、Python版本、所有依赖包及其版本、来源渠道等信息,支持跨平台还原完整环境,特别适合科学计算项目。通过conda env create/update命令可基于该文件创建或更新环境,比requirements.txt更全面可靠。
2025-08-12 10:51:01
429
原创 git的基本使用
一般情况下,我们都是从远程的master或main分支克隆到本地master或main分支,开发时,一般是先切出一个新的分支,在新的分支上进行修改,确定修改无误后再合并到本地的master或main分支,然后提交到本地,再推送到远程分支。在修改项目代码之前,我们需要将远程分支上的内容更新到本地仓库,这样可以避免他人的修改内容与自己的修改内容之间产生冲突。
2024-07-29 20:39:44
195
原创 pandas中的索引与选择
看完上面的内容,有没有发现,其实上述讲到的方法可以简单的分为以下几类,只不过索引的选择会决定获取到的结果pandas数据选择总结方法概述使用 [pos/indexl]此方式不能同时进行行选加列选,当传入的是一个位置切片时,表示选择行,且选择行时必须传入一个切片,当传入的是索引时,表示选择列,此方式无法获取标量使用 df.loc[row, col]
2024-07-23 21:31:51
2430
原创 pandas查看数据信息
从csv或excel等格式文件中读取了数据到pandas的DataFrame中,但是却不知道读取的数据是怎样的,想知道读取的数据是什么形式、包含哪些信息、有哪些数据类型,怎么办?使用df.head()方法。
2024-07-23 15:27:11
527
原创 从形状或值创建numpy的ndarray
下方函数中dtype参数表示创建的数组的元素类型,order参数的可选值为{'C', 'F'},默认为'C',该参数表示内存中的多维数据是按行主序(C 风格)还是列主序(Fortran 风格)存储。like参数表示一个引用对象,用于创建非 NumPy 数组,如果传入的类数组支持 __array_function__ 协议,结果将由它定义,在这种情况下,它将确保创建一个与通过该参数传递的数组对象兼容的数组对象。返回一个新数组,该数组具有给定的形状和类型,并使用指定的fill_value值填充数组元素。
2024-07-19 15:58:36
214
原创 pandas中DataFrame对象的属性
index表示DataFrame对象的行标签,用于标识DataFrame对象的每一行。获取DataFrame对象中每一列的数据的类型,返回值是一个Series对象,该Series的索引为原DataFrame的columns属性,值为每一列的数据的数据类型,混合类型的列使用object dtype 保存。columns表示DataFrame对象的列标签,用于标识DataFrame中的每一列,常用于DataFrame对象列的索引和对齐,可以使用该属性修改DataFrame的columns属性值。
2024-07-17 16:28:46
645
原创 Pandas数据结构之DataFrame选择、删除、添加列
在pandas中可以使用类似于字典的方式来对DataFrame中的列对象进行选择、添加、删除。
2024-07-16 12:34:52
861
原创 Pandas数据结构之创建DataFrame
DataFrame 是一种二维标签数据结构,其中的列可以是不同的类型。可以把它想象成电子表格或 SQL 表,或者是一个包含一系列 Series 对象的 dict。一般来说,它是最常用的 pandas 对象。与 Series 一样,DataFrame 也接受多种不同类型的输入。
2024-07-16 10:42:20
1869
原创 Pytorch实现遥感图像场景分类
遥感图像的场景分类属于一个多分类问题,毕竟不可能只有两个场景,数据集可以直接获取,pytorch提供了一些图像分类相关的模型如ResNet、VGG、Inception等网络,可以直接获取,当然也可以自己设计,此处我们直接使用ResNet50版本,需要注意的是,需要针对使用的数据集的具体分类数调整ResNet50的num_classes参数,即控制输出通道数以匹配自己使用的数据集的类别数。
2024-07-15 12:00:03
1470
原创 Pandas数据结构之Series对象
Series是一个一维标签数组(也就是带索引的数组,轴标签统称为索引index),可以存放任何数据类型如:整形、字符串、浮点数、python对象等。Series的基本创建方法为),如果没有指定index,则默认为[0,1,2,...,len(data) - 1]data。
2024-07-14 22:04:50
421
1
原创 PyTorch以及Numpy中的广播机制
广播是PyTorch以及Numpy中的一个重要机制,很多人在学习PyTorch以及Numpy的时候往往对广播机制一掠而过,最终只是略懂皮毛,然而在实际中,如果不能全面的了解广播机制,可能很多可以并行执行的操作自己在实现时往往叠加了多层for循环,看别人的源码往往百思不得其解,本人也受过对广播机制一知半解的毒害。本文的目的在于全面的掌握广播机制到底如何执行,至于广播机制是什么之类的概念则不涉及。
2024-07-14 16:58:56
364
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅