- 博客(68)
- 收藏
- 关注
原创 Yolov5---模型阅读、改进、实验
YOLOv5【网络结构】超详细解读总结!!!建议收藏✨✨!_yolov5 网络结构_耿鬼喝椰汁的博客-优快云博客 (1条消息) YOLOv5-6.2源码解析-train.py(超级无敌巨详细版)_yolov5train代码详解_Seven、K的博客-优快云博客
2023-07-12 11:21:05
381
原创 Docker 安装Miniconda
下载Miniconda下载地址 执行 sh命令完成Miniconda 的安装 中间输入yes 完成安装后,执行链接中的命令完成环境配置 创建自己conda环境,需要配置清华镜像 安装对应的pytorch,Pytorch的下载地址
2023-07-12 10:28:54
2106
原创 6.C++多线程async、future、packaged_task、promise
(defer推迟,延期)表示线程入口函数的调用会被延迟,一直到std::future的wait()或者get()函数被调用时(由主线程调用)才会执行;如果wait()或者get()没有被调用,则不会执行。实际上根本就没有创建新线程。std::launch::deferred意思时延迟调用,并没有创建新线程,是在主线程中调用的线程入口函数。2、std::launch::async,在调用async函数的时候就开始创建新线程。async 可以创建线程,然后通过使用result.get()等待子进程运行结束。
2023-06-06 14:58:35
95
原创 5.C++多线程--单例设计模式
需要和标记(once_flag)配合使用,只要once_flag被设置为”已调用“,后续不在被调用。可在其他线程中使用notify_one和notify_all来唤醒此时的wait函数,单例设计模式:整个项目中,有某个或者某些特殊的类,属于该类的对象只能创建1个。如果wait函数里面有判断条件,则会判断条件是否符合,不符合则会等待;唤醒后,wait仍然会先判断是否满足条件,满足条件后再执行后面的语句。类对象可以调用wait函数,会将wait函数内的锁解开,双重锁定(双重检查)可以完成单例设计模式的完成。
2023-06-06 14:09:11
566
原创 4.C++多线程-- unique_lock(类模板)
使用之前先lock,不能自己unlockcout << "插入元素:" << i << endl;使用之前不能先lock, try_to_lock会自己先尝试进行加锁。如果不能加锁,通过判断直接执行其他defer_lock 见上public:i < 10000;i++) {cout << "插入元素:" << i << endl;cout << "容器为空" << endl;else {
2023-06-05 16:50:53
449
原创 3.C++多线程--数据共享问题
保护共享数据:互斥量(mutex)或者使用std::lock_guard<std::mutex> my_lock(my_mutex);使用lock_guard 在构造函数会调用mutex::lock(),析构函数调用 mutex::unlock();为了使用lock_guard,可以配合大括号使用。
2023-06-04 22:38:38
585
原创 2.C++多线程--危险点分析
使用detach时,子线程一定不要传入指针如果采用临时类对象作为参数,传入到thread中,thread会调用拷贝构造函数,对传入变量进行拷贝,然后再为自线程所使用。下面的代码采用引用来接收类对象,如果不采用引用的话,系统还会再构造一次对象,这样会出现3次构造,浪费时间。
2023-06-04 20:52:26
585
原创 1.C++多线程--创建线程
thread :一个用于创建线程的类;join():用于阻塞主线程,等待子线程完成后,再进行主线程;detach():主线程和子线程各自执行,不再需要主线程逐个等待子线程结束;一旦采用,子线程和主线程失去关联,子线程驻留后台完成。joinable():判断是否可以使用join和detach,可以返回true,否则返回false;
2023-06-03 21:18:15
271
原创 PointNet++ 源码解读
先找到存放训练和测试数据的目录,接下来加载相关的数据参数:下面是执行的结果: 接下来为训练样本开始做准备: 给不同标签做上标记: 定位每个样本文件: optimizer.zero_grad()//将梯度清零,如果不加此话,梯度就会一直不断的累加。接下来将点云转为Numpy的形式,并进行随机点剔除、缩放和平移以上的内容对于防止过拟合很有帮助,提升模型的泛化能力接下来就是将numpy转为tensor的数据形式,并将维度中 第2维和第3维进行转置,再放入cuda。数据发生的变化:16*1024*3---》16*3
2023-05-30 21:00:41
1056
原创 第11章 使用类
程序将使用构造函数base (double a) 来创建一个临时的base对象,并将10.5作为初始化值。随后采用逐成员赋值方式将临时对象的内容复制到b1中。假如base 中有 base(double a);为了结果运算符重载过程中,自定义类型在运算符右侧的问题。是一种非成员函数就可以访问类内私有成员的函数。使用explicit 可以关闭4中的自动属性。定义的运算符的一元和二元版本。
2023-05-21 18:52:34
58
原创 10 对象和类
初始化对象数组的方案是,首先使用默认构造函数创建数组元素,然后花括号中的构造函数将创建临时对象,再将临时对象的内容复制到相应的元素内。3.如果使用new创建的,则将驻留再栈内存或自由存储区内,delete的时候被调用。2.如果创建的是自动存储类对象,析构函数将在程序执行完代码块被调用。1.如果创建的时静态存储类对象,析构函数将在程序结束时自动被调用。也可以现在类内进行函数的声明,然后再类外 inline进行定义。公有成员函数是程序和对象的私有成员之间的桥梁,提供了接口。定义位于类声明中的函数,为内联函数。
2023-05-21 17:59:44
547
原创 第9章 内存模型和命名空间
const声明的常量为内部链接性;每个引用该头文件的文件内都会有一个 const常量。get(char*,int) 读取空行导致cin为false。2. 使用#define和const定义的符号常量。5 中的内容说明了new运算符发生了重载。
2023-05-21 17:34:13
52
原创 第5章 循环和关系表达式
如果检测到EOF,则cin.eof() 返回会true,否则返回false;二者都是等到按下回车后,才处理输入缓存区的数据。2. 采用cin.get(ch)cin.get()---不忽略。cin---忽略空格和换行符。1. 采用cin.eof()
2023-05-03 21:44:44
726
原创 第4章 复合类型
cin.getline() 遇到回车完成读取,并不会保存换行符。读入“jud”时,数组会存放j u d \0。cin 遇到空格、回车、Tab,就会完成读取。
2023-04-27 21:24:12
298
原创 Leetcode-二叉树
3. 根据划分中序序列中-左子树的长度,进而划分后序序列。4. 得到4个数组:左中,右中,左后,右后数组。1. 首先根据后序(左右中)确定顶点元素;2. 根据顶点元素划分中序序列;5. 递归实现二叉树的构建。
2023-04-19 14:44:51
416
原创 8. Tire 树
想法优点类似单链表中next指针,通过将p = tire[p][c_temp],可以不断寻找下一个地方。其中tire[p][c_temp]就是不断的存储当时插入字符串时的idx,正是通过idx每个字符才有了自己的地址。cnt[p]是代表p指针下有没有完整的字符串。每个节点下面都有26个子节点,其中tire[p][c_temp] 就是p类似指针,不断的更新,查找到p下面的元素。核心就在于p的一直变换,可以看作为一个指针,不断指向下一个寻址的地址。字典树首先需要足够大的空间,是采用空间换时间的一种数据结构。
2023-04-14 14:50:00
61
原创 1.多态相关知识
1.子类在类内使用指针,会在堆区开辟空间,如果父类的析构函数不使用虚析构,子类不能执行析构函数。1. 多态的使用,必须将父类中的函数写为虚函数,但父类虚函数不执行,可以写为纯虚函数。2.在父类类外写父类析构函数的具体实现,因为父类也会有相关指针需要释放。3.父类如果有纯虚函数,即为抽象类,不能实例化对象。2. 子类继承父类后,需要重写父类的虚函数。4. 子类继承 抽象类,必须重写纯虚函数。
2023-04-13 15:12:07
81
原创 5.链表相关算法
需要注意的是:1.head 直接就是第一个节点;......此种做法是错误的,temp=head,说明temp和head共享一个地址;
2023-04-05 17:51:45
45
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人