- 博客(184)
- 收藏
- 关注
原创 CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer论文精读
为了解决以前的视频生成模型经常与有限的运动和短暂的持续时间作斗争:1.引入了一个三维变分自编码器(VAE)来跨空间和时间维度压缩视频,提高压缩率和视频保真度2.为了改善文本-视频对齐,提出了一种具有专家自适应LayerNorm的专家转换器3.采用渐进式训练和多分辨率帧打包,实现生成具有不同形状和动态运动的连贯,长时间的视频。
2025-11-05 12:58:12
693
原创 Diffusion Model概念、数学原理
在扩散模型的反向扩散过程中,核心目标是从第 t 步的带噪声数据Xt出发,逐步恢复出第 t-1步的带噪声数据 Xt-1,最终迭代到原始数据 X0。正向过程中我们有前面的公式,但是在反向过程中由于我们不知道Xt-1和原始噪声,我们需要训练一个模型比如Unet预测出原始噪声,从而通过正向公式的逆运算,推导出原始数据。
2025-11-03 11:03:25
267
原创 CLIP(Contrastive Language–Image Pretraining,对比语言 - 图像预训练)
通过线性投影层将两种模态的特征映射到同一高维空间,使得匹配的图文对向量距离更近。Decoder不需要图片和文字成对的资料,这个额外的Decoder的好处就在这里,这个docoder的训练:如果中间产物是小图,那只用把手上的图片找出来把他们变成小图然后进行训练。这个模型里面有一个Image Encoder和一个Text Encoder,这两个输入数据后分别产生一个向量,如果这个图片和文字相关的,那么这两个向量就越近越好,反之越远越好。对于Noise Predicter的操作就和diffusion的差不多。
2025-10-26 17:15:36
191
原创 影像生成评估指标FID
FID 是的缩写,中文常称 “弗雷歇・因 ception 距离”,核心是衡量生成影像与真实影像的分布相似度,数值越低代表生成效果越贴近真实数据。
2025-10-26 16:53:49
243
原创 Lora原理介绍
Lora(Low-Rank Adaptation),低秩适应,是一种高效微调技术通过引入可训练的低秩矩阵来修改预训练大模型的部分参数,从而在保持模型核心能力的同时适配特定任务。训练完成后,可以将两个低秩矩阵与原始模型中的权重进行合并,合并后的模型与原始模型无异,避免了推理期间Prompt系列方法带来的额外计算量。预训练模型中存在一个极小的内在维度(核心);在继续训练的过程中,权重的更新依然也有这种特点,也存在一个内在维度。因此可以通过矩阵分解的方式,将原本要更新的大的矩阵变为两个小的矩阵。
2025-10-14 23:52:03
184
原创 GAN(Generative Adversarial Nets)生成对抗网络论文笔记
这里介绍会用两个生成模型,一个是生成模型G用来捕捉数据分布,一个是辨别模型D用来估计一个样本到底是从(真实)训练数据来的还是从G生成来的。G的任务就是尽量让D犯错。如果G和D是一个MLP的话就可以通过误差反传来进行训练,并且不需要用到马尔可夫链。
2025-10-10 12:26:13
936
原创 马尔可夫链
假设有一家餐厅,它只供应三种食物:汉堡、披萨和热狗,但是每天只供应一种食物,如果你知道他们今天供应的是什么,那么你就能用一种方式来预测他们明天会供应什么。”—— 未来状态的概率仅依赖于当前状态,与 “当前之前的所有历史状态” 无关。的行向量,它的元素代表状态的概率。基本上代表了 状态的概率分布。假设餐厅第一天供应了披萨,第二天供应了汉堡,第三天又供应了披萨,那么第四天供应热狗的概率只用看第三天的状态,也就是70%。此时,如果存在一个稳态,那么在某个点后,输入的行向量应该与输入的行向量完全相同,我们用。
2025-10-07 15:03:41
214
原创 MLP多层感知机
多层感知机的核心定义围绕 **“层数” 和 “非线性”** 展开,是对 “感知机” 的扩展:感知机(Perceptron):1957 年提出的单层线性模型(输入层 + 输出层,无隐藏层),仅能解决 “线性可分问题”(如用直线分割二维数据),无法处理非线性问题(如异或 XOR);多层感知机(MLP):为解决感知机的局限性,在 “输入层” 和 “输出层” 之间加入至少 1 个隐藏层,并在隐藏层引入非线性激活函数(如 ReLU、sigmoid、tanh)的模型。关键特征。
2025-10-06 00:07:41
1705
原创 VIT速览
当我们取到一张图片,我们会把它划分为一个个patch,如上图把一张图片划分为了9个patch,然后通过一个embedding把他们转换成一个个token,每个patch对应一个token,然后在输入到transformer encoder之前还要经过一个class token,带有分类信息,然后加上位置信息如图123456789。Transformer Encoder由右图所示的部分组成,一共L个,然后再输出到MLP Head,然后做一个分类。
2025-07-19 21:25:24
249
原创 FCN转置卷积/反卷积(2)
转置卷积在语义分割或者对抗神经网络中比较常见,其主要作用就是做上采样。--转置卷积不是卷积的逆运算--转置卷积也是卷积运算的一种--转置卷积也可以被称为反卷积同时在深度学习中上采样的方法也很多:最近邻插值、双线性插值。
2025-07-18 15:38:24
236
原创 FCN语义分割笔记(1)
为图像中的每一个像素赋予一个类别标签,语义分割提供更精细、像素级别的理解。比如有一个图片,图片里有一个西瓜和勺子,经过语义分割模型,输出一个结果,如果原来的图片是512*512,那么理论上来说要对应这么多个像素并且背景也算一个类别,每个像素掩码+类别信息。
2025-07-16 15:09:07
228
原创 深度学习常见名词解释、评价指标
比如机器学习算法对训练数据中的噪声、离群点不敏感,或者在不同分布的数据集上表现稳定。模型在含有错误标签或噪声特征的数据上训练或预测时,性能下降不大。模型不易被精心设计的微小扰动(对抗样本)欺骗而做出错误预测。模型在训练数据分布以外的数据上依然有较好的表现。
2025-07-11 14:18:57
913
原创 图像分割(2)u-net代码实战——基于视网膜分割
整体是一个U型的结构,左边是特征提取层,第一个是做了一个两层的卷积,蓝色箭头就是做了一个3*3的卷积,图中的图像大小会变小,但是本文代码会加入padding,避免图像大小的变化;两层卷积之后进行一个下采样,这里使用最大值池化,每次大小减小一倍;到了最下面,通过卷积变成1024的通道数;到右边进行上采样,注意,这里只取1024通道里面的一半,然后和上一层中的512进行拼接,图中灰色的箭头是裁剪,但是经过padding之后就不需要此步骤。
2025-05-19 18:40:00
466
原创 图像分割(1)U-net
虽然说是几年前的产品,但是现在还在用,因为深度学习很多时候越是简单的网络用起来效果越好,而且一般是目标比较小的时候产生的分割问题。u-net的优势就是网络结构简单,适合小目标分割,所以一直用到现在,在此基础上进行升级。概述就是编码解码过程,如上图所示,我们可以把每一步当做一层,比如这样:现在比如有一张图片的数据,首先使用卷积层提取特征,把输入数据x到网络中,走几个卷积层,然后越来越扁越来越矮,左边的一半就是编码。
2025-05-18 20:34:32
489
原创 图像分割(0)初步认识
看一下损失函数:在这里引入一个权重项,每个像素点的重要程度不一样,会根据比例重新加入一个权重项,使用正例比上负例。在这个公式基础上还要做一些改进:这下关注难易之分,和上面的多少不同,我们不应该把每个像素点同等看待,比如轮廓上的像素点就难以区分,这样难度就更高,这里在之前的公式上加上γ,一般是2。上图0.4改成0.5。
2025-05-16 17:53:14
267
原创 深度可分离卷积实战(2)模型定义代码
自己命名一个depthwise,进行两步卷积:第一步卷积因为通道数是不变的,所以输入和输出通道这里都是in_channels,后面需要加一个groups=in_channels,也就是说这个卷积里面是支持把他们分别进行做的,把通道分别运算;下一步就是做pointwise。然后是搭建模型,首先第一层使用卷积,后面再用深度可分离卷积。因为如果第一层也是深度可分离卷积,效果不太好。每两次进行一次翻倍,效果会好一点。
2025-05-14 15:05:48
292
原创 卷积神经网络实战(4)代码详解
"""一个用于图像分类的卷积神经网络(CNN)模型""""""初始化CNN模型结构Args:activation: 激活函数类型,可选"relu"或"selu""""# 设置激活函数# 卷积层定义# 输入形状: (batch_size, 1, 28, 28)self.conv1 = nn.Conv2d(in_channels=1, out_channels=32, kernel_size=3, padding=1) # 保持空间维度不变。
2025-05-09 13:24:11
1337
原创 深度可分离卷积(0)
那么如何减少参数量,再次说一下视野域,不同的视野域提取的图像特征尺度不同, 举个例子,现在有1*5*5的和2*3*3的卷积计算,图像为5*5,那么对于前者来说,只需要一次计算,计算后得到的像素点就包含全部信息,而对于后者来说,要经过两次计算,所以1*5*5和2*3*3的视野域是一样的(假设没有padding)。深度可分离卷积结构,把三个块的图替换为6个块的图,就完成了深度可分离的卷积神经网络。那么为什么要使用奇数尺寸的卷积核呢?
2025-05-06 17:52:30
362
原创 卷积神经网络实战(3)
模型中init_weights的作用是初始化模型的可训练参数。对于初始化权重,使用了Xavier均匀分布初始化,据输入和输出的维度动态调整权重的范围,使得前向传播时输出的方差保持一致,反向传播时梯度的方差也保持一致。继续说上一次模型定义,额外说一下就是padding='same'可以让它自动计算需要几圈padding。当步长为2的时候,same无法使用。统一所有层的初始化策略(例如本代码中强制使用 Xavier)。显式控制初始化过程,避免框架默认行为的变化。时,Xavier 更合适)。下一节放出全部代码。
2025-05-06 16:50:12
427
原创 卷积神经网络实战(2)
一开始conv1,第一层卷积层,去运算的时候,以前全连接的时候直接展平,现在是三维的,通道数是1(黑白照片),卷积的时候卷积核也是(1,3,3),但现在卷积核的尺寸实际上是立方体,虽然写的是2d,这是接口的这么一个设计,之所以是2d是因为在两个维度上进行移动(上下左右),不像以前的全连接是一维的必须展平。nn.MaxPool2d(2,2),前面一个2代表池化核大小是2*2,后面的2代表步长。池化一次把图像尺寸减半。对于第二层卷积层,卷积核是(32,3,3),这层的输入和输出的大小一样,作用是提取高层特征。
2025-05-04 16:55:47
632
原创 卷积神经网络实战(1)
输入通道数,图片是灰度图,所以是1,图片是彩色图,就是3,输出通道数,就是卷积核的个数(32,1,28,28)#输入x(32,1,28,28) 输出x(32,32,28,28)#输入x(32,32,28,28) 输出x(32,32,28,28)self.pool = nn.MaxPool2d(2, 2) #池化不能够改变通道数,池化核大小为2(2*2),步长为2 (28-2)//2+1=14self.fc2 = nn.Linear(128, 10) #输出尺寸(32,10)
2025-04-27 02:10:54
565
原创 卷积神经网络原理
比如图像大小1000*1000,那么输入层神经元的数目就是10的6次方,全连接层的参数就是10的12次方,一层就是1万亿个参数。
2025-04-23 14:32:57
342
原创 卷积的理解
卷积是数学中对两个函数进行的一种积分变换,公式如下:若为离散:核心思想是通过滑动加权求和的方式,将一个函数g的形态叠加到另一个函数f上。先从离散的情况入手:这个过程就称为卷积,中间每一个乘积的自变量加起来都是30。不管x+y等于多少,P1和P2总是交叉着相乘,这个过程可以通过旋转上面一行简化为下图所示:再变成下图:这下再进行卷积则只需要错位即可。
2025-04-18 02:10:45
366
原创 GRU传播
自己总结了一下就是,encoder第一层GRU的第一个时间步的输入,可以自定义一个全0向量作为一个输入,另一个输入是词向量,然后下一个时间步的输入就是上一个时间步的隐藏状态加这个时间步的输入,不同层之间是垂直传递的,就比如第一层某个时间步的输入,是词向量加上这层前一个时间步的隐藏状态,第二层某个时间步的输入,就是第一层同时间步的隐藏状态加这层上一个时间步的隐藏状态。
2025-03-28 16:34:47
139
原创 Transformer代码实战
位置编码self.hidden_size = config["d_model"] # 词向量维度# layers,设置padding_idx可以让pad的词向量全为0),# 位置编码,权重通过get_positional_encoding函数计算得到self.pos_embedding.weight.requires_grad_(False) # 不更新位置编码的权重self.dropout = nn.Dropout(dropout_rate) # 随机失活层# 计算位置信息。
2025-03-27 02:32:53
921
原创 Transformer原理
相对于seq2seq就是不使用循环RNN,训练的时候可以并行训练,这个时候如果把句子加的很长,数据集用的很大也可以。Transformei是一个N近N出的结构,每个Transformer单元相当于一层的RNN,接收一整个句子所有词作为输入,然对每一个词都做输出。Transformer任意两个词之间的操作距离都是1。如果设计纯粹语义关系的编码,数字化之后的数值要能体现语义关系。就比方说现在有学生和书和大象,那么可以假设学生和书这两个语义关系的向量在空间中的距离更近,而与大象更远。
2025-03-19 10:06:02
839
原创 BLEU评估指标
用于评估模型生成的句子和实际句子差异的指标,取值在[0,1],匹配度高就距离1近,反之距离0近。这个指标计算代价小,容易理解,与语言无关,与人类评价结果高度相关。BLEU主要基于(连续的n个词)的精确率,并结合**短句惩罚(Brevity Penalty, BP)**来调整长度差异的影响。公式:BP为惩罚系数。
2025-03-13 22:17:25
751
原创 seq2seq推理模块设计
这里先解释call方法,首先预处理句子,然后编码输入,把文本转化为tokenID,左端填充Padding,添加BOS和EOS标记。然后是Translator类,初始化翻译器,把模式变成eval模式,绑定源语言和目标语言的分词器。这段代码实现了一个基于序列到序列(Sequence-to-Sequence)模型的。然后执行推理生成语言的TokenID(preds)和注意力分数(scores)。首先加载模型,从文件best.ckpt加载预训练模型的参数。然后是解码输出把TokenID变为文本,最后可视化注意力。
2025-03-13 15:50:56
220
原创 Bahdanau注意力方式公式原理详解
Bahdanau注意力(又称)由Dzmitry Bahdanau等人在2015年提出,用于改进传统编码器-解码器模型在长序列任务(如机器翻译)中的性能。,使解码器能自适应地关注输入的关键部分。
2025-03-12 00:56:25
1189
原创 深度学习subword分词BPE
BPE:这是一种流行分词算法,可以有效的平衡词汇表大小和步数,分词采用共现性。步骤:1.准备足够大的训练语料2.确定期望的subword词表大小(超参)3.将单词拆分为字符序列并在末尾添加后缀"</w>",这样就可以统计单词频率。比如一开始有一个l字母,现在编程l</w>5,就说明出现了五次。停止符</w>的意义在于表示subword是词后缀。每次合并后词表可能出现三种变化:+1:表明加入合并后的新字词,同时原来在的2个子词还保留;0:如果一个字词不是单独出现的,就被消解;
2025-03-11 21:57:40
1133
原创 深度学习LSTM公式原理
普通的RNN信息不能长久传播,因为结尾较远的信息被稀释的比较厉害,所以引入LSTM,LSTM 是一种特殊的循环神经网络(RNN),专门设计用于解决传统RNN在处理与RNN相比,LSTM在计算隐藏层时,会包含当前时刻的日记信息。LSTM通过,显式控制信息的保留与遗忘,从而解决长期依赖问题。门机制是通过学习对原权重进行更新。遗忘门:决定细胞状态中哪些信息需要被丢弃(通过Sigmoid函数输出0~1之间的值)。传入门:要不要把重要的传入,决定当前输入信息中哪些需要更新到细胞状态。
2025-03-10 21:20:04
1512
原创 深度学习分词器char-level实战详解
batch_first=True,输入的数据格式是(batch_size, seq_len, embedding_dim)#这里和02的差异是没有只拿最后一个输出,而是把所有的输出都拿出来了return x, hidden #x的shape是(batch_size, seq_len, vocab_size)print("{:=^80}".format(" 一层单向 RNN "))因为字典太小,所以embedding_dim要放大。
2025-03-10 17:36:19
597
原创 深度学习双向RNN
一个隐藏层其实是有两个,一个是向前的一个是向后的。向后的就是说后面的输入更新隐藏状态后是给前面用的,这样两个隐藏层合在一起。在实现上只需要把序列反过来训练就可以了。最后两个东西合并起来进入输出层。双向RNN通过反向更新的隐藏层来利用方向时间信息。那么双向神经网络如何做推理呢?答案是推理只能用单向,双向不适合做推理。双向主要的作用是对一个句子做特征提取,理解场景。
2025-03-10 11:54:31
567
原创 深度学习RNN文本分类代码详细解读(直接可以跑)
self.rnn = nn.RNN(embedding_dim, hidden_dim, num_layers=num_layers, batch_first=True, bidirectional=bidirectional) #bidirectional是双向的#把final_hidden去除轴size为1的,和x进行比较,里边元素是否相等# 取最后一个时间步的输出 (这也是为什么要设置padding_first=True的原因)return x。
2025-03-10 02:24:39
1054
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅