自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

harry的博客

Done is better than perfect.

  • 博客(61)
  • 资源 (3)
  • 收藏
  • 关注

原创 如何窥探C++对象内存布局

读过《深度探索C++对象模型》一书会发现,本文中通过GDB探究的child对象内存布局与书中的描述略有差异———虚表开头是否有8Bytes的0填充。这一细节其实无所谓对错,因为未在语言层面规定,具体细节视编译器的实现而定。本文想表达的观点在于:书中描述的结论并不重要,没必要死记硬背。重要的是结论背后的逻辑和依据,以及独立探究并验证结论的能力。

2023-03-09 17:06:26 291

原创 PyTorch AMP autocast源码解析

详解PyTorch Autocast核心C++源码

2023-02-20 18:55:20 1029 3

原创 C++重载决议(Overload Resolution)

最近在看PyTorch源码时被C++模版给”恶心“到了,在死磕模版的路上,又遇到重载决议这个拦路虎。恰好在刷B站时看到这个视频CppCon 2021 Back To Basics: Overload Resolution,感觉讲的还不错,顺便记录下来。一、前景知识(overload vs overide)在讨论重载决议之前,我们需要先区分一些相似但完全不同的术语和概念。1、多态的定义overload和override大家讨论的非常多,为了理解它们之间的区别,我们需要回顾一下多态的概念,简单来说,多态

2022-04-08 12:31:16 1016

原创 PyTorch DataLoader源码分析(三)

经过前面的铺垫,DataLoader的整体架构和依赖部件都已分析完毕:PyTorch Dataloader源码分析(一)PyTorch DataLoader源码分析(二)三、DataLoader迭代器详解这一章主要介绍DataLoader的核心部分——_SingleProcessDataLoaderIter和_MultiProcessDataLoaderIter。两者的区别顾名思义,一个用于单进程,一个用于多进程。从代码实现上看,当用户选择的num_workers等于0时,DataLoader返

2022-03-27 21:51:56 2112 1

原创 PyTorch DataLoader源码分析(二)

紧接上文https://blog.csdn.net/u013608424/article/details/123172026?spm=1001.2014.3001.5502二、DataLoader主要组件上一章通过示意图简单梳理了DataLoader内部各个组件的职责和工作流程,可以看到,dataset和sampler等组件各司其职,互相独立,给用户自定义操作以及代码维护都提供了极大的便利性。为了后续分析xxxDataLoaderIter具体实现,这一章节将会一一分析各个组件的具体实现。1、Datas

2022-03-08 22:52:06 1575

原创 PyTorch Dataloader源码分析(一)

torch.utils.data.Dataloader是PyTorch数据加载工具的核心类。在网络脚本中使用流程一般如下:train_loader = torch.utils.data.Dataloader(...)for input, target in train_loader: # 前向计算 output = model(input) # 计算损失 loss = loss_fn(output, target) # 反向传播 optimizer.zer

2022-02-27 22:39:35 1541

原创 理解python metaclass

关于metaclass的解释,有句“名言“广为流传:[Metaclasses] are deeper magic than 99% of users should ever worry about. If you wonder whether you need them, you don’t (the people who actually need them know with certainty that they need them, and don’t need an explanation a

2022-02-20 17:19:48 502

原创 手写神经网络

模式识别课上老师对神经网络做了详细的数学推导,回来自己又推了两边,不难,也就是链式法则和求偏导,觉得没什么问题。但是总感觉缺了点什么。根据以前学习数字图像处理的经验:有些算法原理看着简单,实则只有自己造个轮子,才能真正掌握。于是决定手写一个简单的两层神经网络,实现二分类。%author:harry%date:2017.03.21%将数据用矩阵的形式进行运算% 使用多层感知器进行二分...

2018-05-16 14:48:37 730

原创 字符串常量和字符数组

据C语言内存模型,字符串常量应该被放在代码区(也有书上称作数据区),是只读不可写的(所以说字符串常量不可修改)。下面两个函数分别返回hello和world两个字符串,但却只有一个能达到预期效果: 输出结果: 可以看到,结果只输出了hello,并且编译时报了一个warning,意思是第二个函数返回的是局部变量的地址。从这个warning的信息中可以看出问题所在。下面分析两个函数: 1...

2018-05-04 10:03:22 2121 3

原创 C语言内存模型

内存模型——屏蔽各个硬件平台和操作系统的内存访问差异,以实现让xxx程序在各种平台下都能达到一致的内存访问效果。(即不同平台下的实现差别被统一的内存模型所隐藏,只需要根据这个抽象的内存模型来编写程序即可)。不同语言有不同的内存模型,只有掌握了内存模型,才算是真正具有了对程序的时间和空间效率进行分析的基本能力。不难看出,内存模型其实定义了变量的一套访问规则。下面介绍C语言在linux下的...

2018-05-04 09:57:49 731

原创 全排列问题

1、定义从n个数中选取m(m<=n)个数按照一定的顺序排成一个序列,叫做n个元素的子排列。由排列的定义可见,不同的顺序显然是一个不同的排列。从n个元素中选取n个元素的一个排列,称为一个全排列。全排列的排列数为n!个。 2、算法思想这个问题很适合用递归解决(当然也可以用非递归实现),使用递归关键是要找到问题中的基线条件(base case)和递归条件(recyrsiv...

2018-04-28 14:10:19 839

原创 Row- and Column- major order(行优先和列优先顺序)

虽然术语暗指二维数组的行和列,即矩阵,但是可以将这些次序推广到任何维度的数组:例如在 row-major order中,行索引变化最快,列索引变化最慢,推广到多个维度,就是其中沿着第一轴(维)的索引最慢,沿着最后一个轴(维)的索引最快。column-major则相反。 支持多维数组的编程语言或其标准库通常具有这些数组的行优先(主)或列优先(主)存储顺序。在C / C ++ (用于C风格的数组...

2018-04-28 11:18:33 11734

翻译 Copy and View (拷贝与视图)

当对数组进行运算和操作时,其数据有时会被拷贝到一个新的数组而有时又不会拷贝。这一点常常对刚使用NumPy的用户造成困惑。以下有三种情况: 1、不拷贝对数组或其他数据的简单赋值不产生拷贝。 Python使用引用传递可变对象,因此函数调用也不产生拷贝。 2、视图(View) 或 浅拷贝(Shallow Copy)不同的数组对象可以共享同一份数据。view()方法可...

2018-04-28 11:14:51 3123

原创 找不到caffe/proto/caffe.pb.h?

在github上找到FashionLandmark论文的demo后,由于作者只公布了测试的源码,对于训练时需要的loss层等结构就无从所知了。有幸找到这篇文章《caffemodel解析,caffemodel里面到底记录了什么?》 文章里面先用ReadProtoFromBinaryFile函数将二进制文件读入proto里面,再将proto文件读入txt文件,便得到训练时的网络结构和网络参数。下面是...

2018-04-28 10:56:45 5482

原创 plt.imshow()显示图片色差问题

由于系统缺少某些库,导致cv2.imshow()无法使用,于是使用matplotlib.pyplot.imshow()代替,但是在使用时发现plt.imshow()显示的图片颜色有问题。原图: from matplotlib import pyplot as plt import cv2 import numpy as npimg = cv2.imread('XXX')...

2018-04-28 10:32:15 23667

原创 Eclipse常用快捷键

新建 ctrl + n格式化 ctrl + shift + f导入包 ctrl + shift + o注释 ctrl + / ,ctrl + shift + / ,ctrl + shift + \代码上下移动 选中代码alt + 上/下箭头查看源码 选中类名(F3或者ctrl+鼠标点击)查找具体的类ctrl + shift + t查找具体类的具体方法ctrl + o给建议 ctrl

2017-06-12 21:00:58 401

原创 因特网、万维网和互联网

在不少人看来,互联网、因特网、万维网没有大多的区别,其实这三者之间的关系应该是:互联网包含因特网,因特网包含万维网。凡是由能彼此通信的设备组成的网络就叫互联网,即使仅有两台机器(计算机、手机等),不论用何种技术使其彼此通信,都叫互联网,所以,互联网有广域网、城域网及局域网之分。国际标准的互联网写法是internet,字母i一定要小写!而因特网是互联网中的一种,它可不是仅有两台机器组成的网络,而是由上

2017-06-11 11:49:34 865

原创 转义字符惹的鬼

最近学习openCV,写了个小程序,大致就是将两幅图像进行混合。编译链接后生成可执行文件,之前在VS中运行还是可以的,直接点击exe文件运行,却发生了如下的错误: 错误是啥意思我也没看懂,不过还是马上察觉到哪里出了问题,代码中我读入图像数据用的是相对路径”1.png”,而生成的exe文件与图像却不在同一级目录下,这才导致了错误的发生,于是改用绝对路径替换”H:\Work_opencv\Trac

2017-06-11 11:34:20 466

原创 直方图规定化(匹配)

(1)基本原理上一篇博文中讲到的直方图均衡技术,可以自动地确定变换函数,而产生具有均匀直方图的输出图像。对于需要自动增强时,该算法仅需简单的操作就能扩展灰度级,且结果可以预知,因此是一种好方法。但是,不同图像出现的问题不尽相同,有时我们需要根据图像的某种缺陷,得出处理后的图像需要具有某种形状的直方图。因此,均衡化这样单一的方法显然不能成为万能钥匙。这时,就轮到直方图规定化技术登场了。规定化,顾...

2017-06-11 11:29:37 12392 5

原创 数字图像的边缘检测(一)

人眼之所以能区分不同物体,是由于不同物体对光的反射强度不同,从而在物体之间形成亮度和色彩上的对比,这种对比最明显的地方就是物体的边缘。对于使用图像传感器形成的数字图像来说,颜色相近的像素在一起形成不同的区域,不同区域间的边缘同样表现为颜色亮度的跃变。(1)基本原理如果将灰度看作一个函数,那么描述灰度变化最直观的工具就是微分了。而图像的灰度是个二元函数,因此需要用到偏微分。与一元函数不同...

2017-06-11 11:07:22 5112

原创 快速傅里叶算法实现

function xk=fft_my(xn,N)% *********************Declaration***************************% File name: fft_my % Author: @Harry

2017-06-11 10:58:47 891

原创 简单平滑滤波器

(1)基本原理不同的空间滤波器主要就在于所使用的模板(卷积核)不同。图像的简单平滑模板如下图所示(模板前要乘以衰减因子1/9): 根据模板操作(卷积运算)的规则不难发现,图像的简单平滑就是对图像中一定邻域内的像素灰度值求平均值,将平均的结果作为中心像素的灰度保存在结果图中(注意,不要在原图上进行赋值,新得的像素因另起一个图像矩阵保存),这样就可以减少图像中的噪声影响。事实上不难发现,这种...

2017-06-11 10:47:38 2121

原创 总体方差与样本方差

今天在计算一类数据的协方差时遇到个问题。数据如下: x1=(0,0,0)’ x2=(1,0,0)’ x3=(1,0,1)’ x4=(1,1,0)’ 这本是一件很容易的事,但我手算后用Matlab的cov函数验算了一下,发现结果竟然不一样,于是按照协方差公式,一步步验算,终于在求方差这一步发现了问题:用var函数求的方差与手动算的不一样。于是doc var一看: 从画线处可以看到,当样

2017-06-08 19:18:09 7036

原创 Modelsim自动化仿真平台

<span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Cali

2017-06-05 11:54:16 1972

原创 Cell类型报错提示

在写离散卷积函数时遇到一个问题,matlab报错:大概意思就是cell型不能直接乘。问题是我在程序中并没有使用cell类型,为什么会报这个错?网上搜了一下,没找到解决办法,只能自己试着找错误了。代码如下:function yn=conv_d(xn,hk)%计算序列xn和序列hk的长度 k = length(hk); n = length(xn);  %计算输出序列yn的长度 N = k+n-1 ;

2017-06-05 11:54:12 9080

原创 图像数据类型引发的思考

最近在研究图像的频域处理时碰到一个小问题:利用fft算法得到一幅图像的频谱,并通过显示此频谱的图像来进行可视化分析。程序如下:I=imread('9.tif');>> f=fft2(I);>>fc= fftshift(abs(f));>> imshow(fc) 这与书上得到的频谱图像差距很大:  仔细对比发现,代码和书上唯一不同的地方只有最后一句:imshow(fc,[]),那么问

2017-06-05 11:54:09 585

原创 MATLAB图形保存引发的猜想

<span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-the

2017-06-05 11:54:06 482

原创 数字图像的冗余

数字图像的冗余主要表现为以下几种形式:空间冗余、时间冗余、视觉冗余、信息熵冗余、结构冗余和知识冗余。空间冗余:图像内部相邻像素之间存在较强的相关性多造成的冗余。时间冗余:视频图像序列中的不同帧之间的相关性所造成的冗余。视觉冗余:是指人眼不能感知或不敏感的那部分图像信息。信息熵冗余:也称编码冗余,如果图像中平均每个像素使用的比特数大于该图像的信息熵,则图像中存在冗余,这种冗余称为信息熵冗余。

2017-06-05 11:54:03 6983

原创 中值滤波

1、基本原理图像的中值滤波是一种非线性图像处理方法,是统计排序滤波器的一种典型应用。与之前介绍的均值处理的思想有所不同,中值滤波是通过对邻域内像素按灰度排序的结果决定中心像素的灰度。具体的操作过程如下:用一个奇数点的移动窗口,将窗口中心点的值用窗口内各点的中值代替。假设窗口内有5个点,其值为1,2,3,4和5,那么此窗口内各点的中值即为3,也就是用3来代替中心点的像素值。中值滤波对于滤除脉冲干扰及...

2017-06-05 11:54:00 50114 4

原创 空间滤波增强

<span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-the

2017-06-05 11:53:57 2225

原创 不可避免的图像噪声

第一次接触”噪声”这个专业词汇,是在信号与系统课上,老师当时的解释是”不想要的干扰信号”。后来在模电和FPGA设计中,也经常遇到这个词(FPGA中的毛刺)。如今学习图像处理,再一次碰到它,看来,”噪声”真的是随处可见。 一般提到噪声,首先映入脑海的,应该是耳朵听到的嘈杂、尖锐的呲呲声。显然,声音就是一种信号,信号在传播的时候难免会受到干扰,正是这些干扰导致了噪声的出现。当然,图像的像素也可以看作是

2017-06-05 11:53:54 1117

原创 直方图均衡化

(1)基本概念 图像的点运算包含线性变换和非线性变换,其中,非线性变换分为对数变换、幂次变换、指数变换等。这几种变换都能有效的改变图像的亮度和对比度,然而,其中的参数却需要人为设定,设定的好,才能得到效果。那么问题来了,是否存在一种变换,不需要人为设定参数,就可以改善图像的对比度? 显然,从图像对比度的定义出发(简单来说,对比度就是最黑与最白亮度单位的相除值),如果一幅图像占据的灰度级范围更大,且

2017-06-05 11:53:51 1173

原创 建立灰度直方图

(1)基本概念如果将图像中像素的灰度级别看作是一个随记变量(概率论中学到的随记变量,对后续直方图均匀化的推到至关重要),则其分布的情况就可以用概率密度函数(PDF)来刻画和描述,即表现为灰度直方图(histogram),它表示图像中具有某种灰度级像素的个数,反映了每种灰度出现的频率。灰度直方图的横坐标是灰度级,纵坐标是该灰度级像素的个数(出现的频度),是图像基本的统计特性。从基本概念中可知,直方图

2017-06-05 11:53:48 4263 1

原创 《钢铁是怎样炼成的》

看过这本书的人应该知道,主人公保尔.柯察金在书中说的一段话,同时也是被教科书引用最多的一段话“ 人最宝贵的东西是生命。生命对每个人来讲只有一次。一个人的生命应该这样度过:当他回首往事时,不会因虚度年华而悔恨,也不会因碌碌无为而羞耻。在临死的时候,他能够说:我的整个生命和全部精力,都已献给了世界上最壮丽的事业——为人类的解放事业而斗争。”    要是出现在阅读理解中,毫无疑问肯定是要大肆赞扬保尔这种

2017-06-05 11:53:42 1320

原创 何谓“人才”

21<span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-t

2017-06-05 11:53:39 439

原创 为什么要将模拟地和数字地分开,如何分开?

Answer:模拟信号和数字信号都要回流到地,因为数字信号变化速度快,从而在数字地上引起的噪声就会很大,而模拟信号是需要一个干净的地参考工作的。如果模拟地和数字地混在一起,噪声就会影响到模拟信号。 一般来说,模拟地和数字地要分开处理,然后通过细的走线连在一起,或者单点接在一起。总的思想是尽量阻隔数字地上的噪声窜到模拟地上。当然这也不是非常严格的要求模拟地和数字地必须分开,如果模拟部分附近的数字地还

2017-06-05 11:53:33 7935

原创 2014年12月26日

不是所有的嵌入式系统都需要“高大上”的接口形式,各类低速的稳定接口也同样在FPGA的接口互联中有着重要的角色,其中UART、SPI、I2C等连接形式也非常的常见。毕竟,一个优秀的设计不是“高大上”的堆积,而是对需求最小成本的满足。适合的才是最美的。

2017-06-05 11:53:30 272

原创 小心,异步数据

之前在研究FPGA与CPU通信的SPI协议时,看到Bingo在其中加的边沿检测实现,在文中,Bingo强调对外部信号要进行两次寄存而并非一次寄存。虽然我一直也是这么做的,但只是模仿别人而已,却没有想过为什么要这么做。现在就来好好研究下。使用一级D触发器比较时,前一时刻的信号已经同步到系统时钟域,而当前时刻直接从外部输入,与FPGA的逻辑不在同一时钟域,属于异步时钟。这点在书中已经讲到。但是,如

2017-06-05 11:53:27 363

原创 内存对齐

下午VB课时,老师在计算一个自定义类型所占内存大小时,直接将其中的各个变量所占字节数相加而得到整个自定义类型的大小。这让我想到了C语言中的内存对齐机制,是不能这么直接算的。但VB有没有这样的规则呢?仔细一想,这种机制是为了提高CPU的访问效率而出现的,而VB和C的编译器都是在PC的CPU上跑的,那情况至少应该类似吧。于是下课问了下老师,王老师确实是一个令人尊敬的老师,自己没研究过的决不乱说,让我回

2017-06-05 11:53:18 302

原创 Matlab读取图片引发的思考

晚上在进行matlab读取图片时发现这样一个有趣的问题,一幅图片用windows照片查看器查看是这样的:按这么算的话,这幅图片占的内存应该是1280x720x24/8=2764800byte。但事实却不是这样的:用matlab查看是这样的:可以发现,matlab计算的结果和手算的结果一样,那么为什么照片显示器会显示不一样呢?仔细想了下,这幅照片的格式是jpg的,这说明照片是已经经过压缩的,压缩算法

2017-06-05 11:53:12 813

fpga项目经验

fpga学习项目经验,包括modelsim,signaltap等等!

2014-07-13

5R03AC DC文档

AC DC芯片文档,介绍5R03的原理图和使用说明。

2014-07-09

三天入门Kinetis

随着技术的发展,单片机型号越来越繁多,入门的难度也逐渐加多,学习周期自 然不断延长。为了让初学者快速入门,减少学习时间,尤其是为了那些参加智能车比 赛而没时间学习深入研究 Kinetis单片机朋友,我们特意写了 Kinetis开发板的教程。 力求大大减少初学者的学习时间

2014-02-07

空空如也

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

TA关注的人

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