自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++中实现简单的Python风格字符串格式化函数

在Python在C++标准库中,看到C++11新的变参模板,发现它可以用来实现一个简单的类似Python风格字符串格式化函数[^1],语法如下:。如果你需要一个丰富的字符串格式化功能,可以考虑使用这个库。

2024-02-02 11:15:00 1775

原创 浅谈字符字面量的地址

它们两者虽都是字面量,但是他们两者有一个非常本质的区别,那就是字符字面量有自己的地址而数字字面量没有。个人理解的原因是,C/C++语言中并没有内置字符串这种类型,字符字面量实际上是。这意味着,同一个字符字面量在用指针做比较的时候,得到的结果并不一定相等。那么,同一个字符字面量的值,地址会是一样的吗?,但实际上,上面这个程序的输出是未定义行为,也就是说结果因编译器而异。都是字面量,因为他们没有任何的变量和它对应,直接以值的形式出现在表达式中。定义在不同的文件中,他们的值是不一样的。这个指针变量【1】。

2024-02-01 10:15:00 411

原创 Linux 中断、抢占、锁之间的关系

假设任务 A 获得了某个临界区的自旋锁 L 但是还没有退出临界区(也就 是还没有释放这把自旋锁),这个时候它被一个突如其来的中断打断,内核转而执行中断处理 B,而这个中断处理器 B 同样需要访问这个临界区,因此它需要先获取自旋锁 L,于是中断处理 B ,开始自旋锁因为被 A 占有,而 A 被 B 打断无法运行,也就无法释放自旋锁 L ,更糟糕的是中断处理是无法抢占的所以 B 一直自旋,这就形成了死锁。这种从一个运行的任务切换到另一个运行的任务的行为叫做任 务切换,而任务切换是通过调度来完成的。

2024-01-31 10:15:00 1665

原创 C++中构造函数和虚拟函数的微妙关系

构造函数和虚拟函数之间存在许多比较微妙的关系,比如构造函数不能是虚拟函数,构造函 数不能正常调用虚拟函数等等,本文将会讨论产生这些问题的原因。

2024-01-30 10:15:00 675

原创 C++中访问私有成员的方法

今天读《Exceptional C++ Style》一书的时候,发现在C++中竟然存在一种合法的方式去 访问对象的私有成员,想起以前和嘉伟讨论过了调用私有函数的问题,猛然发现方法不止 原来一种,这里做一个总结。这三种方法都是使用一个间接层,现在想来果然还是那句老话,没有什么问题是通过间接 层无法解决的。当然,这里说的所有内容,基本上纯属个人找乐子而已,你在实际编码中不到万不得已千 万不要去使用这些方法,它们给程序的安全和耦合性上都有非常大的危害。

2024-01-29 11:00:00 1066

原创 C++ STL 容器删除元素最佳实践

在STL容器删除的时候,慎重选择删除元素的方法,一不小心,就容易踩坑,这主要是因为迭代器失效的问题。请看下面这段代码:看起来似乎也没什么问题,编译运行也通过了,然后打印删除后容器的所有元素:咦,怎么里面还有 3 ?这是因为使用 erase 删除元素之后,迭代器 it 已经指向了被删除元素的下一个元素。所以当删除第一个 3 后,it 实际指向了下一个元素 3(或者说元素 3 向前移了一个单位),因此再经历 it++ 后,此时删除的其实是元素 4 ,而上一个元素 3 并没有被删除。此外,如果删除的是

2024-01-26 10:30:00 369

原创 使用 Doxygen 生成文档注释

全文是个人关于注释的观点,很可能有误,不想误人子弟,请慎重考虑其中的任何一个观点 ,欢迎拍砖。

2024-01-25 10:30:00 1020

原创 std::bind 的实现原理

C++11 中有一个非常神奇的函数std::bind,它让你可以对函数进行适配,动态的绑定参 数。比如你有一个函数接收两个参数,一个算法接收单参数的,那么通 过std::bind我们可以让两者协同工作。那么这个神奇的bind函数和神奇的占位符到底是怎么实现的呢,它们的工作原理是什么?这个问题困扰我很久,最近在网上找到一篇讲解非常清晰的,这里对其中的 内容做简单的摘要和翻译,希望对于大家理解背后的工作原理会有帮助。

2024-01-24 10:30:00 924

原创 一种跨平台的C/C++动态库的符号隐藏方式

在同一个文件中,如果有一些函数我们并不想要让外部访问,我们通常会添加 static 修饰符,把它设置为内部链接属性。但是通常库不太可能是单文件组成,这些文件中有些是做接口给外部使用,有些则单纯的只是库的内部实现。对于外部使用者来说,内部实现的这些符号没有实际的作用,理论上我们完全可以像对待文件内部符号一样把它们统统隐藏掉。但是在语言层面我们并没有相关的语法用于表达这个概念(Java中的包访问权限和C#中的internal类似这个概念)。

2024-01-23 10:00:00 1022

原创 匿名命名空间和 static 声明的区别

在C语言中,如果我们想要一个符号只在文件内部(严格来说是编译单元内部,也就是经 过预处理之后得到的源文件)可用,我们需要把它声明成static在C++之所以推荐在C++使用匿名名字空间来取代staticstatic的这个关键词的用途过多,比如你还可以用它声明静态成员,用它声明函数内 部的静态变量。static3. 某些模板的参数必须具有外部链接熟悉,比如下面的代码是不合法的虽然static关键字和匿名命名空间完成了类似是事情,但是这两者之间到底有什么本质 的区别呢?这篇文章的剩余部分会详细说明这个问题。

2024-01-22 17:04:38 438

原创 C++11 中的 emplace

最近读《C++ 标准库》这本书,发现C++11中大部分的容器对于添加元素除了传统的insert或者之外都提供一个新的函数叫做emplace。比如如果你想要向那么这两种方式的区别到底是什么呢?在《C++标准库》一书中没有给出解释,我查了一 下相关的资料,在此做一个总结。

2024-01-22 14:50:06 596 1

原创 在C++类声明中为什么既包含接口又包含实现

这种方式来自C++的前身,该语言的设计初衷是结合Simula语言在程序组 织上的便利性和C语言本身的高效性。当年C++之父使用Simula写模拟器,发现类的概念非 常好用,但是最终因为Simula本身效率非常的低而不得不使用BCPL语言重写。他发现Simula之所以低效的一个很重要的原因是无法在栈和静态数据区(存放全局变量、 静态变量的区域)中创建用户自定义的对象(其中的原因我不清楚,不过从《C++语言的设 计和演化》一书中的论述来看,应该是因为它把类接口声明和类实现声明分离开来了)。

2024-01-22 14:41:05 575

原创 关于 C++ 参数使用指针还是引用的总结

这本书的第一条就是区分指针和引用。它们两者之间的最大区别是引用必须指向某个对象而 指针可以是NULL,此外引用一旦指定不能更改而指针可以。这两个区别点导致引用有更加安全和高效的特性,但是指针却有无可比拟的灵活性。大部分 人出于安全性的考虑会推荐使用引用,这其实也是它设计的主要目的,但是如果你想要灵活 的设计,大部分时候你只能选用指针,比如设计模式种的大部分设计都是使用指针而不是使 用引用。

2024-01-22 11:06:44 436

原创 C++轮子(5) · 函数式编程

和算法配套出现的组件除了迭代器之外还有仿函数,这篇文章会重点介绍仿函数的使用以及和它相关的函数式编程工具。

2024-01-19 14:52:39 396

原创 C++轮子(4) · STL算法和迭代器

STL的六大组件中最主要的是容器和算法这两个,一个泛化数据的存储,一个泛化数据的操作。前面两篇文章我们简单的介绍了STL中的容器,这篇文章将会介绍STL算法以及粘合容器和算法的迭代器。STL是基于模板实现,容器基于模板类,而算法基于模板函数。在具体介绍算法和迭代器之前,我们先简单的回顾一下模板函数的语法。

2024-01-18 19:52:23 414

原创 C++轮子(3) · STL关联容器

我们知道 Concept 表示的不是一个类型而是一个类型集合,所以 Refinement 表示的其实也是一个类型集合,这些类型比 Concept 中的定义的类型要有更多的约束和特性(约束和特性其实是一个问题的两个方面,你约束的越是严格,你能够使用的特性越多,但是你能使用的场景越少,比如 Java 中 Object 类哪儿都能用,又哪儿都用不了)。如果你在你的程序中需要查找最吻合的某个值(比如上面例子中的找到给定分辨率最合适的比特率),你可以使用上面提到的这几个函数,它们可以在logn之内找到给定的位置。

2024-01-18 19:48:05 1072

原创 C++轮子(2) · STL 序列容器

想要理解为什么我们说std::queue不是容器,我们需要理解前面我们一直没有讨论的一个问题——什么是容器?public:......在C++范型的世界里,并不存在类似这样的语法元素,定义某一个概念靠的是文本描述(C++后续的版本可能会改善这一点,但是目前最新的版本C++17没有)。这段文本描述称之为concept,它定义来范型世界里面的接口。比如说容器的concept如下:也就是说,标准里面使用这样的文字描述来一个容器应该满足的条件,满足这些条件的就是一个容器。

2024-01-17 17:05:15 892

原创 C++轮子(1) · STL 简介

大部分人提到 C++ 标准库的时候首先想到的就是STLSTL的全称是,它背后的技术支撑是模板,由于很多人对于模板本身的不了解,导致很多人对于STL的理解也非常的片面。有些人把STL等同于容器,有些人把STL等同于标准库。C++支持非常多的编程范式【1】,C++标准库中用到的基本上是基于对象和泛型这两种(没错,标准库中面向对象其实非常少,没记错的话,只在异常体系中出现过),很明显STL不等同于C++标准库。那是不是说标准库中的泛型部分就属于STL呢?答案也是否定的。

2024-01-17 14:35:31 448

原创 为什么很多人禁用拷贝(复制)构造函数

关于C++的拷贝构造函数,很多的建议是直接禁用。为什么大家会这么建议呢?没有拷贝构 造函数会有什么限制呢?如何禁用拷贝构造呢?这篇文章对这些问题做一个简单的总结。这里讨论的问题以拷贝构造函数为例子,但是通常赋值操作符是通过拷贝构造函数来实现 的( copy-and-swap 技术,详见《Exceptional C++》一书),所以这里讨论也适用于赋 值操作符,通常来说禁用拷贝构造函数的同时也会禁用赋值操作符。

2024-01-15 16:07:02 955

原创 深度学习的数学基础汇总

一、损失函数(*)系统学习深度学习(八)--损失函数0-1损失函数平方损失函数交叉熵损失函数当然,还有16年出的center-loss 二、激活函数(*)深度学习笔记(三):激活函数和损失函数sigmodtanhreluleaky-reluelumaxoutReLU、LReLU、PReLU、CReLU、ELU、SELU三、优化方法(*)...

2018-12-05 16:07:11 2060

原创 机器学习常用方法汇总

0 基本知识生成模型:朴素贝叶斯、混合高斯模型、隐马尔可夫模型判别模型:感知机、k近邻法、决策树、逻辑斯蒂回归模型、最大熵模型、支持向量机 (SVM)、boosting方法 (AdaBoost等)、条件随机场 (conditional random field, CRF)、CNN一、感知机感知机原理小结深度学习概述:从感知机到深度网络二、KNNK-近邻算法(KNN)概述...

2018-11-29 15:03:00 1382

原创 笔试记录

2018/9/15   顺丰科技  10:00-12:00    题型一、选择题(36道)包含计算机组成原理计算机网络、机器学习深度学习等内容二、编程题(2道)1、判断芝麻是否在面包上,其中面包可以用多边形拟和,输入为:n(拟合面包的多边形点数)坐标(面包的n个点的坐标)m(芝麻的个数)芝麻坐标(每个芝麻的坐标)输出:坐标(在面包上的芝麻坐标)...

2018-11-29 14:49:26 474

原创 配置YOLO-v3训练自己的数据---完整版(含常见问题)

目录0、简介1、准备--编译darknet2、测试是否安装成功3、自己的数据准备4、修改自己的配置文件5、训练6、一些常见问题0、简介YOLO一共有3代,这里主要讲第三代的配置,其他的类似。YOLO-v3使用的是dark-net框架写的代码,dark-net是用C语言编写的框架,效率很高。github地址为:https://github.com/pjre...

2018-11-23 11:29:00 18118 23

原创 人体姿态估计(Human Pose Estimation)---优质学习资源

目录0、简介1、2D人体姿态估计2、3D人体姿态估计3、其他知识                                          这是一个简单的资源仅供参考0、简介姿态估计的目标是在RGB图像或视频中描绘出人体的形状,这是一种多方面任务,其中包含了目标检测、姿态估计、分割等等。有些需要在非水平表面进行定位的应用可能也会用到姿态估计,例如图形、增强现实或...

2018-09-29 20:19:56 13346

原创 深度学习框架详解:汇总

这是初稿,还在修改中! 目录一、经典的网络结构1.1LeNet1.2AlexNet1.3ZF-Net1.4VGG-Net1.5GoogLeNet1.6ResNet1.7Densnet1.8ResNext1.9DPN1.10随机深度(Deep networks with stochastic depth)二、目标检测2.1 基于候选区域的方...

2018-09-28 15:56:46 2651

原创 感受野计算+卷积/池化输出尺寸计算+卷积参数量计算

目录1、卷积后输出尺寸的大小1.1卷积参数量计算2、池化后输出尺寸大小3、感受野的计算鉴于网上资源比较混乱,而且笔试考的多,故作此总结。希望能帮到大家。1、卷积后输出尺寸的大小输入:L*L*D卷积核: 大小size=F*F*d,滑动步长stride=S,0填充 0 padding=P;输出:l*l*d则输出尺寸为:l=(L-F+2*P)/S+11.1卷积...

2018-09-28 15:26:29 3316

原创 百度计算机视觉岗笔试题-2018

注:选择题记不清了,简答题和系统设计大致题目如下,程序题也是大致意思,不是原题,原题给了一个实际场景,此处忽略。笔试时间为2018年9月14日19:00-21:00,用的是赛码网,和牛客网有所区别,爱奇艺用的也是赛码网,只前没用过,所以习惯他的编译器都浪费了很多时间。一、选择题(30道,60分)有图像处理题有程序题,几道是C++,两道是python有计算机组成原理的题目有计...

2018-09-14 21:07:35 4561 2

原创 卷积原理:几种常用的卷积(标准卷积、深度卷积、组卷积、扩展卷积、反卷积)

 0、标准卷积默认你已经对卷积有一定的了解,此处不对标准卷积细讲。举个例子,假设有一个3×3大小的卷积层,其输入通道为16、输出通道为32。那么一般的操作就是用32个3×3的卷积核来分别同输入数据卷积,这样每个卷积核需要3×3×16个参数,得到的输出是只有一个通道的数据。之所以会得到一通道的数据,是因为刚开始3×3×16的卷积核的每个通道会在输入数据的每个对应通道上做卷积,然后叠加每...

2018-09-08 17:48:50 10867 2

原创 详解深度学习之经典网络架构(十):九大框架汇总

目录0、概览1、个人心得2、总结本文是对本人前面讲的的一些经典框架的汇总。纯手打,如果有不足之处,可以在评论区里留言。0、概览(1)详解深度学习之经典网络架构(一):LeNet(2)详解深度学习之经典网络架构(二):AlexNet(3)详解深度学习之经典网络架构(三):ZFNet(4)详解深度学习之经典网络架构(四):VGG-Net(5)详解深度学习之经...

2018-09-08 10:44:33 28976 8

原创 opencv图像处理初步(二):实现色彩还原---(白平衡)

 0、说明目前很多摄像头特别是网络摄像头对色彩的处理情况存在色差,比如一个橙子(是黄色的),但是拍出来的效果会泛白,有点像梨子的颜色,因此要用到色彩校正。一般色彩校正使用白平衡,白平衡一般又分为:灰世界、完美反射、等,这里不做具体陈述。此处提供了一种方法,总体原理为(对每个通道而言):1)对偏暗和偏亮的颜色进行特定的处理:指定一个特定的像素值;2)对其他像素值进行小幅度拉伸;...

2018-09-07 17:51:04 14435

原创 详解深度学习之经典网络架构(九):DPN(Dual Path Network)

目录0、简介1、优势2、网络基本结构3、总结0、简介论文:Dual Path Networks论文链接:https://arxiv.org/abs/1707.01629代码:https://github.com/cypw/DPNsMXNet框架下可训练模型的DPN代码:https://github.com/miraclewkf/DPN算法详解:介绍的du...

2018-09-06 09:33:26 8076

原创 详解深度学习之经典网络架构(八):ResNeXt

目录0、简介1、优势2、网络基本结构3、总结0、简介论文:Aggregated Residual Transformations for Deep Neural Networks论文链接:https://arxiv.org/abs/1611.05431PyTorch代码:https://github.com/miraclewkf/ResNeXt-PyTorch这...

2018-09-06 09:09:22 8736 2

原创 详解深度学习之经典网络架构(六):ResNet 两代(ResNet v1和ResNet v2)

目录一、ResNet v1二、ResNet v2一、ResNet v1一说起“深度学习”,自然就联想到它非常显著的特点“深、深、深”(重要的事说三遍),通过很深层次的网络实现准确率非常高的图像识别、语音识别等能力。因此,我们自然很容易就想到:深的网络一般会比浅的网络效果好,如果要进一步地提升模型的准确率,最直接的方法就是把网络设计得越深越好,这样模型的准确率也就会越来越准确。那...

2018-09-03 10:15:45 48468 22

原创 详解深度学习之经典网络架构(五):GoogLeNet 四代(Inception v1、v2、v3、v4)

目录0.简介一、Inception V1二、Inception V2三、Inception V3四、Inception V40.简介2014年,GoogLeNet和VGG是当年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名、VGG获得了第二名,这两类模型结构的共同特点是层次更深了。VGG继承了LeNet以及AlexNet的一些框架结构,...

2018-09-03 09:33:48 4930 1

原创 详解深度学习之经典网络架构(四):VGG-Net

一、简介VGG全称是Visual Geometry Group属于牛津大学科学工程系,其发布了一些列以VGG开头的卷积网络模型,可以应用在人脸识别、图像分类等方面,分别从VGG16~VGG19。VGG研究卷积网络深度的初衷是想搞清楚卷积网络深度是如何影响大规模图像分类与识别的精度和准确率的,最初是VGG-16号称非常深的卷积网络全称为(GG-Very-Deep-16 CNN),VGG在加深网络...

2018-08-31 09:42:35 10595 4

原创 详解深度学习之经典网络架构(三):ZFNet

目录一、简介二、网络结构三、总结一、简介由于AlexNet的提出,大型卷积网络开始变得流行起来,但是人们对于网络究竟为什么能表现的这么好,以及怎么样能变得更好尚不清楚,因此为了针对上述两个问题,提出了一个新颖的可视化技术来一窥中间特征层的功能以及分类的操作。二、网络结构可视化技术揭露了激发模型中每层单独的特征图,也允许观察在训练阶段特征的演变过程且诊断出模型的潜在问题。...

2018-08-29 10:23:23 20213

原创 详解深度学习之经典网络架构(二):AlexNet

目录一、简介二、网络结构1. 使用了Relu激活函数。2. 标准化(Local Response Normalization)3. Dropout4. 数据增强(data augmentation)三、tensorflow代码实现一、简介AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年...

2018-08-29 09:56:18 22767 4

原创 详解深度学习之经典网络架构(一):LeNet

目录一、基本简介二、LeNet网络的基本结构1、INPUT层-输入层2、C1层-卷积层3、S2层-池化层(下采样层)4、C3层-卷积层5、S4层-池化层(下采样层)6、C5层-卷积层7、F6层-全连接层8、Output层-全连接层三、总结一、基本简介LeNet-5出自论文Gradient-Based Learning Applied to Doc...

2018-08-29 09:21:03 20809 4

原创 tensorflow深度学习实战笔记(四):bazel编译tensorflow工具的使用方法

一、下载并安装下载地址:https://github.com/bazelbuild/bazel/releases官网安转教程:https://docs.bazel.build/versions/master/install-ubuntu.html安装比较简单,可以参考官方教程进行。安装成功的测试:在终端输入bazel,如果没有报“未找到命令”,说明已经安装成功。二、bazel常...

2018-08-27 10:45:43 13980 8

原创 tensorflow深度学习实战笔记(三):使用tensorflow lite把训练好的模型移植到手机端,编译成apk文件

目录一、准备工作1.1模型训练1.2模型固化和pb转tflite1.3下载tensorflow源码1.4安装android studio二、在Android studio中进行开发2.1修改app的build.gradle文件2.2导入自己的模型和标签并进行编译tensorflow深度学习实战笔记(二):把训练好的模型进行固化,讲解了如何固化模型以及把pb模型转...

2018-08-27 10:22:25 6284 4

空空如也

空空如也

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

TA关注的人

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