- 博客(21)
- 收藏
- 关注
原创 C++资源
1.cppreferencehttps://en.cppreference.com/w/2.LearnCpphttps://www.learncpp.com/3.Cplusplushttp://www.cplusplus.com/4.TutorialsPointhttps://www.tutorialspoint.com/cplusplus/index.htm5.Awesome C++https://github.com/fffaraz/awesome-cpp6、书栈网https://
2021-09-18 16:22:34
659
原创 C++引用作为函数返回值
目录代码返回值代码//返回局部变量引用int& test01() { int a = 10; //局部变量 return a;}//返回静态变量引用int& test02() { static int a = 20; return a;}int main() { //不能返回局部变量的引用 int& ref = test01(); cout << "ref = " << ref << endl; cout &l
2021-09-18 15:26:49
933
原创 深拷贝与浅拷贝
这里写目录标题浅拷贝带来的问题引入深拷贝解决问题总结浅拷贝带来的问题如果有属性是在堆区开辟的,而且使用的是编译器默认提供的拷贝构造函数(浅拷贝),因为浅拷贝是将p1完完整整的拷贝一份给p2(包括新建堆区的内存空间),所以会在实现通过析构函数释放堆区空间时导致重复释放的操作,会报错,导致程序无法运行。错误案例如下:#include <iostream>using namespace std;class Person {public: //无参(默认)构造函数 Person() {
2021-09-18 11:22:25
627
原创 C++拷贝构造函数调用时机
C++中拷贝构造函数调用时机通常有三种情况使用一个已经创建完毕的对象来初始化一个新对象值传递的方式给函数参数传值(C++中,值传递是将实参复制一份传给形参)以值方式返回局部对象(C++中,值方式返回也是将局部对象复制一份返回)class Person {public: Person() { cout << "无参构造函数!" << endl; mAge = 0; } Person(int age) { cout << "有参构造函数!" &
2021-09-18 08:34:09
916
原创 numpy高级索引(二维矩阵的索引是二维矩阵)
目录1.问题描述2.查阅资料3.实验1.问题描述最近在看语义分割的源码,但是预测阶段有一行代码看的我头大,不知道在索引些什么东西。后来经过查阅资料和实验发现这是numpy的高级索引,故写这篇博文记录一下自己是如何理解的。这行代码长这样。意思是把前向传播得到的预测值取最大值,并把最大值的索引值赋值给pre_label(352*480的矩阵)。这个索引值代表了一张图经过模型的预测后,每一个像素值分别属于哪一个类别。通过这张全图都是索引值的图,去cm(color map)中找属于这个索引值的相应颜色(每个索引
2021-09-17 21:22:50
2455
原创 pytorch 5种学习率调整策略
1.StepLR2.MultiStepLR可以手动设置第几个epoch以gammagammagamma的衰减学习率3.ExponentialLR4. CosineAnnealingLR余弦退火的方式调节学习率5.ReduceLRonplateau监控某个指标,当这个指标进行了patience次的迭代后没有变化,则以factor衰减学习率6.LambdaLR可以通过实现lambda函数以自定义方式进行学习率衰减,好处是灵活,可以给不同的参数组设定特定的学习了调整策略.在模型的fin
2021-09-14 13:04:59
824
原创 linux常用指令
常用 Linux 命令的基本使用常用 Linux 命令的基本使用序号命令对应英文作用01lslist查看当前文件夹下的内容02pwdprint work directory查看当前所在文件夹03cd [目录名]change directory切换文件夹04touch [文件名]touch如果文件不存在,新建文件05mkdir [目录名]make directory创建目录06rm [文件名]remove删除指定的文
2021-09-14 09:57:58
478
原创 linux命令行格式
终端命令格式command [-options] [parameter]说明:command:命令名,相应功能的英文单词或单词的缩写[-options]:选项,可用来对命令进行控制,也可以省略parameter:传给命令的参数,可以是 零个、一个 或者 多个[] 代表可选02. 查阅命令帮助信息2.1 --helpcommand --help说明:显示 command 命令的帮助信息02. 查阅命令帮助信息(知道)提示现阶段只需要 知道 通过以下两种方式可以查
2021-09-14 09:52:26
637
原创 pytorch dataloader获取数据流程图
DatasetFetcher会将Sampler取出来的索引值拿到.通过调用Dataset取出数据.而Dataset又是通过__getitem__ 方法进行索引取值的.最后将img和label经过collate_fn打包成batch
2021-09-12 12:06:08
874
原创 pytorch数据增强汇总
1.裁剪transforms.CenterCrop中心裁剪transforms.RandomCrop随机裁剪transforms.RandomReizedCrop随机大小,长宽比裁剪图片 transforms.FiveCrop裁剪左上,右上,右下,坐下,中心共五个裁剪目标组成的元组transforms.TenCrop裁剪左上,右上,右下,坐下,中心共五个裁剪目标组成的元组,并对这五个目标按指定要求水平翻转或者垂直翻转2.翻转和旋转transforms.RandomHor
2021-09-11 21:11:43
697
原创 C++类内3种访问权限
类在设计时,可以把属性和行为放在不同的权限下,加以控制访问权限有三种:public 公共权限protected 保护权限private 私有权限//三种权限//公共权限 public 类内可以访问 类外可以访问//保护权限 protected 类内可以访问 类外不可以访问 儿子可以访问父亲的保护内容//私有权限 private 类内可以访问 类外不可以访问 儿子不可以访问父亲的私有内容class Person{ //姓名 公共
2021-09-10 09:51:14
3698
原创 C++中引用的本质
本质:引用的本质在c++内部实现是一个指针常量.引用就是指针的一个特例,即不可修改指针朝向的指针。我们在使用引用时,编译器会自动把int* const ref = &a; 指针常量是指针指向不可改,也说明为什么引用不可更改讲解示例://发现是引用,转换为 int* const ref = &a;void func(int& ref){ ref = 100; // ref是引用,自动解引用转换为*ref = 100}int main(){ int a = 10;
2021-09-10 08:55:00
626
原创 值传递、地址传递、引用传递
引用做函数参数**作用:**函数传参时,可以利用引用的技术让形参修饰实参**优点:**可以简化指针修改实参//1. 值传递(形参无法修饰实参)void mySwap01(int a, int b) { int temp = a; a = b; b = temp;}//2. 地址传递(形参可以修饰实参)void mySwap02(int* a, int* b) { int temp = *a; *a = *b; *b = temp;}//3. 引用传递(形参可以修饰实参)v
2021-09-10 00:31:47
900
原创 栈区和堆区
栈区由编译器自动分配释放, 存放函数的参数值,局部变量等注意事项:1.不要返回局部变量的地址;2.栈区开辟的数据由编译器自动释放,这个函数运行结束后,此函数的形参和局部变量将被自动释放。int * func(){ int a = 10; return &a;}int main() { int *p = func(); cout << *p << endl;//第一次系统会有保护机制,以防误操作 cout << *p <<
2021-09-10 00:01:28
646
原创 C++内存分区(程序运行前)
内存分区C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收示意图:...
2021-09-09 23:31:32
661
原创 指针与数组
1.常量指针和指针常量常量指针即const在星号前面,被限制的指针只可以更改指针朝向(地址),不能更改解引用的值指针常量即const在星号后面,被限制的常量只可以更改解引用的值,不能更改指针朝向(地址)小技巧:看const右侧紧跟着的是指针还是常量, 是指针就是常量指针,是常量就是指针常量int main() { int a = 10; int b = 10; //const修饰的是指针,指针指向可以改,指针指向的值不可以更改 const int * p1 = &a; p1
2021-09-09 22:32:38
509
原创 面试问题汇总
1、共享屏幕写项目的某一模块的代码(在本地IDE写了伪代码)2、numpy列表(一维数组)中,选出大于某个值的元素(没留意到说的是numpy,写成Python列表的去了。。。最后也差一个点没写对)3、数据结构。树的遍历方法(在本地IDE写了先序遍历的伪代码),图的遍历方法。口头描述了层次、广度、深度算法过程4、tensorflow用过是吧(答一年前用的目前不太熟了),那2.0以上的版本用过吗(没有),了解2.x版本和1.x的区别和优势吗?5、caffe用过是吧(不熟悉了),那caffe的定义一个…(
2021-09-02 11:02:04
547
原创 改善过拟合的几种方法
改善过拟合写在前面什么是过拟合?改善过拟合1.增加训练数据量2.使用L1,L2正则化3.使用dropout写在前面本博客没有任何的数学公式的推导,只是记录一下自己理解过拟合的心路历程什么是过拟合?过拟合是机器学习中很重要的概念,目标函数Z中高次项越多,模型的非线性拟合能力会越强,拟合数据的时候会有更少的限制,从何实现“放飞自我”。简单的理解就是模型“过度”学习了,如下图的训练阶段模型拟合数据的情况来看,蓝线的误差要比红线大,但是只要测试的时候数据一多,就会出现训练的时候效果很好,但是测试的时候效果很
2021-08-29 00:38:17
1806
原创 YOLOv3中计算iou的细节
#结论:YOLO中计算iou时不考虑中心点坐标,只考虑宽高。即强制把GTbox和anchor的中心点重合(在此gridcell中重合,也就是gridcell的原点)粗暴的计算GTbox和anchor的iou。这点和faster-rcnn中计算iou的方式(计算iou时采用(x,y,w,h)四个点坐标)并不一样。#为什么可以这么做呢?因为得益于YOLO的特性,只要GTbox的中心落在某个gridcell中,那么这个GTbox就归这个gridcell管。在衡量iou时,只需要得到anchor与GTbox
2021-08-27 13:55:13
1731
转载 tensor.repeat()
这个函数如函数名一样,是复制函数,参数表示把这个tensor复制成多少个,参数以1,2,3位来解释:假设a是一个tensor,那么把a看作最小单元:a.repeat(2)表示在复制1行2列a;a.repeat(3, 2)表示复制3行2列个a;a.repeat(3, 2, 1)表示复制3个2行1列个a。...
2021-08-27 12:04:20
2639
1
原创 pytorch自定义数据集
#dataset类实现自定义数据集自定义数据集继承于dataset类实现**getitem**方法(否则会报没实现错误)实现**len**方法(否则会报没实现错误)#dataloader方法此方法将数据集打包成指定batchsize(使用默认方法打包)默认打包成元组的形式若要实现自定打包方法可以自己实现collate_fn方法并传入dataloader...
2021-07-17 23:16:56
588
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人