![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度学习
文章平均质量分 90
Lcm_Tech
这个作者很懒,什么都没留下…
展开
-
【diffusers】(三) pipeline原理及自定义训练推理
上一篇文章中我们介绍了SD以及scheduler,深入了解了diffusers中代码和论文公式中的相对关系。现在我们就要开始实战,看看怎么去训练和推理自己的模型。原创 2024-01-16 00:36:29 · 3463 阅读 · 5 评论 -
【diffusers】(二) scheduler介绍 & 代码解析
距离上一次更新已经很久了hhh,刚换了工作,最近才有时间更新博客。ok接下来我们继续介绍diffusers中的模块,最重要的我觉得一定是,因为它这里面包含了扩散模型的基本原理,通过对代码的分析我们可以对论文中的公式有着更好的理解,同时scheduler也在DDPM的基础上优化了许多不同的版本,加深对这些scheduler的理解也可以帮助我们在实际选择scheduler时有更好的理论支持。原创 2023-10-19 21:13:14 · 4997 阅读 · 1 评论 -
【diffusers】(一) diffusers库介绍 & 框架代码解析
说到现在最常用的stable diffusion代码,那肯定莫过于stable-diffusion-webui了,它的快捷安装、可视化界面、extension模块等等功能都拓展了使用人群。虽然在大多数情况下webui都有很好的适用性,但是在某些特殊需求或者应用场景下,我们需要对模型部分结构进行修改(比如把condition模块从文字换成图像,甚至是点云、图表、图结构等数据形式),这时修改模型的同时也需要修改前端可视化代码,时间成本上会较高(主要是我也不会Gradio)。那可不可以在源码上进行修改呢?原创 2023-08-18 17:07:10 · 10069 阅读 · 12 评论 -
【图像生成】(四) Diffusion原理 & pytorch代码实例
之前介绍完了图像生成网络GAN和VAE,终于来到了Diffusion。stable diffusion里比较复杂,同时用到了diffusion,VAE,CLIP等模型,这里我们主要着重介绍diffusion网络本身。原创 2023-08-09 18:42:54 · 5573 阅读 · 12 评论 -
【图像生成】(三) VAE原理 & pytorch代码实例
上一篇文章里我们介绍了【图像生成】的GAN及其改进WGAN,还有对应的condition条件生成代码。这篇文章主要介绍另外一种生成网络VAE。原创 2023-08-08 01:20:09 · 2227 阅读 · 7 评论 -
【图像生成】(二) GAN 原理 & pytorch代码实例
上一篇文章里我们介绍了【图像生成】的几种模型以及最直观的DNN的代码和效果,当然可以看出来不足的地方。这篇文章里主要介绍GAN模型的原理,以及它是怎么解决以上问题的。原创 2023-08-07 10:16:52 · 3463 阅读 · 3 评论 -
【图像生成】(一) DNN 原理 & pytorch代码实例
从之前开始就一直想做这个【图像生成】系列,主要是之前做过很多跟GAN相关的项目,同时AIGC和Stable Diffusion的火爆也开始让这个方向的研究活跃起来。这个板块主要是想介绍【图像生成】模型的发展过程,以及其中最主要的几个代表模型,来研究和分析其中的改进点和创新性,来更好地帮助大家理解图像生成模型。数据集我们就用最简单的MNIST手写数字数据集,来做基本的生成和condition生成任务,这样也方便更好理解模型的流程和思路,每个模型都会介绍它们的原理、公式以及对应的pytorch代码实现。原创 2023-08-04 14:08:55 · 2033 阅读 · 1 评论 -
【损失函数】(五) BCELoss原理 & pytorch代码解析
我们了解完CrossEntropyLoss之后,BCELoss就十分好理解了,它全称为Binary Cross Entropy Loss,顾名思义就是CrossEntropyLoss的特殊二分类情况。BCELoss的计算公式如下:其中是每个类别的权重,默认的全为1,表示该类输出的概率,表示该类的真值。实际上就是把多分类特殊化为二分类,公式与交叉熵公式相同。原创 2023-08-03 14:38:24 · 4223 阅读 · 1 评论 -
【损失函数】(四) CrossEntropyLoss原理 & pytorch代码解析
接下来就是CrossEntropyLoss了,在分类任务中经常用到。建议大家先看看上一篇NLLLoss的文章再来看这篇,会比较好理解。CrossEntropyLoss的计算公式如下:其中是每个类别的权重,默认的全为1,表示对应target那一类的概率。原创 2023-08-02 11:33:11 · 1199 阅读 · 0 评论 -
【损失函数】(三) NLLLoss原理 & pytorch代码解析
接下来应该要介绍分类任务里最常用的CrossEntropyLoss,但是CrossEntropyLoss里面用到了NLLLoss,所以我们先了解NLLLoss是什么。NLLLoss全名叫做Negative Log Likelihood Loss,顾名思义,输入就是log likelihood,对输入的对应部分取负号就是这个loss的输出了,公式可以表示为:其中是每个类别的权重,默认的全为1,表示对应target那一类的概率。更简单一点来说,就是将对应类别的x输出取负值。原创 2023-07-31 16:32:28 · 4457 阅读 · 0 评论 -
【损失函数】(二) L2Loss原理 & pytorch代码解析
直入主题,这次来介绍L2loss的原理以及pytorch代码用法。原创 2023-07-27 21:52:35 · 3404 阅读 · 1 评论 -
【损失函数】(一) L1Loss原理 & pytorch代码解析
在这个系列里面,我们对常用的损失函数做一个总结,理解其原理和分析适用场景。原创 2023-07-25 15:40:14 · 3191 阅读 · 0 评论 -
【优化器】(七) 优化器统一框架 & 总结分析
在前面六篇文章里,我们按照发展顺序分别介绍了六种经典的优化器,以及其内部的原理和公式。在这片文章里,我们将这几种优化器整理为统一框架,并横向对比它们的区别和优缺点。优化的流程如下:1. 根据目标函数计算梯度值。一般来说目标函数即为损失函数,计算求导为0的极值点就可以最小化损失函数,即梯度。同时为了解决权重过大导致梯度爆炸和过拟合的问题,加入了正则化项。2. 根据历史梯度计算一阶动量和二阶动量。动量这个概念可能听上去不好理解,但是实际上它就是将历史的数据进行累加,在现有数据上考虑到了历史的数据。原创 2023-07-20 13:01:19 · 520 阅读 · 0 评论 -
【优化器】(六) AdamW原理 & pytorch代码解析
在之前的文章里,我们介绍了集成一阶动量和二阶动量的优化器Adam。AdamW其实是在Adam的基础上加入了weight decay正则化,但是我们上一篇文章里也看到了Adam的代码中已经有正则化,那么两者有什么区别呢?其实AdamW和Adam唯一的区别,就是weight decay的加入方式。在Adam当中,weight decay是直接加入到梯度当中原创 2023-07-19 19:39:03 · 15663 阅读 · 0 评论 -
【优化器】(五) Adam原理 & pytorch代码解析
在之前的文章了,我们学习了SGD,以及在其基础上加了一阶动量的SGD Momentum,还有在其基础上加了二阶动量的AdaGrad、AdaDelta、RMSProp。那么自然而然就会想到把一阶动量和二阶动量结合起来,这样就形成了我们常用的优化器Adam原创 2023-07-18 14:47:39 · 11569 阅读 · 4 评论 -
【优化器】(四) AdaDelta原理 & pytorch代码解析
在上一篇文章里,我们介绍了RMSProp,在AdaGrad的基础上引入了衰减量,从而解决不断地累加二阶动量导致最终学习率会接近于0以及训练提前终止的问题,AdaDelta在这基础上做了进一步改进。类似于RMSProp,也使用了衰减的方法使得二阶动量不会一直累加,公式如下:其中,为当前step的二阶动量,为上一个step的二阶动量,为历史二阶动量的衰减率。同时AdaDelta还不光考虑了二阶动量,还应该考虑一阶的影响,认为应该在学习率上去乘以一个描述的项原创 2023-07-17 14:59:30 · 1120 阅读 · 1 评论 -
【优化器】(三) RMSProp原理 & pytorch代码解析
在上一篇文章里,我们介绍了AdaGrad,引入了二阶动量来调整不同参数的学习速率,同时它的缺点就是不断地累加二阶动量导致最终学习率会接近于0导致训练提前终止,RMSProp主要针对这个问题进行了优化。AdaGrad的二阶动量计算公式为其中,为当前时刻的二阶动量,是某一时刻的梯度,表示迄今所有梯度的平方和。问题就在于这个求和上,不断地累加导致学习率为0。在AdaGrad的基础上,对二阶动量的计算进行了改进:我想有历史梯度的信息,但是我又不想让信息一直膨胀,那么只要让历史信息一直衰减就好了。原创 2023-07-14 15:04:29 · 2312 阅读 · 1 评论 -
【优化器】(二) AdaGrad原理 & pytorch代码解析
在上一篇文章里,我们介绍了SGD这个最朴素的梯度下降方法,以及其Momentum和NAG的优化改进方法。我们现在又回过头来看这个没加Momentum的图,可以看到在垂直方向上的梯度较大,走得很快,而水平方向上的位移较小,走的很慢,看着就很急!但你先别急,那么能不能不使用Momentum就让水平方向上的位移大一点,垂直方向上的位移小一点呢?我们想要迄今为止梯度大的参数(即垂直方向)更新得慢一点,梯度小的参数(即水平方向)更新得快一点,这个就是二阶动量的定义原创 2023-07-13 16:44:44 · 1425 阅读 · 1 评论 -
【优化器】(一) SGD原理 & pytorch代码解析
很多情况下,我们调用优化器的时候都不清楚里面的原理和构造,主要基于自己数据集和模型的特点,然后再根据别人的经验来选择或者尝试优化器。下面分别对SGD的原理、pytorch代码进行介绍和解析。原创 2023-07-12 18:11:00 · 7299 阅读 · 8 评论 -
pytorch生成对抗网络GAN的基础教学简单实例(附代码数据集)
这篇文章主要是介绍了使用pytorch框架构建生成对抗网络GAN来生成虚假图像的原理与简单实例代码。数据集使用的是开源人脸图像数据集img_align_celeba,共1.34G。生成器与判别器模型均采用简单的卷积结构,代码参考了pytorch官网。原创 2023-01-13 15:08:11 · 4487 阅读 · 26 评论 -
pytorch基础教学简单实例(附代码)
零基础pytorch深度学习安装使用代码实例新手教学原创 2022-07-15 17:01:43 · 13121 阅读 · 5 评论 -
Windows Anaconda精简安装cuda+pytorch+torchvision
目录1.简介2.Anaconda安装3.CUDA+pytorch+torchvision安装3.1.虚拟环境3.2.CUDA版本3.3.下载慢或中断4.测试1.简介 如果要做深度学习肯定是要用GPU和装cuda的啦,那么这篇文章主要是用来给大家避坑的。之前我都是傻傻地去安装官网上cuda和cudnn的exe文件,先后经历了官网下载速度慢、找对应版本的网盘资源、甚至居然还需要visual studio来编译等大坑,后来才发现以上都不需要,只需要下载安装a...原创 2021-07-12 17:18:48 · 2466 阅读 · 3 评论