【深度学习/神经网络】Deep Learning
文章平均质量分 78
【深度学习】Deep Learning
Mr.zwX
2019年进入电子科技大学接触计算机(方向涉及:机器学习/深度学习(CV、NLP、GNN)、时空数据挖掘、一点点开发(部分后端/前端)),2022年在电子科技大学实验室科研,2023年在复旦大学NLP组实习,2023年9月至今,在北京大学人工智能研究院科研(模型加速/压缩、隐私计算)...保持努力,anyway,这个平台是我记录一些乱七八糟计算机笔记的地方,供(记性不好的)自己复习,同时也分享给大家
如需联系:请发邮件至[email protected]
展开
-
【Bit-level量化】BSQ: Exploring Bit-Level Sparsity for Mixed-Precision Neural Network Quantization
论文题目:[ICLR 2021] BSQ: Exploring Bit-Level Sparsity for Mixed-Precision Neural Network Quantization其中,www是浮点表示,wqw_qwq是对应的nnn-bit定点表示。反向传播时,由于Round函数不可微分,所以求导时用浮点www代替wqw_qwq进行梯度计算。前向传播使用wqw_qwq计算模型输出和损失函数,反向传播使用浮点www计算梯度,并且www在整个训练过程中都保持浮点表示!第1步:提取W的动态原创 2024-02-06 17:32:56 · 814 阅读 · 0 评论 -
PyTorch中定义可学习参数及放入cuda时的坑
必须要注意的是,新定义的self.alpha必须要放入optimizer中才可以训练,因此,上面这段预推理的代码必须要放在声明optimizer之前!采用这种写法的话,必须要在正式训练模型之前进行一次预推理,该预推理可以是伪输入数据的推理,目的是预推理时构建好每一层所需要的self.alpha可学习参数。写法1先定义nn.Parameter,后放入cuda,会导致参数重新变回到tensor,从而不可学习;写法2先放入cuda,后定义nn.Parameter,可以成功定义参数,可以学习。原创 2024-01-18 19:04:47 · 590 阅读 · 0 评论 -
Pruning Papers
slS1−nl−1nlnl−1∗nl)1−nl−1nlwlhlnl−1∗nl∗wl∗hl。原创 2024-01-03 13:39:51 · 1045 阅读 · 0 评论 -
去掉乘法运算的加法移位神经网络架构
Adder层的输出都是负的,所以网络中引入batch normalization(BN)层和激活函数层。可以看到,AdderNet在三个CNN模型上都掉点很少,并且省去了所以乘法,也没有BNN中的XNOR操作,只是有了更多的加法,效率应该显著提高。但是,signSGD几乎没有采取最陡的下降方向,随着维度的增长,下降方向只会变得更糟,所以不适用于大参数量的模型优化。一种最直接的思路就是采用更大的学习率,本文发现不同层的梯度值差异很大,所以为了考虑不同层的filter情况,提出了不同层的自适应学习率。原创 2023-12-19 02:20:18 · 1537 阅读 · 0 评论 -
【模型量化】神经网络量化基础及代码学习总结
量化是减少神经网络计算时间和能耗的最有效的方法之一。在神经网络量化中,权重和激活张量存储在比训练时通常使用的16-bit或32-bit更低的比特精度。当从32-bit降低到8-bit,存储张量的内存开销减少了4倍,矩阵乘法的计算成本则二次地减少了16倍。神经网络已被证明对量化具有鲁棒性,这意味着它们可以被量化到较低的位宽,而对网络精度的影响相对较小。然而,神经网络的量化并不是自由的。低位宽量化会给网络带来噪声,从而导致精度的下降。原创 2023-12-08 17:02:29 · 1663 阅读 · 1 评论 -
【Python】一个最基础,但是超难看出来的类声明为tuple的BUG
小结一句,Python末尾是没有分号或者逗号的,要防止误敲无关字符!为啥这个class是个tuple类型呀!原因非常简单,我在声明类的时候,原创 2023-10-25 11:54:14 · 77 阅读 · 0 评论 -
【Bash】记录一个长命令换行的BUG
最后,小结一句:在用bash写长命令时,可以分行,但是分行要带换行符 \,并且不要随意用注释,会导致后面的参数无法传入。实在不会的话,在bash里放不换行的长命令就行。由于这个命令太长了,有这样一些问题:1. 改起来不方便,2. 没法存档,3. 不方便在之前命令的基础上修改后并行跑模型。所以,这个长命令可以写成这样一个。接下来,就是我踩坑的地方了!原创 2023-10-24 16:21:11 · 715 阅读 · 0 评论 -
【关于乘法这些事儿】概念和代码的区分
这种运算方式得到的结果是一个标量。由此可见,内积和矩阵乘法中每个输出值的计算方式一致。原创 2023-08-25 22:10:22 · 159 阅读 · 0 评论 -
【深度学习随笔】神经网络中去掉残差连接的工作
刚刚有个同学问我:“深层神经网络如果去掉一部分残差,到底还能不能正常训练呀?”这个问题着实很好,我也没思考过,也没尝试过,然后试着去Google Scholar检索了一下关键词“without shorcut”,于是看到了以下的文章。让我比较惊奇的是,这是个很多人研究的方向,并且近年来不少文章发表在AI三大会。其中包含:1)残差的融合提高效率(重参数化);2)去除一部分残差提高效率;3)用更好的架构替代传统残差等多个方面,还挺值得总结一下的。原创 2023-07-12 15:00:39 · 706 阅读 · 0 评论 -
将CIFAR-10和CIFAR-100数据集处理成“标签文件夹”形式(ImageFolder可读)
将以下python脚本放置到数据集源文件中,执行即可。然后得到的数据格式就是ImageFolder可读的形式了(划分了train和val文件夹,并且每个文件夹下都有#classes个以label命名的文件夹)原创 2022-10-03 18:43:51 · 1159 阅读 · 3 评论 -
回头再看ResNet——深度学习史上的关键一步
在2020年刚接触深度学习的时候,学习了ResNet的架构。但是当时我并没有太关注ResNet,直到后来,真正开始接触CV、NLP、时序包括Graph的科研项目时,我才意识到ResNet对整个深度学习领域的影响之深远。因此,随着模型的加深,效果不会偏离目标,至少会一直在之前的基础上,进行学习。学习不到有效的东西(甚至是学到了负面影响的东西),也并不会因此逐渐远离目标,也可以说是模型偏差不会越来越大。上面从函数角度解释ResNet的有效性非常直观,但是在Kaiming He的论文中,并不是这样解释的。....原创 2022-08-02 20:02:29 · 325 阅读 · 0 评论 -
【轻量化深度学习】知识蒸馏与NLP语言模型的结合
Knowledge DistillationStudent : Wenxuan ZengSchool : University of Electronic Science and Technology of China Date : 2022.3.25 - 2022.4.3文章目录Knowledge Distillation1 Knowledge的定义2 Soft targets3 T-Softmax4 知识蒸馏4.1 蒸馏流程4.2 Loss function4.3 预测值匹配是一原创 2022-04-26 16:41:51 · 2084 阅读 · 0 评论 -
【轻量化深度学习】Efficient On-Device Deep Learning Research
Effecient On-Device Deep Learning ResearchStudent : Wenxuan ZengSchool : University of Electronic Science and Technology of China Date : 2022.3.25 - 2022.4.3文章目录Effecient On-Device Deep Learning Research1 What are the major challenges to run an原创 2022-04-19 14:40:29 · 2850 阅读 · 0 评论 -
深度学习笔记(四十三)新序列的采样及RNN梯度消失
一、新序列的采样Sampling一个序列模型模拟了任意特定单词序列的概率,我们要做的就是对这个概率分布进行采样,来产生一个新的单词序列。编程时采用numpy.random.choice()进行采样。如何判定句子到了末尾呢?当遇到< EOS >时会提示模型句子到了末尾,或者在采样过程中设置最大时间步。Character-level language model之前提到的都是词汇级别的语言模型,其实也可以是字符级别的语言模型。比如 Cat eats. 这样的句子,在词汇级别的模型中原创 2022-01-23 22:21:49 · 937 阅读 · 0 评论 -
【数据处理脚本】RA-CNN模型数据集处理及训练出现的报错解决
文件合并处理的脚本编写在我的虹膜数据集中,每个人的数据对应一个编号的文件夹(如001),文件夹下分左右眼文件夹(L和R),结构如下:001LR002LR在本次实验中,没有对左右眼进行区分,所以我需要将L和R文件夹下的所有图片都揉在001文件夹中,编写脚本如下:# merge_files.pyimport osimport shutilstart_file_id = '000' # 要处理的起始文件夹编号file_num = 1000 # 要处理的连续文件夹数原创 2022-01-22 16:24:35 · 1264 阅读 · 5 评论 -
深度学习笔记(四十二)不同类型RNN结构以及语言模型和序列生成
一、不同类型的RNN在序列化问题中,有很多类型,比如:输入输出等长,输入输出不等长,输出为整型值等等。那么就有不同的RNN结构来处理不同的问题,这里参考了一篇文章《The Unreasonable Effectiveness of Recurrent Neural Networks》。多对多结构(输入长度 = 输出长度)多对多结构(输入长度 不等于 输出长度)Machine translation从这里开始,就引入了编码器encoder和解码器decoder,在编码阶段输入,在解码阶段原创 2022-01-17 00:35:42 · 830 阅读 · 0 评论 -
深度学习笔记(四十一)循环神经网络及正反向传播
一、为什么不用标准神经网络?在前面一节中,我们构件了输入x和输出y,如果使用标准神经网络,可以得到如下的网络结构图:但是,事实证明效果并不好,主要问题如下:输入和输出通常会有不同的长度(TxT_xTx和TyT_yTy不相等),如果用0来填充长度(padding),也不是一种好的表达方式这种DNN结构并不能共享文本不同位置上学到的特征,举个简单的例子就是,如果网络能识别出不同位置的Harry名就太好了,这个和CNN类似,希望网络将图像某个区域上学到的特征推广到其他部分。这种更好的表达方式,可以原创 2022-01-09 22:08:47 · 1208 阅读 · 0 评论 -
【随笔】第一次科研积累的一些经验
从2021年6月开始接触科研,到7月开始上手科研,再到10月做出人生中第一篇科研论文,这个过程中积累到非常多宝贵的经验。由于时间关系(最近专业课和竞赛多),多的话就不说了,直接分点记录自己的一些收获(不一定都是正确的,毕竟是科研路上迈出的第一步)Experiment and Coding从实验初期开始,就要养成及时记录实验效果、实验参数、实验阶段等等信息,相信起初做的细小的工作,在后期多少都是能用得上。对于刚接触科研的小白,最先接触的一般都是读论文+跑实验,跑实验首先是侧重于跑别人开源的代码(Gi原创 2021-12-26 00:22:33 · 1020 阅读 · 5 评论 -
机器学习 | Kaggle鸢尾花数据集Iris训练
机器学习 | Kaggle鸢尾花数据集Iris训练 Wenxuan Zeng 2020.10.3一、准备工作:引入机器学习库# 引入机器学习库from sklearn.linear_model import LogisticRegressionfro.原创 2020-10-04 11:28:56 · 3800 阅读 · 4 评论 -
径向基(RBF)神经网络
浅谈BP与RBFBP网络在训练过程中需要对网络的所有权值和阈值进行修正,把它称之为全局逼近神经网络.全局逼近神经网络学习速度很慢,所以在一些实时性较强的场合(如实时控制),其应用受到限制.RBF网络是一种局部逼近网络,对于每个训练祥本,它只需要对少量的权值和阈值进行修正,因此训练速度快。matlab实现代码newrb()---新建一个径向基神经网络newrbe()---新建一个严...原创 2020-04-26 21:26:40 · 1577 阅读 · 0 评论 -
BP神经网络的函数逼近
给出一个非线性的函数,建立BP神经网络进行拟合图像,其中隐藏神经元的数目为,可以设定。%BP神经网络的函数逼近k=2;x=[-1:.05:8];f=1+sin(k*pi/2*x);%建立BP神经网络结构%隐藏层为5 未训练参数n=10;net=newff(minmax(x),[n,1],{'tansig','purelin'},'trainlm');y1=sim(net,x);...原创 2020-04-23 21:26:53 · 6885 阅读 · 0 评论 -
BP神经网络分类算法
用BP神经网络对数据进行分类p=[0 1 0 5 1 3 2 2 2 1 19 18 23 17 43 12 2 17 19 23; 1 2 0 4 1 1 1 4 0 1 13 15 13 11 9 9 2 14 12 7; 5 5 8 0 10 9 5 7 11 9 0 0 1 0 0 0 3 1 0 0; 7 10 16 2 11 9 6 5 8 6 0 0 0 1...原创 2020-04-23 20:47:48 · 2696 阅读 · 2 评论 -
用感知器进行分类
用单层感知器对数据进行分类处理:%单层感知器%输入向量P=[1.24 1.36 1.38 1.38 1.38 1.40 1.48 1.54 1.56 1.14 1.18 1.2 1.26 1.28 1.3; 1.72 1.74 1.64 1.82 1.9 1.7 1.82 1.82 2.08 1.78 1.96 1.86 2.0 2.0 1.96];%目标向量T=[1 1 1 1...原创 2020-04-23 20:32:48 · 964 阅读 · 0 评论 -
Lyapunov函数对微分方程稳定性的判别
Lyapunov函数(广义能量函数)稳定性判别定理考虑系统x˙=f(x)\dot{x}=f(x)x˙=f(x),设xe=0x_e=0xe=0为一平衡点,如果存在连续可微的标量函数V(x)V(x)V(x)满足:(1)V(x)V(x)V(x)正定(2)V˙=∂V(x)∂xf(x)\dot{V}=\frac{\partial V(x)}{\partial x}f(x)V˙=∂x∂V(x)f(x...原创 2020-03-30 18:50:45 · 3375 阅读 · 0 评论 -
深度学习笔记(四十)循环序列模型介绍
有很长一段时间没看吴恩达老师的教程了,大概半年多前(2021年寒假期间)看完了吴恩达老师的CNN后,我便开始了各种各样的机器学习、深度学习实践(当时我暂时用不到RNN,所以看完DNN和CNN后就停了一下)。在2021这一年里,我读了很多机器学习领域的论文,我做了深度学习、联邦学习相关的竞赛,目前正在做机器学习相关的外包项目,虹膜识别框架的新思路实现,最近完成了一篇图神经网络的论文…这学期开始学习大数据和云计算,我希望自己可以能在Hadoop和Spark环境下做RNN相关的时序预测,所以我准备最近把吴恩达老原创 2021-12-05 15:40:20 · 701 阅读 · 0 评论 -
【CV细粒度识别论文总结】The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification
Paper:The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification(TIP 2021)1 Motivation and Advantage简单来说,就是想做细粒度的图像分类(特征细腻,类间差异小,类内差异大等原因)。别人都是通过关键区域标注、注意力机制等方法解决,这篇文章作者另辟蹊径,从损失函数入手,很有创意。但是作者不想给模型增加额外的网络参数,所以提出只用一个新的损失函数就能够很原创 2021-11-19 17:19:06 · 2530 阅读 · 2 评论 -
【李沐精读GNN论文总结】A Gentle Introduction to Graph Neural Networks
博客文章链接:A Gentle Introduction to Graph Neural Networks在这篇博客中,很多图都是交互图,可以由读者自行操作演示。非常感谢李沐老师在11月4日发的【论文精读】视频。本文是结合原文和李沐老师的讲解总结出来的。第一次看distill的文章,让我实在是很惊喜,李沐老师将在最后的评价部分评价distill的文章。在上图中,每一层都是一层网络,每一层的节点都受到下一层中自身节点和邻居节点的影响。如果网络比较深,是可以处理到一幅图中较大范围的节点。1 前言图神经原创 2021-11-14 00:37:06 · 10001 阅读 · 0 评论 -
【生成模型】变分自编码器(VAE)及图变分自编码器(VGAE)
这段时间在学习机器学习中有关不确定性和概率分布的知识,发现了VAE这样一个有趣的方向,想抓紧时间整理一下VAE的主要思想和方法,然后思考如何迁移应用到自己的研究方向上。从直观上理解VAE变分自编码器(Variational Auto-Encoders,VAE)是深度生成模型的一种形式(GAN也是其中一种),VAE是基于变分贝叶斯推断的生成式网络结构。传统自编码器是通过数值方式描述潜在空间的不同,而VAE以概率的方式描述潜在空间的不同,是一种无监督式学习的生成模型。举个简单的例子说明变分自编码模型,输原创 2021-09-21 20:20:38 · 5144 阅读 · 3 评论 -
Uncertainty Estimation in GNN and Deep Learning(Paper Collection and Simple Notes)
通俗地说,机器学习模型的输出结果不是板上钉钉的事儿,医疗诊断需要给出病症的判断概率,对于不确定的数据和模型参数,也需要给出模型的不确定度。不确定性估计:模型不确定性(感知不确定性,epistemic uncertainty)模型不确定性通常源于对收集的训练数据的不认识。感知不确定性通过多次输出的方差来决定。模型不确定制定在参数的分布上,通过先验分布预设模型,在给予一些训练数据后观察这个分布的变化。可以被消除,需要增大数据量进行训练。对于模型不确定性的实现比较简单:在train时使用dropo原创 2021-08-30 17:11:06 · 1151 阅读 · 0 评论 -
【深度学习】使用GPU服务器训练模型时的配置过程
使用ssh命令在windows或Linux系统进入到服务器环境(已配置好Anaconda的虚拟环境)通过nvidia-smi查看GPU使用情况,通过nvidia-smi -L查看GPU型号,通过nvidia-smi -a查看GPU完整信息…可以看到实际上两块GPU都是空闲状态,均能使用。在python中查看cuda是否可用在多GPU的情况下,使用指定的GPU进行训练device = torch.device('cuda:0' if torch.cuda.is_available..原创 2021-08-29 15:48:00 · 2530 阅读 · 0 评论 -
【GNN图神经网络】邻接矩阵转化coo格式的稀疏矩阵
刚开始学习图神经网络,在使用PyG框架编程的时候,有一件事很让我纠结:PyG要求输入的邻接矩阵X应该是稀疏矩阵的形式(edge_index),而不是我制作的NxN邻接矩阵形式。举个简单的例子,看下面这个图结构:邻接矩阵的创建如下:A = np.array([0, 1, 0], [1, 0, 1], [0, 1, 0])A = torch.LongTensor(A)然后你会发现扔进PyG搭建的GCN模型报错了啊!ValueError: `MessagePassing.propa原创 2021-08-24 12:27:19 · 6209 阅读 · 4 评论 -
【NLP】AutoRegressive Language Model
一、文件写入FileWriterpackage model;import java.io.FileWriter;import java.io.IOException;public class FileWriterTester { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String fileName = "hello.txt";原创 2020-11-01 20:12:25 · 1553 阅读 · 0 评论 -
【目标检测】Yolov5训练自己的数据集、设计危险区域判定算法及模型部署(持续更新)
简单说明一下在这篇文章中我要完成的任务:识别出图像中的窗户和儿童位置,并对儿童是否身处窗户内的危险区域进行算法判断,最终反馈给后端一个安全或危险的信号。将训练好的模型和设计好的算法部署在Jetson Nano设备上,以便深度学习的推理以及与后端的交互。毕竟我是负责深度学习这部分的,所以本文我着重讲一下几个方面(当然一定是各位读者非常希望学习到的知识):如何配置yolov5所需环境、如何处理可能遇到的bug、如何收集自己需要的图片数据集、如何给图片标注标签、如何制作自己的配置文件、如何修改优化模型参数、如.原创 2021-07-08 01:15:46 · 3578 阅读 · 6 评论 -
记录yolov5出现UnicodeDecodeError中gbk解码问题的解决
好不容易把数据集标好,开始训练,然后发现反复出现如下报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x8b in position 233: illegal multibyte sequence然后奇怪的是,每次报错的position还不一样!说来说去,还是在读入训练集和测试集图片那里出现了问题。真的就是把配置文件的路径改了又改,默认参数改了又改,yolov5整套模型又重新去GitHub装上一版,请教了很多学长,最后的结果是——AGAIN!原创 2021-06-16 22:19:48 · 8153 阅读 · 26 评论 -
JupyterLab不能在Pytorch虚拟环境下import torch?
本文比较啰嗦,我喜欢把一个问题的“前生后世”描述清楚(读者有耐心可以当故事看/滑稽.jpg),看解决方法直接点击目录跳转即可。提前概括本文要讲的内容:在装好Pytorch的虚拟环境下,为什么JupyterNotebook可以import torch,而JupyterLab不能?JupyterLab作为新一代JupyterNotebook,应该如何配置才能使用torch框架?文章目录现在开始正式说明如何在JupyterLab中使用torch在之前一篇文章中我写了详细的教程,是关于如何安装Anacond原创 2021-06-15 14:51:53 · 3840 阅读 · 12 评论 -
这可能是一篇最贴心的Anaconda指北了(踩坑点)
刚从Python3.7+pip转Anaconda+conda的配置坑里爬出来,写篇blog记录一些细节。1 为啥要装Anaconda?下面的几点是我想到哪写到哪,比较零散,大家看个大概,懂个意思就????Anaconda是Python的一个发行版,其实就是一个Python的集成环境管理器,其中包含了Python以及许多常用的库,比如numpy、pandas等,另外!还包含了一个名为conda的包管理器。Anaconda一举多得,一旦装了Anaconda,就代表你已经装好了Python编译器以及众原创 2021-05-25 16:04:20 · 1617 阅读 · 16 评论 -
深度学习笔记(三十九)卷积网络特殊应用:人脸识别算法原理
一、人脸验证 VS 人脸识别验证:一对一关系匹配识别:数据库中存在多个数据,进行一对多的匹配人脸验证的准确率很高,不代表人脸识别准确率很高,错误率会被放大二、原创 2021-03-09 20:58:20 · 959 阅读 · 2 评论 -
【deeplearning.ai】吴恩达深度学习课程笔记目录
自2020.11.30开始学习DeepLearning,该学习笔记最后一次更新于2021.2.21Part1 深度学习概论深度学习笔记(一)深度学习概论Part2 神经网络基础深度学习笔记(二)Logistic Regression 逻辑回归深度学习笔记(三)计算图及其导数运算方法深度学习笔记(四)Vectorization 向量化深度学习笔记(五)Broadcasting in Python 广播吴恩达深度学习编程练习:具有神经网络思维的Logistic回归Part3 浅层神经原创 2021-02-24 21:18:57 · 304 阅读 · 0 评论 -
卷积神经网络实现手势图像的识别
零、数据集及工具传送门数据集用的是搭建DNN时使用的手势识别图像。提取码:pcoi一、原理和框架这篇文章的卷积网络模型基于LeNet-5,也就是input→conv1→relu→maxpool1→conv2→relu→maxpool2→fc3→fc4→output(softmax)input\to conv1\to relu\to maxpool1\to conv2\to relu\to maxpool2\to fc3\to fc4\to output(softmax)input→conv1→r原创 2021-02-24 21:12:28 · 5189 阅读 · 0 评论 -
深度学习笔记(三十八)目标检测及YOLO算法
文章目录一、目标定位二、特征点检测三、目标检测四、卷积的滑动窗口实现五、Bounding Box预测(YOLO)六、交并比(IoU)七、非极大值抑制NMS八、Anchor Boxes一、目标定位什么是目标定位和目标检测?通常我们遇到的三类问题:图像分类目标定位目标检测图像分类和目标定位是单物体的检测,而目标检测是多物体的检测。通过卷积神经网络处理图像后,Softmax输出分类的类别,同时还需要输出bounding box的位置,框出目标物体。bxbyb_xb_ybxby是中心点原创 2021-02-21 21:18:02 · 1025 阅读 · 2 评论