- 博客(219)
- 收藏
- 关注
原创 Prim算法实现最小生成树
Prim算法是一种用来寻找图的最小生成树的贪心算法。最小生成树是连接图中所有顶点的边的子集,这些边的权重总和最小,且形成一个树形结构,包含所有顶点。
2024-10-11 17:10:23
368
原创 有向有权图的单源最短路径算法实现(Dijkstra)
Dijkstra算法适用于解决有权图的单源最短路径问题,因此边的权重可以不同。Dijkstra算法通过维护一个优先队列来选择当前最短路径长度最小的顶点,并更新其邻居节点的最短路径长度。
2024-10-11 14:19:56
249
原创 有向无权图的单源最短路径算法实现
在无权图中,单源最短路径问题通常可以通过广度优先搜索(BFS)算法来解决。BFS是一种基于队列的图遍历算法,它从源点开始,逐层扩展,直到找到目标节点或遍历完所有节点。由于无权图中所有边的权重相同,BFS能够保证找到的路径是最短的。BFS算法的时间复杂度为O(V+E),其中V是图中顶点的数量,E是边的数量。由于BFS访问每个顶点和边的次数最多为一次,因此在无权图中效率较高。
2024-10-11 12:38:59
409
原创 std::list
std::list是C++标准库中的一个序列容器,它提供了双向链表的功能。std::list允许在序列的任何位置高效地插入和删除元素,而不会引起其他元素的移动,这使得std::list在需要频繁插入和删除操作的场景中非常有用。
2024-10-09 10:15:19
786
原创 构造函数和析构函数
在这个示例中,当Resource的对象res被创建时,构造函数被调用,当res离开作用域时,析构函数被调用以释放资源。同样,当Person的对象p被创建时,构造函数被调用,程序结束时,析构函数被调用。构造函数是一种特殊的成员函数,用于在创建对象时初始化对象。它具有与类名相同的名称,并且不返回任何值,也没有返回类型。构造函数可以重载,以允许不同类型的初始化。析构函数是一种特殊的成员函数,用于在对象的生命周期结束时进行清理工作。它具有与类名相同的名称,但前面有一个波浪号(~),并且不返回任何值,也没有参数。
2024-10-05 18:23:56
304
原创 迭代器
在C++中,迭代器是一种抽象概念,用于遍历容器中的元素。迭代器提供了一种标准的方法来访问容器中的元素,而不需要了解容器的内部结构。迭代器可以被视为指向容器中元素的指针,并且它们支持多种操作,如递增、递减、解引用等。迭代器通常与容器类一起使用,如std::vector、std::map、std::set等,不同的容器可能支持不同类型的迭代器。++iterator:将迭代器向前移动到下一个元素。–iterator:将迭代器向后移动到上一个元素。*iterator:访问迭代器当前指向的元素。
2024-10-04 23:11:24
473
原创 std::string
std::string对象通常包含了一个指向堆上分配的内存的指针,用于存储较长的字符串。较短的字符串可能会直接存在对象本身的内部缓冲区,有些实现还会使用一个独立的缓冲区来存储字符串内容。std::string(const std::string& str):拷贝构造函数,深拷贝。append(std::string& other):在字符串末尾添加一个字符串。swap(std::string& other):交换两个字符串的内容。std::string():默认构造一个空字符串。
2024-10-04 22:21:26
1083
原创 std::set
std::set用于存储唯一的元素,并且这些元素会根据键的顺序自动排序。与std::map不同,std::set只存储键,而不存储键值对。std::set(const std::set& other):拷贝构造函数,深拷贝。count(const key_type& k):返回指定键的元素数量(总是0或1)swap(std::set& other):交换两个set的内容。find(const key_type& k):查找指定键的元素。std::set():默认构造一个空的集合。
2024-10-03 23:38:57
659
原创 std::map
正如std::vector包含在< vector >头文件中,std::map包含在< map >头文件中。然而在某些特定情况下,例如需要快速的插入和删除操作,并且不需要元素的顺序关系时,可能会有更合适的选择。map(const map& other):复制构造函数,创建一个新的map,包含另一个map的所有元素。find(const key_type& key):查找指定键的元素,返回指向该元素的迭代器。map():默认构造函数,创建一个空的std::map对象。size():返回map中元素的数量。
2024-10-03 17:12:37
946
原创 std::vector
std::vector(std::vector&& other) noexcept:移动构造函数,将另一个已存在的vector对象的资源移动到新创建的vector中,而不是进行深拷贝。std::vector(const std::vector& other):拷贝构造函数,深拷贝,会复制other中的元素,并存储到新的向量中。std::vector(size_type n, const T& value = T()):构造一个包含n个具有value值的元素的向量。
2024-10-01 17:46:34
951
原创 网络是怎样连接的
此外,有时并不需要从最上级的根域开始查找,因为DNS服务器有一个缓存(可以将使用过的数据存放在离使用该数据的地方较近的高速存储装置中,以便提高后续的访问速度)功能,可以记住之前查询过的域名,如果要查询的域名和相关信息已经在缓存中,那么就可以直接返回响应,接下来的查询可以从缓存的位置开始向下进行。对于连接接入网的部分来说,由于要连接的线路数量很多,所以路由器需要配备大量的端口,但能传输的网络包数量相对比较少,这是因为接入网的速率比互联网核心网络要低,因此端口多且价格便宜的路由器适用于这些场景。
2024-09-02 22:01:25
2289
原创 CSS
CSSCSS 简介CSS 基础选择器标签选择器类选择器id 选择器通配符选择器CSS 字体属性字体类型字体大小字体粗细字体样式字体复合属性CSS 文本属性文本颜色文本对齐文本装饰文本缩进行间距CSS 的引入方式内部样式表(嵌入式引入)行内样式表(行内式引入)外部样式表(链接式引入)Emmet 语法快速生成 HTML 结构语法快速生成 CSS 样式语法CSS 的复合选择器后代选择器子选择器并集选择器伪类选择器链接伪类选择器focus 伪类选择器CSS 的元素显示模式块元素行内元素行内块元素元素显示模式的转换C
2024-08-12 12:46:53
463
1
原创 网页的相关概念
HTML 指的是超文本标记语言(Hyper Text Markup Language),它是用来描述网页的一种语言。网页是构成网站的基本元素,通常由图片、链接、文字、声音、视频等元素组成。网页是由网页元素组成的,这些元素利用 html 标签描述出来,然后通过浏览器解析来显示给用户看。网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。网页是网站中的一页,通常是 HTML 格式的文件,需通过浏览器来阅读。Web 标准主要包括结构、表现和行为三个方面,其中结构是最重要的。
2024-07-27 16:33:28
409
原创 排序算法
内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序一个算法花费的时间与算法中语句的执行次数成正比,对算法的时间频度Tn就得到了算法的时间复杂度Ofn)),比如Tn3n27n6=>On2O1Olog2nOnOnlog2nOn2On3OnkO2n一个小技巧是记住下面的典型代码结构,就可以快速判断一段代码的时间复杂度。1.常数阶O。
2024-07-16 15:49:57
1059
原创 人工智能发展史
这个模型与麦卡洛克和皮茨设计的简单神经元模型基本相同,只是对输入信号的权重进行了些许调整,权重值可以在-1到1之间浮动,此外它的阈值也是可以调整的。这个模型把真实神经元的工作方式在极大程度上进行了简化:每个人工神经元都会接受几个输入信号(用二进制表示,1代表输入,0代表没有输入),总输入信号是这几个信号的加权(乘上1或是-1)再求和。如果把这些单独的人工神经元用正确的方法连接起来,即上游神经元的输出值可以作为下游神经元的输入值的话,即便这些神经元的功能极为简单,它们也可以像简单的逻辑电路一样工作。
2024-07-09 20:20:06
521
原创 知识点杂记
但是在类中,以双下划线开头的变量、函数会触发名称改编,以避免子类对基类中私有成员的直接访问,因此在外部调用时需使用。实例方法是最常用的方法类型,至少接受一个名为 self 的参数,代表类实例本身。以单下划线开头的变量、函数、类在名义上都属于私有,即建议我们不要在作用域外部去调用,但并没有强制规定,依然可以在作用域外部调用。,用于判断某个表达式的值是否为 True,如果为 True,则程序继续运行, 否则程序停止运行,并抛出。类方法可以在不创建类实例的情况下被调用,并且可以访问类属性和类方法。
2024-06-28 10:55:34
828
1
原创 YOLOv1 中的一些计算
非极大值抑制的思想很简单,对于某一类别目标的所有边界框,先挑选出得分最高的边界框,再依次计算其他边界框与这个得分最高的边界框的 IoU,超过设定的 IoU 阈值的边界框则被认为是重复检测,将其剔除。但 YOLOv1 并没有采取如此简单的做法,YOLOv1 不仅希望边界框的置信度能够表征网格是否包含目标中心点,同时也希望边界框的置信度能表征所预测的边界框的定位精度。损失函数的第三、四行,计算的是置信度损失,第三行表示的是正样本的置信度损失,第四行表示的是负样本的置信度损失,它们俩不会同时计算;
2024-06-27 17:57:52
1110
原创 在 Visual Studio 2022 中配置 OpenCV
打开系统属性窗口 -> 高级 -> 环境变量 -> 在系统变量表中找到 Path 变量 -> 双击 Path -> 新建 -> 输入以下路径 -> 点击确定完成系统环境配置。环境配置完成后,可使用如下代码进行测试,验证 OpenCV 是否配置成功。最后,点击右下角的应用和确定,完成环境配置。右键项目名,然后点击属性,出现配置窗口。Win+R 打开运行窗口 -> 输入。
2024-06-11 12:03:08
702
3
原创 ResNet-18
由于第 2、3、4 个 layer 的第 1 个 block 会进行下采样,因此这些 block 的输入在进行残差连接时,会进行一次步长为 2 的 1*1 卷积,以保证进行残差连接的 block 输入在通道数和特征图大小方面都与输出一致。第 1 个 layer 没有下采样,其他 3 个 layer 中的第 1 个 block 的第 1 个卷积层会进行一次下采样(即 stride=2);此外,模型的第一个卷积层会进行一次下采样,并有一个最大池化层也会进行一次下采样;
2024-06-05 16:06:05
1347
原创 *args 与 **kwargs
是一个特殊的语法,用于表示函数定义或调用时的可变参数列表(variable argument list)。这里的星号(*)表示 “任意数量”,而。是 “arguments”(参数)的缩写。在函数调用时,可以通过 * 操作符将序列(列表、元组、字符串等)中的元素解包为位置参数。时,它表示函数可以接受任意数量的关键字参数,并将它们作为字典接收。是一个常用的语法,用于表示函数调用时的关键字参数(keyword arguments)。时,它允许你传递任意数量的命名参数,这些参数在函数内部可以作为一个字典来访问。
2024-06-03 15:58:00
324
1
原创 卷积神经网络中间层特征图的可视化
如果 PIL Image 属于 (L, LA, P, I, F, RGB, YCbCr, RGBA, CMYK, 1) 中的一种图像类型,或者 numpy.ndarray 的数据类型是 np.uint8,则将像素值从 [0, 255] 归一化到 [0.0, 1.0],这是通过将每个像素值除以 255 来实现的;图片经过 ReLU 层后,得到的特征图大小为:torch.Size([1, 8, 960, 960])图片经过卷积层后,得到的特征图大小为:torch.Size([1, 8, 960, 960])
2024-05-21 15:39:03
618
原创 YOLOv1~YOLOv9
表征能力更强的 RepBi-PAN Neck 网络有效的多尺度特征融合网络对目标检测的效果尤为关键。特征金字塔网络(FPN)通过自上而下的路径融合来自主干网络不同 Stage 的输出特征,以弥补网络学习过程中目标位置信息的损失。鉴于单向信息流传输的局限性,PANet 在 FPN 之上添加了一个额外的自底向上路径。BiFPN 为不同的输入特征引入了可学习的权重,并简化了 PAN 以实现更好的性能和更高的效率。PRB-FPN 通过具有双向融合的并行残差 FPN 结构来保留高质量的特征,以进行准确定位。
2024-05-17 12:02:55
1005
3
原创 gst-play-1.0
在使用 gst-play-1.0 之前,确保你的系统已经安装了 GStreamer 1.0 库及其插件。如果你在使用 gst-play-1.0 时遇到问题,可能需要安装额外的 GStreamer 插件。gst-play-1.0 是 GStreamer 多媒体框架中的一个命令行工具,用于播放多媒体文件。gst-play-1.0 命令提供了多种选项来自定义播放行为,如指定播放元件、调整音量、循环播放等。此外,GStreamer 社区提供了大量的文档和插件,可以帮助你解决各种多媒体处理的问题。
2024-04-29 15:42:51
1056
1
原创 pacmd
pacmd 提供了丰富的命令和选项,可以用于各种复杂的音频管理任务。此外,不同的 PulseAudio 版本可能会有不同的命令和选项,因此在使用时请参考相应版本的 PulseAudio 文档。PulseAudio 是一个跨平台的、开源的音频系统,为音频设备提供了高级的声学功能,如音频流的路由、混音、同步等。查看音频流信息:查看当前活动的音频流和它们的属性。日志级别:设置 PulseAudio 的日志级别。配置音频设备:修改音频设备配置,如设置默认设备。列出音频设备:显示所有已识别的音频设备。
2024-04-29 15:34:46
546
2
原创 开发板登录方式及文件传输
(secure copy)是一个在 Linux 和 Unix 系统中用于安全文件传输的命令行工具,它使用 SSH(Secure Shell)协议来加密数据传输,确保数据传输的安全性。如果需要,SecureCRT 还支持其他文件传输协议,如 ASCII、Xmodem、Ymodem,但 Zmodem 通常是推荐的选择,因为它提供了更快的速度和断点续传功能。之前,确保开发板和 PC 之间的网络是互通的,并且 SSH 服务在开发板上已经启动。命令,这些命令支持 Zmodem 协议,可以实现文件的上传和下载。
2024-04-29 15:06:03
1727
原创 指针和引用的区别
指针可以是空值(nullptr),表示指针不指向任何有效的内存地址,指针在声明时可以不初始化。引用不能为空值,在声明时必须初始化,并且始终指向一个有效的对象。多个指针变量可以指向同一个变量的内存地址。一个变量可以有多个引用,但一个引用只能引用一个变量,引用了就不能变。指针可以在运行时重新赋值,使其指向不同的对象。引用在绑定后不能改变绑定的对象。引用使用起来相较于指针更安全。
2024-04-15 18:15:07
552
原创 生成器、迭代器、装饰器
send() 可以和 next() 一样用来生成值(即调用 send() 时会从生成器对象中生成值),还可以往生成器内部传递数据,会把数据传递给 yield 前面的变量;装饰器本质上是一个函数,它可以接收一个函数作为参数,并返回一个新的函数。生成器是 Python 中一种特殊的迭代器,它不需要一次性将所有值都生成出来,而是可以在需要时逐个生成值,从而节省内存空间,生成器在处理大量数据或需要延迟生成的数据时非常有用。方法的类,它可以像函数一样被调用,并且可以接受一个函数作为参数,返回一个新的函数。
2024-04-15 16:17:30
796
原创 __init__.py 的作用
初始化包:__ init __.py 文件可以包含初始化代码,当包被导入时,这些代码会被执行。指示包含该文件的目录是一个 Python 包:当 Python 导入一个包时,会查找该包所在目录下是否包含 __ init __.py 文件,如果存在,则将该目录视为一个包。方便包的管理:__ init __.py 文件可以包含一些与包相关的元数据信息,或者提供一些方便包使用者的接口。控制包的导入行为:通过在 __ init __.py 文件中定义 __ all __ 变量,可以控制在使用。
2024-03-25 14:11:28
1029
原创 最小二乘法
在普通最小二乘法中,所有数据点的残差平方和被视为同等重要,而在加权最小二乘法中,可以根据实际情况为每个数据点赋予适当的权重。通常情况下,权重是根据数据点的方差或其他可靠度指标来确定的,较可靠的数据点会被赋予较高的权重,而较不可靠的数据点会被赋予较低的权重。其中,y 是因变量,x 是自变量,β0 和 β1 是待估计的回归系数,ε 是误差项。偏最小二乘法的优点在于可以减少自变量的维度,降低共线性对回归系数估计的影响,同时考虑到自变量和因变量之间的相关性,因此在一些复杂的数据分析问题中具有很好的表现。
2024-03-14 11:22:41
1600
原创 特征选择
一个数据集中的特征数过多,一方面会增加模型的复杂度,另一方也会引入更多的噪声数据,使模型更容易学到噪声,增大发生过拟合的风险。所以变量(特征)过多时,需要从原始特征中选择出一些最有效的特征以降低数据维度,从而减少模型复杂度,并有效提高模型性能。特征选择是机器学习和数据挖掘中的一个重要步骤,目的是从原始特征集合中选择出最具有预测能力和解释性的特征子集。
2024-01-29 15:47:41
1316
原创 样本均衡
SMOTE(Synthetic Minority Over-sampling Technique)过采样的核心在于生成样本,即在少数类样本之间进行插值(线性插值)来产生额外的样本,进而补充那些数据量少的样本,使得不同标签的样本量达到均衡。SMOTE+ENN 是过采样与欠采样相结合的方法,SMOTE 算法的缺点是生成的少数类样本容易与周围的多数类样本产生重叠并难以分类,而数据清洗技术恰好可以处理掉重叠样本。NearMiss 算法的基本思想是选择多数类样本中与少数类样本最接近的样本,从而减少多数类样本的数量。
2024-01-29 11:54:10
1329
原创 数据变换
举例来说,假设我们有一个包含房屋价格的数据集,通常情况下,房屋价格是右偏分布的,即大部分房价集中在较低的范围内,但存在少量极高的房价。傅里叶变换将一个复杂的时域信号拆解成若干个简单的频域信号,每个频域信号都对应着输入信号中不同的频率成分,并给出了该频率成分的权重和相位信息。异方差性(Heteroscedasticity)是指在回归分析中,随着自变量的变化,因变量的方差不是常数,而是具有一定的变化趋势。因为回归模型的基本假设之一是误差项的方差是恒定的,如果出现异方差性,那么这个假设就不再成立了。
2024-01-29 11:01:21
1252
原创 KNN 回归
它的基本思想是通过找到与给定测试样本最近的 K 个训练样本,并使用它们的输出值来预测测试样本的输出。这一算法对于有很多特征(几百或更多)的数据集往往效果不好,对于大多数特征的大多数取值都为 0 的数据集(所谓的稀疏数据集)来说,这一算法的效果尤其不好。K 近邻回归算法的基本思想就是,在给定一个新的数据点,它的输出值由其 K 个最近邻数据点的输出值的平均值(或加权平均值)来预测。的取值范围在 0 到 1 之间,越接近 1 表示模型对数据的拟合越好,即模型能够解释更多的因变量的方差。为实际观测值的均值。
2024-01-04 15:08:55
1526
原创 KNN 分类(选择最佳的 K 值,并可视化模型精度与 n_neighbors 的关系)
【代码】KNN 分类(选择最佳的 K 值,并可视化模型精度与 n_neighbors 的关系)
2024-01-04 13:58:58
753
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人