- 博客(87)
- 收藏
- 关注
原创 Yolov8训练时正常,但验证时Cuda out of memory问题的解决方案(非完全解决)
阻止模型验证时,仍计算梯度,导致模型显存溢出。但是这样仍无法解决,甚至验证无法进行【可能这里笔者加的地方有问题,如果有大神希望指导一下!因此,本着解决不了问题就解决提出问题的人的原则,直接在训练中关闭验证,等训练结束之后再单独验证。在没有条件更换训练显卡的情况下,笔者尝试增加。
2024-07-31 14:17:27
244
原创 模拟双色球中奖号码(java实现)
第七条 “双色球”每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1--33中选择;蓝色球号码从1--16中选择。第六条 “双色球”彩票投注区分为红色球号码区和蓝色球号码区。现在实现模拟生成双色球中奖号码的函数,将结果保存在数组中。模拟双色球中奖号码。
2024-05-22 15:03:34
356
原创 MATLAB:Image Processing Toolbox工具箱入门实战
MATLAB:Image Processing Toolbox工具箱入门实战(1)基本图像导入、处理和导出(2)实战项目一:利用imfindcircles()函数检测和测量图像中的圆形目标(3)实战项目二:图像增强(预处理)统计米粒(4)实战项目三:利用Sobel算子进行裂纹检测
2024-03-04 22:26:35
2106
原创 9.程序的机器级代码表示,CISC和RISC
mov指令可以把esp和ebp都指向栈帧的底,然后弹出栈中元素至ebp,这时ebp就可以恢复指向上一层函数栈的栈底,esp+,指向IP旧值,最后执行ret指令,从函数的栈帧顶部找到IP旧值,将其出栈并恢复IP寄存器。除法的解释:32位的被除数除以32位的除数,在计算前会对被除数进行扩展,把被除数扩展到64位,低32位存入eax,高32位存入edx。栈帧里包含的内容:gcc编译器将每个栈帧大小设置为16B的整数倍(当前函数的栈帧除外),因此栈帧内可能出现空闲未使用的区域。多条指令组合完成一个复杂的基本功能。
2023-11-16 22:26:30
342
原创 8.指令格式,指令的寻址方式
最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(PC)+A,其中A是相对于PC所指地址的位移量,可正可负,补码表示。堆栈是存储器(或专用寄存器组)中一块特定的按“后进先出(LIFO)”原则管理的存储区,该存储区中被读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。相对寻址广泛应用于转移指令。
2023-11-15 00:01:08
686
原创 7.外部存储器,Cache,虚拟存储器
LRU算法基于“局部性原理”,近期被访问过的主存块,在不久的将来也很有可能被再次访问,因此淘汰最久没被访问过的块是合理的。如:1,2,3,4,5,1,2,3,4,5...写回法(write-back)——当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存(增设一个“脏位”表示其是否被修改)。程序访问的空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的(Eg:数组元素、顺序执行的指令代码)。
2023-11-14 00:22:15
430
原创 6.存储器概述,主存储器
如果使用高位编址,因为这几个地址对应的存储单元都在M0,所以必须等其恢复之后在进行访问,而如果采用低位编址,我们可以访问M0,然后在M0的恢复时间去访问M1...以此类推,到M3读取完,M0的恢复时间也刚好结束。SSD (Solid State Drives) ——固态硬盘,由控制单元+存储单元(Flash芯片)构成,与闪速存储器的核心区别在于控制单元不一样,但存储介质都类似,可进行多次快速擦除重写。但注意:我们常说“内存条”就是“主存”,但事实上,主板上的ROM芯片也是“主存”的一部分。
2023-11-11 17:12:12
277
原创 5.浮点数及其运算
阶码真值=-1,单精度浮点型偏移量=127D,移码=阶码真值+偏移量=-1+1111111=0111 1110(凑足8位,当然也可以先10进制计算-1+127=126,126转换成二进制就是0111 1110)例:已知十进制数X=-5/256、Y=+59/1024,按机器补码浮点运算规则计算X-Y,结果用二进制表示,浮点数格式如下∶阶符取2位,阶码取3位,数符取2位,尾数取9位。恒置“1”法:尾数右移时,不论丢掉的最高数值位是“1”还是“0”,都使右移后的尾数末位恒置“1”。最小值表示为0.10...0。
2023-11-10 18:40:30
1048
2
原创 4.移位计算,乘除法运算
设机器字长为5位(含1位符号位,n=4) , x=-0.1101,y= +0.1011,采用Booth算法求x*y。设机器字长为5位(含1位符号位,n=4),x=+0.1000,y=-0.1011,采用补码加减交替除法求x/y。设机器字长为5位(含1位符号位,n=4),x=0.1011,y=0.1101,采用原码恢复余数法求x/y,x=0.1011,y=0.1101,[|y|]补=0.1101,[-|y|]补=1.0011。x[补]=11.0011,[-x]补=00.1101,[y]补=0.1011。
2023-11-09 22:24:28
1225
原创 图像二值化阈值调整——Triangle算法,Maxentropy方法
熵代表信息量,图像信息量越大,熵就越大,最大熵算法就是找出一个最佳阈值使得背景与前景两个部分熵之和最大。首先找到直方图中灰度值最高的一点并判别亮暗,然后找到最左边点,两点连接一条直线,求直方图上离直线最远的点,设置该点的灰度值为阈值。有时候最大波峰对应位置不在直方图最亮一侧,而在暗的一侧,这样就需要翻转直方图,翻转之后求得值,用255减去即得到为阈值T。给定一个大小为M*N的图像,直方图中所有矩形框所代表的数值之和,即为图像中的像素数量,设像素值i的像素在图中有。表示的是图像中像素灰度值为i所出现的概率。
2023-11-09 10:57:51
1000
原创 3.基本运算部件,定点数的加减运算
基于异或运算的天然逻辑:奇偶校验位(即:n个位异或运算,结果为1说明有奇数个1,结果为0说明有偶数个1)。实际存储时只存储1个符号位,运算时会复制一个符号位。对于补码来说,无论加法还是减法,最后都会转变成加法,由加法器实现运算,符号位也参与运算。串行进位又称为行波进位,每一级进位直接依赖于前一级的进位,即进位信号是逐级形成的。设A的符号为As,B的符号为Bs,运算结果的符号为Ss;n bit无符号数X-Y:将减数Y全部按位取反,末位+1,减法变加法。正数的符号位:00,负数的符号位:11.
2023-11-07 18:54:31
163
原创 1.计算机系统概述
冯诺伊曼机——“存储程序”的概念:是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令以后就按该程序的规定顺序执行其他指令,直至程序执行结束。——不一定,如两个cPU,A的主频为2GHz,平均CPl=10;执行一条指令的耗时=CPI×CPU时钟周期,CPU执行时间(整个程序的耗时)=CPU时钟周期数/主频=(指令条数*CPI)/主频。K=Kilo=千=10^3,M=Million=百万=10^6,G=Giga=十亿=10^9,T=Tera=万亿=10^12。
2023-11-05 23:59:16
197
1
原创 41.排序练习题(王道2023数据结构第8章综合练习)
计数排序算法针对表中的每一个记录,遍历待排序的表一遍,统计表中有多少个记录的关键字比该记录的关键字小。设计实现计数排序的算法。【试题再现】编写一个递归算法,在一棵具有n个结点的二叉排序树上查找第k小的元素,并返回该结点的指针。要求算法的平均时间复杂度是,二叉排序树每个结点中除了data,lchild,rchild外,增设一个count成员,保存以该结点为根的子树的结点个数。已知线性表按顺序存储,且每个元素都是不相同的整数类型元素,设计把所有奇数移动到所有偶数前边的算法(要求时间最少,辅助空间最少)。
2023-10-31 17:29:27
118
原创 40.查找练习题(王道2023数据结构第7章)
在链表被启用前,其值均初始化为零。每当在连表中进行一次Locate(L,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度非递增的顺序排列,同时最近访问的结点排在频度相同的结点的前面,以便使频繁访问的结点总是靠近表头。试编写符合上述要求的Locate(L,x)运算的算法,该运算为函数过程,返回找到结点的地址,类型为指针型。线性表中各结点检索概率不等时,可用如下策略提高顺序检索的效率:若找到指定的结点,则将该结点与前驱结点(若存在)交换,使得经常被检索的结点尽量位于表的前端。
2023-10-25 21:11:41
353
原创 39.B树,B+树(王道第7章查找补充知识)
我们首先从二叉查找树到m叉查找树:如下是一个5叉查找树,这里每个结点最多可以有4个关键字,一个关键字可以把区间分成两个部分。为了保证查找效率,防止树过高的策略:(1)m叉查找树中,规定除了根节点外,任何结点至少有个分叉,即至少含有个关键字。如对于5叉排序树,每个结点至少要有3个分叉,2个关键字。(2)仿照平衡二叉树:在m叉查找树中,规定对于任何一个结点,其所有子树的高度都要相同。
2023-10-24 17:15:55
437
1
原创 38.红黑树(王道第7章查找补充知识)
红黑树是二叉排序树-左子树结点值≤根结点值≤右子树结点值。①每个结点或是红色,或是黑色的②根节点是黑色的③叶结点(外部结点、NULL结点、失败结点)均是黑色的④不存在两个相邻的红结点(即红结点的父节点和孩子结点均是黑色)⑤对每个结点,从该节点到任一叶结点的简单路径上,所含黑结点的数目相同struct RBnode { //红黑树的结点定义int key;//关键字的值//父节点指针//左孩子指针//右孩子指针int color;
2023-10-24 09:11:31
351
原创 37.图练习(王道第6章综合练习)
图成为树的标准:n个顶点,n-1条边,而我们建立的图的数据结构种numetex, numedge刚好对应这两个参数,所以此题等于白给。分别采用广度优先遍历和深度优先遍历算法判断以邻接表方式存储的有向图中是否存在由顶点i到顶点j的路径(i与j不相等)。图的存储结构,可以有邻接表表示和矩阵表示两种。写出图的深度优先搜索DFS算法的非递归算法(图采用邻接表形式)。假设图用邻接表表示,设计算法输出从顶点i到顶点j的所有简单路径。写出从图的邻接表表示转换成邻接矩阵表示的算法。和前面的练习题相比,此题几乎就是白给。
2023-10-18 16:42:49
156
原创 36.树与二叉树练习(2)(王道第5章综合练习)
(3)结点没有左右孩子——找中序遍历前驱结点的左孩子结点,找不到就继续往前直到找到有左孩子结点,或者就是第一个结点(左孩子指针为空)返回NULL。分析:二叉树中(1)叶子结点(2)只有右孩子没有左孩子的结点是原森林的叶子结点。设计算法将二叉树的叶结点按从左到右的顺序连成单链表,连接时使用叶结点的右指针域存放单链表指针。从树转化成二叉树:左孩子向下走相当于深度+1,右孩子向下走相当于访问同深度兄弟结点。(1)结点有右孩子——右孩子就是后序遍历的前驱结点;(2)结点只有左孩子——左孩子是后序遍历的前驱结点;
2023-10-15 12:16:17
185
原创 33.栈,队列练习题(王道2023数据结构第3章综合应用)
设有两个栈S1,S2都采用顺序栈方式,并共享一个存储区[0...Maxsize-1],为了尽量利用空间,减少溢出可能,可采用栈顶相向,迎面增长的存储方式,试设计S1,S2的入栈和出栈算法。若希望队列中的元素都能得到利用,需设置一个标志域tag,并以tag为0或1来区分头指针front和尾指针rear相同时的队列状态是空还是满,试编写此结构的入队和出队算法。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅有 I 和 O 组成的序列,可以操作的序列为合法序列,否则称为非法序列。试题2:(3.1.4节题4)
2023-09-27 20:22:20
319
原创 32.栈的应用补充-表达式求值
仍然以(三)中的第2张图为例:A入操作数栈—+入运算符栈—B入操作数栈—扫描到-,弹出运算符等级相同的+,并从操作数栈弹出A和B,计算A+B后压回操作数栈,最后-号入运算符栈—C入操作数栈—*入运算符栈—D入操作数栈—扫描到/,弹出运算符*,同时弹出C和D,计算C*D后压回操作数栈,最后把/压入运算符栈—E入操作数栈—扫描到+,/和-依次弹出。在后缀表达式中,1 1 +先作为一个操作数,然后用7减去,就是7 1 1 + -,再用15除,就是15 7 1 1 + - /,以此类推。客观来看两种都正确。
2023-09-25 23:55:00
243
1
原创 31.链表练习题(2)(王道2023数据结构2.3.7节16-25题)
试题20:设头指针为L的带有表头结点的非循环双向链表,其每个结点中除有prior(前驱指针),data(数据),next(后继指针)域外,还有一个访问频度域freq。每当在连表中进行一次Locate(L,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度非递增的顺序排列,同时最近访问的结点排在频度相同的结点的前面,以便使频繁访问的结点总是靠近表头。每遍历到一个新节点,就从头节点重新遍历新节点之前的所有节点,用新节点ID和此节点之前所有节点ID依次作比较。
2023-09-23 00:07:54
248
原创 30.链表练习题(1)(王道2023数据结构2.3.7节1-15题)
如果不是,这时候执行Del(L->next, x),如果第2个是被删掉的元素,进入if(L->next->data==x)分支,此时p=L实际上执行p=L->next,p指向了第2个被删除的结点;第2行L = L->next执行的是L->next=L->next->next,把首元结点的next域修改为指向第3个结点;试题14:设A和B是两个单链表(带头结点),其中元素递增有序,设计一个算法从A和B中公共元素产生单链表C,要求不破坏A,B的结点。试题6:有一个带头结点的单链表L,设计算法使其递增有序。
2023-09-20 14:25:20
359
原创 28.顺序表练习题目(2)(2023王道数据结构2.2.3节9-14题)
如果数组中存在大于一半的相同元素,首先假设第一个元素为主元素的候选元素【统计个数为1】,如果目前元素统计的个数大于0,遇到相同的数字——个数加1,不同的数字——个数减1;例如,若序列S1=(11, 13, 15, 17, 19),则S1的中位数是15,两个序列的中位数是含它们所有元素的升序序列的中位数。推广之,去掉等量的最高和最低的元素之后,序列的中位数不会发生变化。注意:如果折半查找找不到的话,最后退出while循环的时候,low指针指向的是高于x的第一个元素,high指针指向的是低于x的最后一个元素。
2023-09-17 12:18:38
99
原创 26.顺序表的C++代码实现
用C++实现顺序表的初始化,建立,增加,查找,删除等操作。这里写的就是真正可运行的代码而非教材中的伪代码。在写代码的时候踩了一个坑:vscode报cout不明确的错误。(1)将using namespace std;删除后按ctrl+S保存cpp文件,(2)再加上using namespace std;按ctrl+S保存cpp文件。
2023-09-14 23:21:31
92
原创 25.选择排序,归并排序,基数排序
如果rc的值小于R[j]的值,则将R[j]的值赋给R[s],即将较大的子节点的值上移到根节点的位置。例:给定待排序序列(614,738,921,485,637,101,215,530,790,306)。例如,给定8,5,8*,7,9;例如,对下面的小根堆,把13输出,最后一个元素97作为根结点,它的左右孩子是38和27,27较小,所以把97和27交换。本章讨论的各种排序方法,除基数排序外,其它方法都是基于“比较关键字”进行排序的排序方法,可以证明,这类排序法可能达到的最快的时间复杂度为O(nlogn)。
2023-08-28 16:10:14
492
原创 24.排序,插入排序,交换排序
排序:将一组杂乱无章的数据按一定规律顺次排列起来。即,将无序序列排成一个有序序列(由小到大或由大到小)的运算。如果参加排序的数据结点包含多个数据域,那么排序往往是针对其中某个域而言。衡量排序算法的指标有时间复杂度,空间复杂度和稳定性等。对于稳定性做一点说明。稳定排序指的是能够使任何数值相等的元素,排序以后相对次序不变。例如,下面的示例1是稳定排序,示例2就不是稳定排序。排序的稳定牲只对结构类型数据排序有意义。
2023-08-27 23:57:23
1069
1
原创 23.树表和哈希表的查找
当表插入、删除操作频繁时,为维护表的有序性,需要移动表中很多记录。基于此,我们可以改用动态查找表——几种特殊的树。表结构在查找过程中动态生成。对于给定值key,若表中存在,则成功返回;否则,插入关键字key的记录。
2023-08-26 23:42:22
197
原创 22.查找,线性表的查找
由于对查找表来说,在集合中查询或检索一个“特定的”数据元素时,若无规律可循,只能对集合中的元素一一加以辨认直至找到为止。而这样的“查询”或“检索”是任何计算机应用系统中使用频度都很高的操作,因此设法提高查找表的查找效率,是本节讨论问题的出发点。或者,从查找表中删除其“查询”结果为“在查找表中”的数据元素,此类表为动态查找表。方法:(1)将表分成几块,且分块有序(若i<j,则第j块中所有记录的关键字均大于第i块中的最大关键字),每块内的元素可以有序或无序;分块查找的实质是索引顺序表上的查找。
2023-08-26 19:32:47
203
原创 21.图的应用
V-U={V2,V3,V4,V5,V6},连接U,V-U的边有(v1,v2),(v1,v3),(v1,v4),最小的是(v1,v3)=1,则这条边必被包含在这个最小生成树内。在生成树的构造过程中,图中n个顶点分属两个集合:已落在生成树上的顶点集U和尚未落在生成树上的顶点集V-U,接下来则应在所有连通U中顶点和V-U中顶点的边中选取权值最小的边。在AOV网没有回路的前提下,我们将全部活动排列成一个线性序列,使得若AOV网中有弧存在,则在这个序列中,i一定排在j的前面,具有这种性质的线性序列称为。
2023-08-26 11:20:14
132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人