自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Latex学习

双括号问题:subfig 和 subfigure是不兼容的。去掉subfigure。

2024-05-19 16:11:45 235

原创 基础模板使用

【代码】基础模板使用。

2024-03-26 15:14:49 280

原创 ICANN备稿时debug遇到的问题

当你使用 print 函数打印对象时,Python 会检查是否定义了 extra_repr 方法,如果定义了,则会使用该方法返回的字符串来丰富对象的字符串表示形式。round的梯度是和clip一样的。模块中的Optimizer优化器对象也存在一个state_dict对象,此处的state_dict字典对象包含state和param_groups的字典对象。state_dict.pop(k) 是 Python 字典(dictionary)的一个方法,用于移除字典中键为 k 的项,并返回该项的值。

2024-03-17 23:50:18 1037

原创 Matplotlib模板

保存成svg——>可以直接拖到visio里面(pdf不行)但是svg保存的时候会出现错位——>把svg转成emf,就不会出现错位了。

2024-03-09 18:31:04 417

原创 【反向传播、计算图、梯度】.data .detach() .clone inplace操作等等

pytorch提供的一些inplace选项,如nn.ReLU(inplace=True)、nn.LeakyReLU(inplace=True),这些选项的安全性要高一些,但也需要注意中间变量后续是否需要,如果后面还需要使用中间变量,就应当设置inplace=False。同时,一些常见的操作如x.add_(y)、x.mul_(y)也会直接改变x,除非有特定需求,否则不建议使用这类inplace操作,隐患比前两种情况高很多。还有,非叶子节点也不会去计算梯度的,因为没有意义,只是中间量,不是待优化的参数。

2024-03-08 16:00:56 1034

原创 【实验】学习实验debug,以及经验感悟

记录两次独立解决问题的过程:目前来看,问题分为几种:抄代码的时候抄错了,比如dim=1写成dim=0这种逻辑错误,如果两份代码没什么差别的话,那么肯定是逻辑错误。下面的两个问题都是逻辑错误,因为语法错误其实是会报错的,

2024-03-06 16:12:21 438

原创 对目前想法有帮助的论文

《Enabling DeepSpikingNeuralNetworks with Hybrid conversion and SpikeTimingDependent Backpropagation》 - 知乎

2023-12-07 19:59:37 488

原创 关于如何解决问题?代码习惯。

如果你的时间都放到de一个bug上,那我觉得这实际上是纯粹的浪费,debug的时间永远是浪费了的,不如去打把游戏,所以每次debug都是在浪费生命,你要警惕自己在干什么。比如从数据本身入手,数据没问题,看模型,是否是模型的问题,再看是否是训练代码的问题。在代码找bug的过程中,如果确定你某个程序跑的结果不对,不要再继续试别的,想要“撞大运”指望跑着跑着“自己就好了”是不可能的。,比如检测某些指标,证明你这个程序是错的,设计loss,acc实验。养成好的代码习惯,写过的代码一定是对的,至少没有低级的错误。

2023-12-05 00:32:04 490

原创 【杂】解决关于mean(0)理解错误引发的程序bug

解释器设置影响了 VSCode 中运行 Python 脚本、调试、代码补全等功能的行为。VSCode 会根据你选择的解释器来执行这些操作。PyTorch 中的索引张量必须包含整数值。确保 label 是一个整数张量,可以通过使用 .long()发生你在终端激活了一个环境,但 VSCode 依然使用之前的解释器的情况。squeeze是要赋值的,除了extend都要赋值。出错肯定是自己对一些东西的理解出错了,,那就去一点点排查到底哪里出错了。

2023-12-05 00:00:41 603

原创 深度学习好文记录,反复学习

Batch Normalization 在其操作中包含了均值的减去和方差的除以等操作,这些操作本身具有平移和缩放的效果。如果在 Batch Normalization 层之前加上了偏置,它的作用在某种程度上会被 Batch Normalization 的操作所抵消,从而可能减弱 Batch Normalization 的效果。通常,在batch normalization层之前的层中是没有bias的,因为这是无用的,也是对参数的浪费,因为任何常数都会被batch normalization抵消掉。

2023-12-02 00:46:42 553

原创 服务器连接github

比着这个一步步做就行。上传文件可以看这个注意:密钥ssh-keygen设置好之后,以后就不用每次输入账号密码才能访问了。otherwise,每次要输入账号密码。这里可以看到git add .会忽略.gitignore里面的内容(灰色)git push在第一次使用的时候要标清楚<远程>,<本地>这样下次用git push的时候,就默认使用上述的参数。

2023-11-25 22:44:22 992

原创 Python处理Excel表格

pandas读取出来的是Series或者DataFrame,DataFrame是一列列Series加起来的。所以是按照列来组织的。(默认一列的数据类型是一样的)我们可以看到组织形式,首先是ndarray的形式,而不是list,因为项与项之间没有。上面是符合逻辑的,list的特性是内容的数据类型可以不同,所以每一项就是一行。,也可以发现同类型元素是一个小的ndarray,存放着一个字符串类型。[‘2020112001张,2020112001晏’]…:[‘2020112001张,2020112001晏’]

2023-11-20 15:44:41 71

原创 Bug记录

这实际上不会按你期望的方式工作。原因在于 ‘irnn’ 是一个非空的字符串,因此它在布尔上下文中被视为 True。所以条件总是为真,而不会考虑 args.model 的值。

2023-11-03 21:18:17 236

原创 关于维度上的注意事项

self.rnn 的赋值行末尾的逗号将 nn.RNNCell(32, self.hidden_size) 视为一个包含单个元素的元组,而不是一个单独的对象。8*541 = 18,142,976 不符合reshape需要满足的条件,即,我们在reshape之前其实应该知道。,要不就无法保证前后维度的等效性。返回的是经过变换后的tensor。tensor,array啥的。extend无返回值,对。必须加int,是为了。

2023-10-27 21:29:35 206

原创 N——>BatchSize &&数据维度理解和处理(chun, cat, squeeze, unsqueeze)

例如,如果你将形状为[5266, 32, 541, 1]的张量的第3和第4维度交换,你得到的张量仍然包含相同的元素,但它们在张量中的排列方式不同,变成了形状为[5266, 32, 1, 541]的张量。squeeze 函数有一个可选的参数,即 dim,它指定了要挤压的维度。举一个例子,你的目的是要跑RNN,用RNNCELL,那么首先外部循环的肯定是seq_len,每次输入。仅删除指定的维度,如果该维度大小为1。只要你给的数据的维度能对得上就没有任何问题,最主要的是。你的目标也就是得到每次的输入。

2023-10-23 00:32:20 752

原创 pytorch,tf维度理解RNN

在PyTorch中可以使用下面两种方式去调用,分别是torch.nn.RNNCell()和torch.nn.RNN(),这两种方式的区别在于RNNCell()只能接受序列中单步的输入,且必须传入隐藏状态,而RNN()可以接受一个序列的输入,默认会传入全0的隐藏状态,也可以自己申明隐藏状态传入。最大的问题在于忽略了Channel这一维度,其实称之为特征维度:无论是1d,2d,3d都是在描述数据的多少,比如一个序列长度为12,比如一个图片的像素点有12 * 12个。,其中 1 表示时间步维度。

2023-10-21 15:03:28 884 4

原创 深入理解RNN

当RNN只有一个神经元时,即最简单的one-to-one:youtube上的视频教学,理解是对的,当前的hidden层(别管有几个神经元)一对一的传给下一个状态。,一次只能处理一个序列中的一个单元(如单词),如“I love china”这个序列,RNN网络一次只能处理一个单词,无法并行的处理整句话(多个单词组成的序列)时序逻辑电路在逻辑功能上的特点是:任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。而他的缺点就是:RNN网络不能并行的处理序列。

2023-10-15 20:01:37 371

原创 基础绘图,由实验结果画acc和loss图

基础画图,loss,acc

2023-10-09 20:47:55 320

原创 requirements & pip

对于稍大型的项目来讲,依赖的第三方库很多,所以,如果能够自动生成这个文件,将大大提升我们的工作效率。幸好有 pipreqs 这个工具,能自动生成requirements.txt。python 通过提供 requirements.txt 文件来对项目中依赖的第三方库进行整体安装,用户不用手动的一条条去敲 pip install 命令,只需要执行。pip3,安装了python3之后,会有pip3。如果你的电脑只安装了Python3,那么不管用pip还是pip3都一样的。就可以安装项目所需要的所有软件包。

2023-09-23 16:15:26 303

原创 信息熵,交叉熵,softmax,KL散度

三篇搞懂。

2023-09-04 19:28:01 83

原创 SNN论文总结

ANN的量化在SNN中是怎么体现的,和threshold有关系吗,threshold可训练和这个有关吗(应该无关)解决过发放不发放的问题。

2023-08-27 21:29:50 326

原创 List, Numpy,Ndarrary

不要使用rank为1的,在python中(5,)既不是行向量也不是列向量,they are rank 1 arrays。使用assert和.shape帮助Debug。可以用reshape消除rank1array。

2023-08-16 13:40:09 77

原创 Resnet34 on ImageNet 实验记录

一、

2023-08-14 12:54:31 138

原创 ImageNet训练/amp/gpustat

解决在ImageNet上速度慢的问题,在1080上跑sop。

2023-08-07 14:19:43 302

原创 实验心得,包括代码复现工作的体会

师哥full precision pretrain,然后做finetune。多卡训练注意调整:batch_size * 4, lr * 2(根号下)实验证明:原论文在扯淡。69.24 可以达到原论文的精度。和原论文69.97相差比较大。

2023-08-05 21:24:24 170

原创 8.1 配置环境/Linux进程管理总结/Argument/save&load Module/切片

当使用Ctrl+Z键盘快捷键暂停了一个进程后,该进程会被挂起(暂停),并且被移动到后台执行。jobs命令: 使用jobs命令可以查看当前终端中的所有作业(包括后台和前台作业)。在终端中输入jobs,输出将显示当前所有作业的状态,其中包括被暂停的进程的编号(job number)和状态。%N命令: 使用%N命令可以将某个后台作业切换到前台运行,其中N是被暂停进程的编号。在按下Ctrl+Z之后,进程将不会继续在前台执行,而是暂停在后台。换句话说,进程的执行会被中止,直到您采取下面的操作。1、fg。

2023-08-05 16:44:01 201

原创 SOP/详解*和**/python数据结构(iter,list,tuple,dict)/ 解包

位置参数按照定义时的顺序进行传递,并且每个参数的值与传入时的位置一一对应。Python 中的集合类和迭代器是两个不同的概念,它们并没有继承关系。Python 中的集合类并不是继承自迭代器接口,而是通过实现特定的协议和方法来支持迭代器行为。拆包时,接收返回数据的变量一定要与列表(list)、元组(tuple)、字典(dict)中的元素个数相同,否则会导致程序异常。试图通过属性访问或键索引获取对象的属性或字典中的键,但对象或字典中不存在这样的键或属性。的数据类型,元素在列表中的顺序由其添加的顺序决定。

2023-08-01 15:07:07 1110

原创 CUDA基础(四)杂。GEMM优化思想、内存事务。

为操作码(Opcode,当然它本质上还是指的FFMA对应的编码), 后面的R2, R4, R2, R5表示参与操作的通用寄存器(General Purpose Register,简称GPR,有时也直接叫Register),称为操作数(Operand)。每一个内存事务,简单说就是一个邮递员,他每次可以携带一封信从A到B,信最大可以携带128字节的信息量,通勤一次时间200天,所以你是愿意写一封128字节的信,还是写32封4字节的信,方案不言而喻。所以说,GEMM优化的重要性,怎么突出都不过分。

2023-07-27 13:29:38 342

原创 What is Tensor Core ?How to use Tensor Core ?

cuda core越多,算力就越强,于是,我们看到了接来的几代Kepler -> Maxwell -> Pascal,这些cuda core肉眼可见的增长。WMMA全称 warp matrix multiply-accumulate,即利用GPU上的tensor core进行warp粒度矩阵乘加速,它通过一个warp内部的线程完成分块的GEMM操作,C矩阵的C1分块可以通过A1、A2、A3和B1、B2、B3计算得出,即。而加法矩阵C还有结合矩阵D既可以是FP16类型,也可以是FP32类型。

2023-07-27 13:29:17 540

原创 SZ:zip/内部函数外部函数/VGG模型/nn

参考这个但具体什么意思fanin&fanout的定义,根据实际问题来。不过多赘述,这个已经通过实践学会了。

2023-07-26 21:48:17 168

原创 量化基础 PTQ & QAT

PTQ是没有backward不进行weight更新,forward只是用来统计,所以其实伪量化对PTQ来说可有可无;QAT还会再训练一下得出loss进行反向传播更新参数,这个地方的训练采用的是伪量化,要不然由于导数为0无法进行梯度更新。一般是先train一个全精度的,区别主要是PTQ一般是不需要重新训练的,用一点测试集估计一下minmax这些量化参数就可以,QAT一般是会结合具体任务再训练的,或者说finetune。finetune就是正常的训练,伪量化只是方便求导。

2023-07-19 10:33:04 789

原创 Display

Dataloader。

2023-07-18 16:25:46 255

原创 Pytorch hook

forwardA hook function receive three parameters —— module, args and output,并返回 None 或修改后的输出。modulechildargs: 表示模块的输入参数,通常是一个元组或一个包含输入参数的序列。output: 表示模块的输出结果,可以是任意类型的对象。

2023-07-17 19:15:38 478

原创 Python module

是一个特殊的属性,用于访问模型对象中的子模块,,其中键是子模块的名称,值是对应的子模块对象。懂了上面之后我们可以写一个。这和上面的效果是一样的。则迭代一个字典的键。

2023-07-16 19:12:24 201

原创 卷积中的名词理解:channel、filter、layer、kernel

基础知识复习

2023-07-13 15:34:43 838

原创 7.12 模型显存/mix-precision

PyTorch的自动混合精度(AMP) - 知乎自动混合精度的关键词有两个:自动、混合精度:- 混合精度预示着有不止一种精度的Tensor,那在PyTorch的AMP模块里是几种呢?2种:torch.FloatTensor和torch.HalfTensor;- 自动预示着Tensor的dtype类型会自动变化,也就是框架按需自动调整tensor的dtype(其实不是完全自动,有些地方还是需要手工干预);torch.cuda。

2023-07-13 10:01:29 287

原创 QCFS-related work

等子模块,即对于来说。(Sequential模块本身不是一层,而是一种容器,用于将多个层按顺序组合成一个模块)cifar五万个训练集,一万个测试集(79*128 = 10112(最后一个bs不满))是一个函数,它返回一个与输入张量 x 具有相同形状的张量,且所有元素的值都设置为1。是一个字典,其中键是子模块的名称,值是对应的子模块对象。,它返回一个由键-值对组成的元组列表,表示字典中的所有项。

2023-07-12 21:35:34 287

原创 7.7.8clip/简单量化

限制一个array的上下界给定一个范围[min, max],数组中值不在这个范围内的,会被限定为这个范围的边界。如给定范围[0, 1],数组中元素值小于0的,值会变为0,数组中元素值大于1的,要被更改为1.读完论文 OPTIMAL ANN-SNN CONVERSION FOR HIGH-ACCURACY AND ULTRA-LOW-LATENCY SPIKINGNEURAL NETWORKS。

2023-07-12 17:54:15 396 1

原创 7.5 cloneGitHub项目到服务器端/wget/print/spikes_max

在机器学习和深度学习中,位量化(Bit Quantization)是一种将模型参数或激活值表示为较低精度的二进制数的技术。通常情况下,模型的参数和激活值是以浮点数形式存储和计算的,占用较大的存储空间和计算资源。位量化通过减少参数和激活值的表示精度,可以显著减小模型的存储需求和计算复杂度,从而提高模型的运行效率。在位量化中,常见的方法包括二值量化(Binary Quantization)、三值量化(Ternary Quantization)、四值量化(Quaternary Quantization)等。

2023-07-08 12:15:08 211

原创 一阶段实验总结

实验过程中很多都是错的。所有精度的增长都不是靠调参调出来的,而是一定发现了bug或者增加了一段trick的代码。无验证集:Epoch=162,best_acc= 69.660%

2023-07-06 13:39:04 89

空空如也

空空如也

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

TA关注的人

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