自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 YOLOv5用TensorBoard可视化结果解读

TP为正确识别的判例个数,FN为有目标但识别为没有目标的判例个数。FP为没有目标但识别为有目标的判例个数。

2022-10-18 15:19:25 5095 1

原创 关于yolov5训练时报错cuda内存不足问题

当时报这种错误,当然调小batch-size可以解决,但是当不想调小的时候可以把工作线程改小,就能正常训练了。在train中有如上图所示的超参数,之前我的工作线程是8,在同等条件下改为4就正常能训练了。

2022-10-14 20:58:32 2509 2

原创 划分数据集及格式转换

【代码】划分数据集及格式转换。

2022-10-06 15:41:51 347

原创 C++中内存泄漏和智能指针

由于疏忽或错误导致程序未能释放已经不再使用的内存。并不是指内存在物理上的消失,而是在应用程序分配某段内存后,因为设计错误,而失去了对该段内存的控制,因而造成了内存泄漏。

2022-08-03 09:52:52 179

原创 Leetcode309.最佳买卖股票时机含冷冻期

那么dp[i][0]=max(dp[i-1][0],max(dp[i-1][3],dp[i-1][1])-prices[i]);所以操作二取最大值,即max(dp[i-1][3],dp[i-1][1])-prices[i]如果是持有股票状态(状态一)那么dp[0][0]=-prices[0],买入股票所剩现金为负数。即dp[i][2]=dp[i-1][0]+prices[i];dp[i][j],第i天状态为j,所剩的最多现金为dp[i][j]。...

2022-07-27 16:45:50 79

原创 两种高效的事件处理模式——Reactor和Proactor

随着网络设计模式的兴起,Reactor和Proactor事件处理模式应运而生。同步I/O模型通常用于实现Reactor模式,异步I/O模型则用于实现Proactor模式。

2022-07-26 10:03:38 555

转载 Leetcode中的背包问题

细心的同学可能发现,全文我说的都是对于纯完全背包问题,其for循环的先后循环是可以颠倒的!但如果题目稍稍有点变化,就会体现在遍历顺序上。Leetcode518.零钱兑换II本题的递推公式,其实我们在动态规划目标和!中就已经讲过了,而难点在于遍历顺序!在求装满背包有几种方案的时候,认清遍历顺序是非常关键的。如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。httpshttpshttpshttpshttps。...

2022-07-25 15:05:53 1265

原创 priority_queue(优先级队列)用法

优先级队列被实现为容器适配器,容器适配器是使用特定容器类的封装对象作为其底层容器的类,提供一组特定的成员函数来访问其元素。元素从特定容器的“背面”弹出,该容器被称为优先级队列的顶部。此上下文类似于堆,其中元素可以随时插入,并且只能检索maxheap元素(优先级队列中位于顶部的元素)。优先级队列是一种容器适配器,根据某种严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的一个。优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的。...

2022-07-23 20:28:32 434

原创 Leetcode239.滑动窗口最大值

给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。

2022-07-23 20:04:47 148

原创 深度学习中常用命令

安装gpu版本pytorch,打开官网,我更倾向于使用之前版本,网址如下。anaconda查看环境包。注意,不要复制-cpytorch。假设你的环境名字叫octopus。找到想要的版本,复制链接到环境下,

2022-07-20 17:25:08 385

原创 计算机网络之网络层

网络层核心功能-转发与路由。网络层核心功能连接建立。

2022-07-18 13:43:01 357

原创 判断大小端字节序

计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。举例来说,数值使用两个字节储存:高位字节是,低位字节是。 联合体开辟内存法规则是:选取联合体成员变量中,占用内存最大的内存大小,比如联合体内有int char ,float 类型变量,则开辟int型大小的空间。并且这些成员共用这一内存。***********************由于联合体所有数据共享一块地址空间,存放数据的所有成员都是从低地址开始存放,所以我们可以在联合体内定义一个int和

2022-07-14 15:56:27 289

原创 计算机网络之传输层(下)(TCP连接)

TCP当中ACK采用的累积确认方式 :该序列号之前的所有字节均已经被正确收到 TCP拥塞控制总结:1、当拥塞窗口的大小低于Threshold的时候,发送方处于慢启动阶段,此时拥塞窗口应该成指数增长。2、当拥塞窗口大于Threshold的时候,发送方处于拥塞避免阶段,拥塞窗口应该成线性增长。3、当收到3个重复的ACK时,Threahold应该减为原来的一半,拥塞窗口的大小也要减为原来的一半。4、当timeout发生时,Threshold减为原来的一半,拥塞窗口直接减为1。...

2022-07-12 22:29:06 510

转载 C++中的内存对齐

wchar_t:2个字节bool:1个字节short:2个字节int:4个字节float:4个字节double:8个字节long long:8个字节32位系统:long:4个字节指针:4个字节64位系统:long:8个字节指针:8个字节unsigned不影响sizeof的取值。对函数使用sizeof,再编译阶段会被函数返回值的类型取代,如int f1()会返回4,double f2()会返回8.数组大小就是各维数的乘积*数组元素的大小。数组a的大小在定义时未指出,编译时分配给它的空间按照初始化的值确定

2022-07-10 11:12:41 2561 1

转载 引用传递、指针传递

精简版:指针:变量,独立,可变,可空,替身,无类型检查;引用:别名,依赖,不变,非空,本体,有类型检查;完整版:1. 概念  指针从本质上讲是一个变量,变量的值是另一个变量的地址,指针在逻辑上是独立的,它可以被改变的,包括指针变量的值(所指向的地址)和指针变量的值对应的内存中的数据(所指向地址中所存放的数据)。  引用从本质上讲是一个别名,是另一个变量的同义词,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化(先有这个变量,这个实物,这个实物才能有别名),而且其引用的对象在其整个生命

2022-07-09 10:53:57 953

原创 计算机网络之传输层(上)

checksum 校验和 ************************可靠数据传输没有仔细看*******************************有限状态自动机。箭头代表状态的迁移 可靠数据传输的基本原理 rdt2.0 2.1 3.0 没听,直接来到了滑动窗口协议, 看到下边和这里边有关系,又回来听了 左图为停等协议,右图为流水线协议 绿色代表发完已经接收确认的,黄色代表已经发送但还没有确认的,蓝色代表还可以使用的序列号GBN不会缓存乱序到达的序列号,会直接丢弃。 这个图的简单过程:

2022-07-02 10:40:32 297

原创 SOCKET编程

socket编程

2022-06-29 22:12:53 180

原创 C++中合并两个数组,并去除重复数字(无论有没有顺序)

给定两个数组,然后将其合并为一个新的数组,要求从小到大排序,并且两个数字中的重复数字要剔除。思路:1、设置p1 p2 两个指针分别指向vx vy2、当p1

2022-06-29 18:49:42 2536 1

原创 C++基础

c++基础知识1.4 常量作用:用于记录程序中不可更改的数据C++定义常量两种方式#define 宏常量: const修饰的变量 示例:1.5 关键字作用:关键字是C++中预先保留的单词(标识符)C++关键字如下:作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存作用:整型变量表示的是整数类型的数据C++中能够表示整型的类型有以下几种方式,区...

2022-06-14 14:16:20 189

原创 mysql中的DML语句(增删改)

mysql的增删改操作

2022-06-12 16:40:17 93

原创 平衡二叉树(树的旋转)

1、概念平衡二叉树建立在二叉排序树的基础上,目的是使二叉排序树的平均查找长度更小,即让各结点的深度尽可能小,因此,树中每个结点的两棵子树的深度不要偏差太大。平衡二叉树的递归定义:平衡二叉树是一棵二叉树,其可以为空,或满足如下2个性质:①左右子树深度之差的绝对值不大于1。②左右子树都是平衡二叉树。平衡因子的概念:结点的平衡因子 = 结点的左子树深度 — 结点的右子树深度。若平衡因子的取值为-1、0或1时,该节点是平衡的,否则是不平衡的。最低不平衡结点的概念:用A表示最低不平衡结点,则A的祖先结

2022-05-27 21:50:50 595 1

原创 c++十大排序——归并排序

算法基本知识铺垫有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简单解释一下:1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储 空间进行比较和交换的数据排序。4、非原地排序:需要利用额外的数组来辅助排

2022-05-27 13:03:06 3477

原创 c++十大排序——希尔排序

算法基本知识铺垫有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简单解释一下:1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储 空间进行比较和交换的数据排序。4、非原地排序:需要利用额外的数组来辅助排

2022-05-25 19:52:03 600

原创 c++十大排序——快速排序

算法基本知识铺垫有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简单解释一下:1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储 空间进行比较和交换的数据排序。4、非原地排序:需要利用额外的数组来辅助排

2022-05-25 15:53:13 11673

原创 c++十大排序——插入排序

算法基本知识铺垫有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简单解释一下:1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储 空间进行比较和交换的数据排序。4、非原地排序:需要利用额外的数组来辅助排

2022-05-24 21:55:37 4602 1

原创 解决ubuntu20.04存在的各种bug

**************最好的方法当然是重装系统了*******************哈哈哈哈哈哈哈哈遇到的bug1:显卡驱动突然没了,训练yolov5的时候说没有cuda,重启就解决了。遇到的bug2:ubuntu的设置突然打不开了,怎么都打不开,右上角的设置也没有了,如图所示我在网上也找了好多帖子,这种情况可能是在卸载mysql数据库用了autoremove命令,导致相关的库也被卸载了。在终端使用这个命令安回来就可以了,亲测可用sudo apt-get -f install

2022-05-24 10:19:50 753

原创 c++十大排序——选择排序

算法基本知识铺垫有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简单解释一下:1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储 空间进行比较和交换的数据排序。4、非原地排序:需要利用额外的数组来辅助.

2022-05-21 22:22:13 873

原创 c++十大排序——冒泡排序

将第一个元素和第二个元素进行比较,若为逆序则将两个元素交换,然后比较第二个元素和第三个元素。依次类推,直至第 n-1个元素和第 n个元素进行比较为止。上述过程称为第一趟冒泡排序,其结果使最大值元素被放置在最后一个位置(第 n个位置)。然后进行第二趟冒泡排序,对前 n-1个元素进行同样操作,其结果是使第二大元素被放置在倒数第二个位置上(第 n-1个位置)。冒泡排序图解黄色表示已排序部分,蓝色表示未排序部分。代码实现#include<iostream>using names.

2022-05-21 22:05:45 7366 2

原创 哈夫曼树结构及带权路径长度

哈夫曼树:当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”,有时也叫“赫夫曼树”或者“哈夫曼树”。在构建哈弗曼树时,要使树的带权路径长度最小,只需要遵循一个原则,那就是:权重越大的结点离树根越近。在图 1 中,因为结点 a 的权值最大,所以理应直接作为根结点的孩子结点。哈夫曼树相关的几个名词路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。图 1 中,从根结点到结点 a 之间的通路就是一条路径。路径长度:

2022-05-19 16:59:42 13779

原创 线索二叉树

现有一棵结点数目为n的二叉树,采用二叉链表的形式存储。对于每个结点均有指向左右孩子的两个指针域,而结点为n的二叉树一共有n-1条有效分支路径。那么,则二叉链表中存在2n-(n-1)=n+1个空指针域。那么,这些空指针造成了空间浪费。例如:所示一棵二叉树一共有10个结点,空指针^有11个。此外,当对二叉树进行中序遍历时可以得到二叉树的中序序列。例如:图2.1所示二叉树的中序遍历结果为HDIBJEAFCG,可以得知A的前驱结点为E,后继结点为F。但是,这种关系的获得是建立在完成遍历后得到的,那么可

2022-05-19 13:41:17 146

原创 解决yolov5不能使用 tensorboard --logdir=runs/train的问题

ValueError: Duplicate plugins for name projector这是 报错类型解决这个的方法就是删除一个文件找到你自己的环境,然后找lib文件夹,然后找文件夹site-packages,然后再此文件夹下搜索tensorboard,会看到我类似下边这个图删除这个文件夹tensorboard-2.8.0.dist-info(版本可能不一样,没关系,删除你自己那个就行)就可以了...

2022-05-10 21:33:49 2339 2

原创 计算机网络(传输层)

1.概述1.1传输层的意义有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。接下来的问题是,同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做”端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

2022-05-09 11:17:06 315

原创 C++中常量指针和指针常量

常量指针如果在定义指针变量的时候,数据类型前用const修饰,被定义的指针变量就是指向常量的指针变量,指向常量的指针变量成为常量指针。const int* p = &a; //常量指针//举个例子int a = 10;int b = 20;const int* p = &a; //常量指针*p = 9; //操作错误p = &b; //操作成功因为常量指针本质是指针,并且这个指针是一个指向常量的指针,指针指向的变量的值不可以通过该指针修改,但是指针

2022-05-02 16:56:36 717

原创 c++十大排序——堆排序

1、堆排序堆排序采用堆的这种数据结构,堆首先是一颗完全二叉树。堆又分为大顶堆和小顶堆大顶堆就是父节点数值大于等于左右节点数值小顶堆是父节点数值小于等于左右节点数值下标为i的节点的父节点下表为:(i-1)/2下标为i的节点的左孩子下表为:i*2+1下标为i的节点的右孩子下表为:i*2-1#include<iostream>using namespace std;void sw(int &a,int &b) { int temp

2022-04-30 21:44:12 8354

原创 C++中的queue(队列,容器适配器)和deque(双端队列,容器)的区别

queue操作:(容器适配器)queue<int>q; //创建一个int型的空队列qq.empty(); //判断队列是否为空,空返回trueq.push(x); //把变量x从队尾入队q.pop(); //将对头元素弹出q.front(); //只返回队头元素q.back(); //只返回队尾元素q.size(); //返回队列中元素个数容器适配器一共三个:stack、queue、priority_queue(优先队列)

2022-04-29 16:35:55 1046

原创 C++中的string

string的增很简单,直接用”+“,”+=“操作符,可以方便的对字符串进行添加int main() { string s1; string s2; s1 = "abc"; s2 = "abc"; cout << s1 + s2 << endl; return 0;}//输出 abcabcappend()操作int main() { string s1; string s2; s1 = "str1"; s2 = "str2"; s1.ap

2022-04-28 20:30:32 880

原创 C++类相关知识点

1、赋值初始化:通过在函数体内进行赋值初始化2、列表初始化:在冒号后使用初始化列表进行初始化1中实在构造函数当中做赋值操作,而2中是纯粹的初始化操作,赋值操作会产生临时对象的,降低程序的效率赋值初始化操作:class Person{public: Person(int a, int b, int c){ m_A = a; m_B = b; m_C = c; } int m_A; int m_B;

2022-04-28 11:22:31 347

原创 C++零碎知识

C++中的一维数组内存地址是连续的C++中二维数组内存地址是不连续的,但是在每行是连续的下图打印的例子

2022-04-24 16:55:25 622

原创 计算机网络(传输层)

传输层有两个协议,大哥TCP和二弟UDPTCP靠谱,UDP不靠谱1、面向链接的传输控制控制协议TCP传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认、流量控制、计时器及连接管理等。可靠,面向连接,时延大,适用于大文件2、无连接的用户数据报协议UDP 传送数据之前不需要建立连接,收到 UDP报文后也不需要给出任何确认。不可靠,无连接,时延小,适用于小文件...

2022-04-23 16:12:10 1278

原创 Yolov5查看各层特征图方法

使用方法很简单,只需要在utils中的general.py或者plots.py添加如下函数:import matplotlib.pyplot as pltfrom torchvision import transforms def feature_visualization(features, model_type, model_id, feature_num=64): """ features: The feature map which you need to visua

2022-04-22 19:13:20 7596 20

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除