自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

鲁点点的博客

读书笔记

  • 博客(64)
  • 收藏
  • 关注

原创 C++入门(四):完美转发

函数模板可以将自己的参数“完美”地转发给内部调用的其它函数。所谓完美,即不仅能准确地转发参数的值,还能保证被转发参数的左、右值属性不变。注:在 C++ 中,一个表达式不是左值就是右值。

2022-09-27 19:34:20 1152 1

原创 C++入门(三):移动语义

拷贝构造函数: C++ 98/03 标准定义,作用是用其它对象初始化一个同类的新对象。需要注意:1.实现原理:为新对象复制一份和其它对象一模一样的数据。2.当类中拥有指针类型的成员变量时,拷贝构造函数中需要以深拷贝的方式复制该指针成员(否则一旦多个对象中的指针成员指向同一块堆空间,这些对象析构时就会对该空间释放多次,这是不允许的)

2022-09-27 19:24:13 2082 1

原创 C++入门(二): 引用(右值引用)

/右值引用不能绑定左值a = 100;//和常左值引用不同,右值引用可以对右值进行修改//输出 100。

2022-09-27 19:20:28 797

原创 C++入门(一): 引用(左值引用)

当引用的类型和数据的类型不一致时,如果它们的类型是相近的,并且遵守「数据类型的自动转换」规则,那么编译器就会创建一个临时变量,并将数据赋值给这个临时变量(这时候会发生自动类型转换),然后再将引用绑定到这个临时的变量。引用和指针在本质上是一样的,不能绑定到无法寻址的临时数据,并且C++对引用更加严格,在某些编译器下甚至连放在内存中的临时数据都不能绑定。常引用: 无特殊说明的情况下,常引用指的是常左值引用;type 是被引用的数据的类型,name 是引用的名称,data 是被引用的数据。

2022-09-27 19:18:34 974

原创 入门设计原则C++实现二:开闭原则

软件实体应当含义:对于扩展是开放的(Open for extension)。也就是模块的行为是可以扩展的,当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。当项目需求变动时,在不修改源代码前提下,通过增加等方式满足新的需求,而不是修改。...

2022-08-03 09:34:22 259

原创 入门设计原则C++实现一:单一职责原则

上面代码Animal类中的behavior方法做了所有操作,不管传入的参数是何值,执行的操作是固定的。但实际并不是我们想要的,比如当传入是燕子/鱼的时候,就会出现违背常理结果。究其原因就是animal类扮演的角色过多,处理出现异常了,这种就是违背的单一职责原则较为典型的例子。此时需要考虑将类拆分类1,类2, 类1负责功能A,类2负责功能B。变更引起的风险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性、维护性都有非常大的帮助。...

2022-08-03 09:30:50 446 1

原创 入门设计原则C++实现五:依赖倒置原则

为了更好理解该原则,首先明确以下概念高层次模块也叫上层代码,一般可以认为是调用方(客户端)。以系统三层结构(表示层,业务逻辑层,数据访问层)为例子,表示层相对于业务逻辑层来说,就是高层;业务逻辑层相对于数据访问层来说就是低层;底层次模块也叫作下层代码,一般可以认为是被调用方(提供服务的一方)。如上例子,业务逻辑层相对于表示层来说,就是底层;数据访问层相对于业务逻辑层来说,就是底层。抽象设计原则/模式中的抽象可以理解为约束/规范,代码中表现为接口/抽象类具体考虑以下案例。.........

2022-07-29 09:30:02 276

原创 入门设计原则C++实现四:里氏替换原则

里氏替换原则主要阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中蕴含的原理。里氏替换原是继承复用的基础,它反映了基类与子类之间的关系,是对开闭原则的补充,是对实现抽象化的具体步骤的规范举个例子,比如有一个基类Animal和一个派生类Cat,程序中任何使用Animal对象的地方,我们都可以放Cat对象上去(派生类的对象能够替换子类的对象),而完全不扰乱程序的逻辑(程序里关于Animal的假设,Cat都不能打破)。......

2022-07-29 09:27:41 922 1

原创 入门设计原则C++实现三:接口隔离原则

在下面例子中,IBehavior类是接口类,fish和bird类继承自该类并使用该类提供的接口(客户端依赖接口),但是在第一份代码中,客户端如鱼类依赖了它不需要的接口(fly方法),因此违背接口隔离原则中的“客户端不应该依赖它不需要的接口”。臃肿(多余方法)接口设计,称之为胖接口,一点接口方法变动,会影响所有实现该接口的客户端类程序,比如当在行为类中增加新的动作接口时,如“爬行”,需要在所有派生动物类中重写爬行方法,耦合度过高。接口一种约束形式,为不相关的类提供约定好的处理方法;.........

2022-07-29 09:25:04 754

原创 设计模式一: Observer(观察者模式)

设计模式入门,观察者模式,描述了主要参与者并通过一个实例说明

2022-07-21 14:40:05 1141

原创 CUDA编程1--GPU内存模型

GPU/CUDA编程基础

2022-06-29 17:27:00 695

原创 VScode+远程服务器docker+C/C++ 代码挑战配置

背景终端机:Win 10 ,安装VSCode服务器:Ubuntu18.04环境管理 Docker开发语言 CDokcer目录挂在至Ubuntu18.04,同享代码文件系统。VSCode 通过ssh方式连接至 服务器,选择共享代码文件系统作为工作空间,如mount目录安装插件。注意,安装在服务器中而不是本地至此可实现代码跳转...

2021-12-16 16:41:32 1988

原创 jupyter notebook + 服务器中docker 使用配置

背景:设备1: 服务器Ubuntu16.04 无图形界面,docker 环境设备2:笔记本期望在笔记本访问 服务器docker中的环境(pytorch等)step 1: 确保笔记本能访问到服务器ssh -p 11122 user_name@ssh-proxy.xxx.com其中user_name@ssh-proxy.xxx.com 为服务器用户名和地址11122 为docker 映射端口step2: 服务器docker 安装jupyterpip install jupyter notebo

2021-10-22 13:25:24 606

原创 C/C++基础一:stack& heap

stackstack 由操作系统分配释放,用于存放函数值、局部变量等。操作方式类似于数据结构中的 stack(先入后出)heap堆,由程序员释放。若程序员不释放,则程序结束时由OS回收(内部机制用到链表数据结构)malloc、free是C中的函数。需要引用#include<stdlib.h>, 只负责分配和释放内存。new、delete是C++中的操作符,不需要引入头文件。new:首先分配内存;再调用类的构造函数;...

2021-10-10 22:36:00 214

原创 PyTorch 入坑十一: 损失函数、正则化----深刻剖析softmax+CrossEntropyLoss

这里写目录标题概念Loss FunctionCost FunctionObjective Function常用的损失函数交叉熵损失函数nn.CrossEntropyLoss()自信息熵(信息熵)相对熵(KL散度)softmax loss其他概念Loss Function计算一个样本的损失:Cost Function整个训练集(或者batch)的损失平均值Objective Function目标函数是一个更广泛的概念,在机器学习中,目标函数包含Cost和Regularization(正则项)

2021-09-25 21:42:19 3194

原创 PyTorch 入坑十:模型泛化误差与偏差(Bias)、方差(Variance)

问题阅读正文之前尝试回答以下问题,如果能准确回答,这篇文章不适合你;如果不是,可参考下文。为什么会有偏差和方差?偏差、方差、噪声是什么?泛化误差、偏差和方差的关系?用图形解释偏差和方差。偏差、方差窘境。偏差、方差与过拟合、欠拟合的关系?偏差、方差与模型复杂度的关系?偏差、方差与bagging、boosting的关系?偏差、方差和K折交叉验证的关系?如何解决偏差、方差问题?本文主要参考知乎文章,如有侵权,请联系作者删除。偏差、方差和噪声原文请参考链接,主要结论总结如下:为什么

2021-09-25 15:33:04 1461 1

原创 PyTorch 入坑九:权重初始化

梯度消失与爆炸参考x。可以得出结论: 要避免梯度消失或者梯度爆炸,就要严格控制网络输出层的输出值的范围,也就是每一层网络的输出值不能太大也不能太小。那么,参数如果使用均匀分布进行初始化,网络每一层的输出结果如何呢,下面通过代码验证BP网络的输出,代码中使用输出Tensor的标准差来衡量数据的尺度范围:import osimport torchimport randomimport numpy as npimport torch.nn as nnclass MLP(nn.Module):

2021-09-25 00:23:54 9768 2

原创 PyTorch 入坑八:卷积与转置卷积

卷积操作略输入输出尺寸变化略PyTorch实现nn.Conv2d(in_channels, out_channels, kernel_size, stride=1. padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')in_channels:输入通道数ou

2021-09-21 23:30:21 1869 2

原创 PyTorch 入坑七:模块与nn.Module学习

模型创建概述本章开始正式整理深度学习网络相关基础知识。模型创建分为两个部分:模型结构创建和权值初始化。模型结构创建从粒度上讲:有层layer和网络Net 两个粒度。前者是指构成CNN的基础结构,如卷积层、池化层、BN层、激活函数层、损失函数层等;后者是指实现某一功能的网络结构如LeNet,AlexNet和ResNet等。创建好模型后,需要对模型进行权值初始化,pytorch提供了丰富的初始化方法,Xavier,Kaiming,均匀分布,正态分布等。好的权重初始化有以下几点优点:加速网络收敛解更

2021-09-21 15:45:59 1609 1

原创 PyTorch 入坑六 数据处理模块Dataloader、Dataset、Transforms

深度学习中的数据处理概述深度学习三要素:数据、算力和算法在工程实践中,数据的重要性越来越引起人们的关注。在数据科学界流传着一种说法,“数据决定了模型的上限,算法决定了模型的下限”,因此在这个“说法”中,明确的表明了,只有好的数据才能够有好的模型,数据才是决定了模型的关键因素。数据很重要简单来说,就是找到好的数据,拿给模型“吃”。但是怎么找到“好”的数据,什么样才算是“好”的数据,给模型吃了后模型性能有没有变化等等问题是一个非常庞大的课题,本文并不深入探讨,首先从特征工程的角度抛出一张图,另外总结一

2021-09-20 19:07:16 1130 1

原创 PyTorch 入坑五 autograd与逻辑回归

torch.autograd      深度学习模型的训练就是不断更新权值,权值的更新需要求解梯度,梯度在模型训练中是至关重要的。      然而求解梯度十分繁琐,pytorch提供自动求导系统。我们不需要手动计算梯度,只需要搭建好前向传播的计算图,然后根据pytorch中的autograd方法就可以得到所有张量的梯度。torch.autograd.backward功能:自动求取计算图所有节点变量的梯度tensor:

2021-09-20 01:07:10 277

原创 PyTorch 入坑四 梯度、链式法则、计算图与反向传播

PyTorch 一文入门PyTorch 入坑四:PyTorch 入坑四:

2021-09-17 00:47:12 1171 3

原创 PyTorch入坑(一)~(三): Tensor的概念,基本操作和线性回归

Documentation: https://mmsegmentation.readthedocs.io/English | 简体中文IntroductionMMSegmentation is an open source semantic segmentation toolbox based on PyTorch.It is a part of the OpenMMLab project.The master branch works with PyTorch 1.3+.[外链图片转存失败,源

2021-09-16 20:35:28 375

原创 从普通相机模型到鱼眼畸变模型--标定与去畸变

使用markdown写博客的优缺点方便些注释标题 List item d d d adwq eList itemd awqdad add addad a#include <stdio.h>int main() {printf()}|星期一 |2 |3|| 3| 4|4|

2021-09-14 20:19:47 3815 3

原创 top 并grep 特定信息打印至txt

工程中我们经常会查看程序的占用情况,并统计相关数据,以下命令可实现打印top输出的cpu 内存占用率至txttop -n 10 -d 1 -b |grep -E “chrome” |tr -s " "| cut -f 9,10|cut -f 10 -d ’ '> test.txt其中-n 10 -d 1 分别为监控次数和时间间隔, chrome为所要监控的应用,cut -f 10 -d ’ ’ 为一行中提取 cpu占用率数字。...

2021-04-02 19:43:14 3244 1

原创 PCL Lesson6:Eigen基础

#include "stdio.h"#include &lt;iostream&gt;#include &lt;Eigen/Core&gt;#include &lt;Eigen/LU&gt; //LU分解求逆int main(int argc,char*argv[]){ Eigen::Matrix3d R = Eigen::Matrix3d::Random(); ...

2019-01-07 12:23:19 270

原创 PCL Lesson5: 直通滤波+空间平面拟合+提供原始点云数据集PCD文件

书接上文。本节做下面一个工作:通过直通滤波过滤一小片平面区域的点云(标定版),通过最小二乘法拟合,并把参数化的平面绘制在原图中。待修正:拟合平面时离散点的处理。和拟合效果的判别效果:原始点云的文件这这里:(16线激光雷达,3.2w左右个点)https://pan.baidu.com/s/1k6JOqbMgIFBJVz54bt3Ekg#include &lt;stdio.h&gt;#...

2018-12-03 20:55:51 779

原创 PCL Lesson 4:直通滤波+多视图可视化

输入原始激光点云,经过直通滤波,在一个窗口中同时显示两个点云输入:pcdData//lader3.PCD 文件输出:可视化#include &lt;stdio.h&gt;#include&lt;boost/thread.hpp&gt;#include&lt;boost/timer.hpp&gt; #include &lt;pcl/visualization/cloud_viewe...

2018-12-03 19:31:32 601

原创 PCD Lesson3:PCD文件的读取

PCD文件的读取#include &lt;stdio.h&gt;#include&lt;boost/thread.hpp&gt;#include&lt;boost/timer.hpp&gt; #include &lt;pcl/visualization/cloud_viewer.h&gt;#include &lt;pcl/io/io.h&gt;#include &lt;pcl/io...

2018-12-01 19:58:47 444

原创 PCD Lesson2:PCD文件的write

随机生成PCL点云,写入到PCD文件中并保存#include &lt;stdio.h&gt;#include &lt;string&gt;#include &lt;vector&gt;#include &lt;fstream&gt;#include &lt;iostream&gt;#include&lt;boost/thread.hpp&gt;#include&lt;boost/t...

2018-12-01 19:48:22 373

原创 PCL Lesson1 :PCL库PCLVisualizer的简单使用

PCL库PCLVisualizer的简单使用。包括实例化对象,填充点云,静态显示和动态显示#include &lt;stdio.h&gt;#include &lt;string&gt;#include &lt;vector&gt;#include &lt;fstream&gt;#include &lt;iostream&gt;#include&lt;boost/thread.hpp...

2018-12-01 19:33:26 1688

原创 自动驾驶领域常用的数据集(检测,分割,定位)

原文链接:https://mp.weixin.qq.com/s?__biz=MzA3NDIyMjM1NA==&amp;mid=2649030409&amp;idx=1&amp;sn=2202eba9d4f38acacc46da72f1e6eb86&amp;chksm=87134174b064c8627d904ca31cbb723a614d4223ef67c7642fbde5e6cfb57eee23...

2018-11-26 21:31:22 14666 2

转载 /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9: undefined reference toTIFFIsTiled@LIBTIFF_4.0'

今天编译caffe ,本来编译过无数次caffe了,基本坑都能解决的。但这次惹恼我了。一直搞不定。错误信息是这样的:/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.8: undefined reference to TIFFIsTiled@LIBTIFF_4.0' /usr/lib/x86_64-linux-gnu/libopencv_hi...

2018-11-21 21:12:31 2428

原创 google protobuf的简介、安装和使用

简介: http://blog.csdn.net/hailong0715/article/details/52016682安装和使用: http://blog.csdn.net/hailong0715/article/details/52057873

2018-01-31 19:28:48 291

转载 读caffe源码:gflags的使用

gflags的使用 原创 2014年12月16日 17:00:35 标签:

2018-01-31 14:23:08 915

转载 ubuntux学习日记

ubuntu 14.04 下利用apt-get方式安装opencv 原创 2016年10月06日 22:17:31 标签:

2018-01-30 11:29:41 332

转载 Ubuntu学习日记--Lesson10:gcc、make、makefile、cmake、cmakelists区别

1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。2.当你的程序只有一个源文件时,直接就可以用gcc命令编译它。3.但是当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大4.所以出现了make工具

2018-01-29 22:13:20 283

转载 Ubuntu学习日记--Lesson9:显卡工作状态查看命令

在使用GPU做计算,比如跑 Deep Learning代码的时候,我们可能希望能够实时检测显存的使用情况,但是Linux一般不会自带监视现存的工具。Nvidia自带了一个 nvidia-smi的命令行工具,会显示显存使用情况,但我们总不能每 10s 中就输入一次这个命令。 这时候就需要用到 watch命令了。watch 命令简介watch是做什么的?看一下系统怎么说$ whatis w

2018-01-21 22:01:36 2756

原创 Ubuntu学习日记--Lesson8:make 2>&1 | tee log.txt命令解析 (错误输出,重定向,管道符)

make 2>&1 | tee a.log1. make是什么? make是linux下一个非常强大的命令,简单点就是你要编译你的源代码就得靠他了。2. 2>&1是什么意思? 0 stdin,1 stdout,2 stderr 2>&1应该分成两个部分来看,一个是2>以及另一个是&1, 其中2>就是将标准出错重定向到某个特定的地方;&1是指无论标准输出

2018-01-16 22:09:43 909

原创 caffe学习日记--lesson8:站在巨人的肩膀上, denny的学习专栏——徐其华——caffe

caffe的入门使用教程 和caffe python接口,思路清晰、完整,入门值得一看 http://www.cnblogs.com/denny402/category/759199.html

2018-01-16 11:15:34 582

空空如也

空空如也

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

TA关注的人

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