- 博客(42)
- 资源 (3)
- 问答 (3)
- 收藏
- 关注
原创 多模态方法总结
总的来说,多模态几乎都是基于Transformer的工作,并且正在向更大一统的方向前进。BeiTv3尽管只有一个模型,但依然有不同的子模块FFN。一个方向是language interface,类似通过prompt指定任务类型,把所有的任务都当成文本生成任务。另外,在最后总结一下我目前遇到的一些问题,第一个是ALBEF论文里的伪标签文本是如何生成的。我这里说的是伪标签文本而不是伪标签。对于ITC来说,生成的伪标签是一个相似度,对于MLM来说,生成的伪标签是词表概率分布。这些都不需要文本。
2024-10-09 00:12:09
1223
原创 YOLOv8 基于NCNN的安卓部署
前两节我们依次介绍了基于YOLOv8的剪枝和蒸馏本节将上一节得到的蒸馏模型导出NCNN,并部署到安卓。
2024-10-05 18:17:02
3613
10
原创 YOLOv8 基于MGD的知识蒸馏
接着上一篇我们介绍了YOLOv8的剪枝方案和代码,本篇文章将剪枝后的模型作为学生模型,剪枝前的模型作为教师模型对剪枝模型进行蒸馏,从而进一步提到轻量模型的性能。
2024-10-05 18:10:06
3822
5
原创 YOLOv8 基于BN层的通道剪枝
在损失项中增加对BN层的缩放系数γ和偏置项β的稀疏约束,λ系数越大,稀疏约束越严重Lxy∑lfxyλ1γ∑gγλ2β∑gβ对于L1gγ∣γ∣gβ∣β∣如果直接修改YOLOv8的损失,不方便控制L只传导对BN的参数更新,因此,采用修改BN的梯度的方式修改。
2024-07-31 15:13:17
2675
4
原创 ON-LSTM介绍
在常见的神经网络中,神经元通常都是无序的,比如遗忘门ftf_tft是一个向量,向量的各个元素的位置没有什么规律。ON-LSTM则试图把这些神经元排个序,并且用这个序来表示一些特定的结构,从而把神经元的序信息利用起来。比如说,c有6个维度,按顺序编号为0,1,2,3,4,5。接近0的维度存储高层级的语义,接近5的维度则存储低层次语义。举个例子:上图是一个句子的语法树结构,一共有5层,所以我们用一个5维的c来存储上述结构(姑且用一个值就能表示语义特征)。每一层都有其相应的语义信息,即便是语句层。比如说,你这句
2022-07-18 18:28:03
1448
1
原创 强化学习入门笔记
我们先回忆一下童年,来看看超级玛丽这款游戏在这款游戏里面的,我们需要控制超级玛丽进行左右行走、跳、攻击等动作,来躲避或攻击小动物、吃金币以及各种类型的增益道具。最终,获得的金币数量的多少以及通关代表我们玩游戏玩的好不好。那么,如果我们希望让机器来玩这个游戏呢?怎么能让机器在合适的时候做出合适的动作?这就是强化学习要学的东西。在强化学习中,我们把超级玛丽称作智能体(Agent),而把游戏机制称作环境(Environment),把每一帧画面称作状态(State),把超级玛丽的行为称为动作(Action),把获得
2022-07-08 17:34:35
1197
原创 卷积神经网络补充
在数学上,卷积定义为ϕ(x)=∫−∞+∞f(t)g(x−t)dt\phi(x) = \int_{-\infin}^{+\infin} f(t)g(x-t)dtϕ(x)=∫−∞+∞f(t)g(x−t)dt怎么理解上面的式子呢?首先,f(t)表示t时刻的输入,g(x-t)表示在t时刻的输入对当前x时刻的影响因子可以看到g函数的输出是一个时间长度,而不是时刻,也就是说影响因子是跟时间长度相关而不是时刻相关的所以才会以当前时刻x-t时刻这个时间间隔作为输入假如现在有一堆石头,一个池子。(知乎上看到的例子,
2022-07-01 18:12:11
527
原创 变分自编码器(VAE)
在本篇文章中,我将从变分自编码器的来源出发,从两个角度分别引出其网络和目标函数VAE的思想来源如果我们有一批样本,然后想生成一个新样本,我们应该怎么做呢?首先,最直接的想法是根据已有样本得到真实分布Pdata(x)P_{data}(x)Pdata(x),从而根据Pdata(x)P_{data}(x)Pdata(x)采样即可获取新样本但是很可惜,我们很难获得Pdata(x)P_{data}(x)Pdata(x),并且通常Pdata(x)P_{data}(x)Pdata(x)是复杂的,不容易采样
2022-05-31 14:15:10
4080
原创 高斯过程部分数学推导
已知高斯过程:任意给定一批样本点 X=[x1,x2,...,xn]\mathbf{X=[x_1,x_2,...,x_n]}X=[x1,x2,...,xn] 为其随机分配 F=[f(x1),f(x2),...,f(xn)]\mathbf{F = [f(x_1),f(x_2),...,f(x_n)]}F=[f(x1),f(x2),...,f(xn)],F\bold FF 服从多维高斯分布。假设 F\mathbf{F}F 的实际观测为 Y=[y1,y2,...,yn]\mathbf{Y=[y_1,
2022-05-08 20:50:29
773
原创 Pytorch实现Transformer字符级机器翻译
前言上次发了一篇用seq2seq with attention做机器翻译的博客,今天我们试试Transformer。这篇文章主要介绍Transformer模型的搭建和训练,数据集仍然是上次的博客中使用的数据集。没看过那篇博客的可以先看看构建它数据集的部分再回来看这篇文章。搭建模型重点分析先看看这张经久不衰的Transformer架构图实现Transformer有几个重点Transformer中的三个maskMulti-Head Attention With Add&NormFee
2022-04-16 16:56:59
1908
原创 Pytorch实现Seq2Seq(Attention)字符级机器翻译
前言前些天学了seq2seq和transformer,然后用机器翻译练习了一下,今天这篇博客就讲讲带注意力机制的seq2seq模型怎么做机器翻译。数据集准备数据集我使用的数据集是从B站某个视频拿到的,但是忘了是哪个视频了,是已经排好序的中英平行语料,数据不多,两万多条正适合用来做练习。数据集链接发在csdn了,大家可以去下载。下载完成后解压到项目目录即可,可以看到这里有3个文件ch.vec和en.vec分别是中文和英文字典,translate.csv是中英对照的平行语料。注意啊,ch.vec
2022-04-15 21:11:06
2573
6
原创 netron神经网络可视化
安装netronpip install netron使用netron对各种模型的支持可谓各有其优点和缺点,netron可以显示pytorch模型定义在主类中的各部分的整体结构,忽略细节。但是看不到整个模型的整体结构和细节。netron可以显示onnx模型的整体结构,但全部都是基于conv,relu,maxpool等基础层的细节。事实上这两种需求都是有的。pytorch模型转onnximport torchimport torch.onnxdef convert2onnx(model_pa
2022-01-06 10:53:55
1379
原创 resnet18实现cifar10分类
实验步骤搭建resnet18网络数据集加载模型训练和改进分析评估Kaggle提交网络构建实验初期拟采用torchvision中实现的resnet18作为网络结构,为了方便修改网络结构,于是重新实现了resnet18网络resnet18由一个7x7的降采样卷积,一个max pooling层,8个basicblock,一个全局池化层,最后接一个全连接层组成,如下图tensorboard网络结构可视化,左图为torchvision中的resnet实现,右图为自定义实现代码如下定义残差块c
2021-12-30 12:19:28
6536
原创 中文分词算法
分词算法基于规则的分词最大匹配法最大匹配法设定一个最大词长度,每次匹配尽可能匹配最长的词算法过程示例最大词长度为4s1s2w结合成分子时null结合成分结合成分子时null结合成结合成分子时null结合成分子时结合/成分子时成分子时结合/成分子成分子时结合/成分子时结合/成分/子时子时结合/成分/子时结合/成分/子时null结合/成分/子/时null实现代码先贴一段统计词频
2021-12-28 19:47:45
968
原创 Yolo标签可视化
我的目录结构是这样的,yolov5的数据集目录结构希望能把标签数据绘制到图片上看看效果,代码如下from pathlib import Pathfrom alphabet import alphabetimport pandas as pdimport cv2import matplotlib.pyplot as pltalphabet = alphabet.split("\n")label_root = Path("labels/test")image_root = Path("i
2021-12-11 19:41:43
5228
4
原创 Bert实现多标签文本分类
多标签文本分类Bert简介两个任务Bert是按照两个任务进行预训练的,分别是遮蔽语言任务(Masked Language Model)和句子预测任务(NextSentence Prediction)。遮蔽语言任务(Masked Language Model)对输入的语句中的字词 随机用 [MASK] 标签覆盖,然后模型对mask位置的单词进行预测。这个过程类似CBOW训练的过程,我们利用这个训练任务从而得到每个字符对应的embedding。特别的,[CLS]字符的embedding我们可以视为整个
2021-12-07 15:44:55
10710
11
原创 Bert模型做多标签文本分类
参考链接BERT模型的详细介绍图解BERT模型:从零开始构建BERT(强推)李宏毅2021春机器学习课程我们现在来说,怎么把Bert应用到多标签文本分类的问题上。注意,本文的重点是Bert的应用,对多标签文本分类的介绍并不全面单标签文本分类对应单标签文本分类来说,例如二元的文本分类,我们首先用一层或多层LSTM提取文本序列特征,然后接一个dropout层防止过拟合,最后激活函数采用sigmoid,或者计算损失的时候使用sigmoid交叉熵损失函数。对于多元分类则激活函数采用softmax,其它没
2021-12-01 20:49:41
14008
37
原创 词性标注-隐马尔可夫模型
词性标注-隐马尔可夫模型今天刚学完条件随机场,然后想找个例子实战一下,写写代码。于是关注到了词性标注,因为在学习的过程中,很多博客、视频、书等等都常常提到词性标注作为讲解的例子。然后我突然想到前面学HMM的过程中虽然利用盒子与球模型实现了HMM的算法,但是还没有用一个更广泛,更实际的例子去实现它,于是决定先用HMM实现词性标注。流程很简单,先利用现有的语料库训练HMM模型,这是学习问题,然后利用viterbi算法做任意输入的句子做词性标注,即解码问题我们先来看监督式学习的情况语料来自于https:/
2021-11-19 23:38:13
3262
原创 kmeans算法和kmeans++
kmeans聚类算法算法原理kmeans的算法原理其实很简单我用一个最简单的二维散点图来做解释如上图,我们直观的看到该图可聚成两个分类,我们分别用红点和蓝点表示下面我们模拟一下Kmeans是怎么对原始的二维散点图做聚类的首先,随机初始化2个聚类中心,至于什么是聚类中心呢,我们暂且压下不表,现在就把它当成一个点就好。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SK81vA5t-1636722491932)(C:\Users\li554\AppData\Roa
2021-11-12 21:16:46
6781
3
原创 白板推导系列Pytorch-隐马尔可夫模型-解码问题
解码问题(Decoding)解码问题就是求 argmaxI P(I∣O,λ)\underset{I}{argmax}\ P(I|O,\lambda)Iargmax P(I∣O,λ)Viterbi算法Viterbi算法事实上是一个动态规划的算法这个图来自知乎我们把概率当成距离那么只要确定了唯一的终点,到这个终点的最大距离必然等于到前一个时间轴5个点的最大距离分别乘以这5个点到终点的距离我们也可以用公式严格推导出这一性质定义距离为δt(i)=maxi1,i2,...
2021-11-12 16:05:21
1772
2
原创 白板推导系列Pytorch-隐马尔可夫模型-学习问题
隐马尔可夫模型的学习问题分为监督学习和非监督学习问题,监督学习采用极大似然估计,非监督学习采用Baum-Welch算法,我们直接先讲Baum-Welch算法。Baum-Welch算法(EM算法)事实上,Baum-Welch算法是EM算法在HMM学习问题中的应用。我们要估计的λ^\hat \lambdaλ^应该为λ^=argmaxλP(O∣λ)\hat \lambda = \underset{\lambda}{argmax} P(O|\lambda)λ^=λargmaxP(O∣λ)我们还是先把
2021-11-12 15:54:38
1053
1
原创 白板推导系列Pytorch-隐马尔可夫模型-概率计算问题
概率计算问题(Evaluation)给定模型 λ=(A,B,π)\lambda=(A, B, \pi)λ=(A,B,π) 和观测序列 O=(o1,o2,⋯ ,oT)O=\left(o_{1}, o_{2}, \cdots, o_{T}\right)O=(o1,o2,⋯,oT) , 计算在模型 λ\lambdaλ 下观测序列 OOO 出现的概率 P(O∣λ)P(O \mid \lambda)P(O∣λ).直接计算法P(O∣λ)=∑IP(O,I∣λ)=∑IP(O∣I,λ)⋅P(I∣λ
2021-11-12 15:44:30
536
原创 白板推导系列Pytorch-隐马尔可夫模型(HMM)
白板推导Pytorch-隐马尔可夫模型(HMM)状态转移矩阵和观测概率矩阵状态转移矩阵A=[aij]N×Nαij=P(it+1=qj∣it=qi)\begin{aligned}A &=\left[a_{i j}\right]_{N \times N} \\\alpha_{ij} &= P(i_{t+1} = q_j|i_t=q_i)\end{aligned}Aαij=[aij]N×N=P(it+1=qj∣it=qi)观测概率矩阵B=[bj(k)]N×Mb
2021-11-08 22:52:09
1775
3
原创 白板推导系列Pytorch-期望最大(EM)算法
白板推导系列Pytorch-期望最大(EM)算法EM算法介绍直接看这篇博客-如何通俗理解EM算法,讲的非常好,里面也有算法的公式推导。当然白板推导的视频里面公式推导已经讲的很清楚了,就是缺少应用实例。这篇博客用三个很通俗的例子引入了极大似然估计和EM算法。美中不足的是并没有详细说明极大似然估计并不是一定陷入鸡生蛋蛋生鸡的循环而没有办法处理隐变量问题,而是由于计算复杂从而摒弃了这个方法。当我们能知道z的分布的时候,其实也是可以用极大似然估计表示的但是,很多时候,我们很难获得Z的分布,除非我们事先对Z已经
2021-11-08 15:32:51
1026
原创 白板推导系列Pytorch-支持向量机(SVM)
白板推导系列Pytorch-支持向量机(SVM)支持向量机的代码实现主要是SMO算法的实现,我参考了下面这篇博客https://www.cnblogs.com/lsm-boke/p/12317200.html该博客中使用numpy实现的svm,我对numpy版本做了一点修改,并且使用pytorch的API写了一个新版本,但除了函数名不同基本一致,只是numpy版本的收敛速度比pytorch要快很多。另外我调用了sklearn中的svm,速度都远超这两个实现pytorch版本导入所需的包impor
2021-10-29 18:57:35
8518
5
原创 深度学习花书-4.4 约束优化
4.4 约束优化这篇博客不是对照花书写的,但是对你看花书这一节是有用的minmax不等式-凤尾大于等于鸡头在看到白板推导的up主看着下式说鸡头凤尾的时候,觉得真是太有趣了,很形象有没有maxyminxf(x,y)≤minxmaxyf(x,y)\max _{y} \min _{x} f(x, y) \leq \min _{x} \max _{y} f(x, y)ymaxxminf(x,y)≤xminymaxf(x,y)花书里面有出现类似的式子,当时没有看懂,看到白板推导SVM的视
2021-10-27 19:18:25
650
原创 白板推导系列Pytorch-PCA降维
白板推导系列Pytorch-PCA降维前面在看花书的时候就遇到过PCA,但是花书上的推导和白板推导中的推导不太一样,花书上的推导我至今还没弄清楚,但是这个我懂了,接下来我将以mnist数据集为例实现PCA降维并利用sklearn朴素贝叶斯分类器分类导入相关包import torchimport matplotlib.pyplot as pltfrom sklearn.datasets import load_digitsfrom sklearn.model_selection import tr
2021-10-26 17:28:40
2257
1
原创 白板推导系列Pytorch-朴素贝叶斯
白板推导系列Pytorch-朴素贝叶斯下面的实现基于极大似然估计,意思就是使用极大似然估计的方法来估计模型中的未知参数,因此我们当然能想到还有其它的估计方法,例如贝叶斯估计。如果您仍然不明白我在说什么,或许是您还没有看白板推导的系列视频pytorch实现生成数据集def create_dataset(n_samples=1000): x0 = torch.normal(2,1,size=(n_samples//2,2),dtype=torch.float32) y0 = torch.
2021-10-25 21:45:18
777
原创 白板推导系列Pytorch-高斯判别分析(GDA)
白板推导系列Pytorch-高斯判别分析(GDA)不同于感知机和逻辑回归中由于得到的参数方程无法直接求解而只能采用随机梯度下降或上升的方式来求极值,LDA和GDA都可以直接求得参数,因而不需要通过逐步训练导入需要的包import torchimport matplotlib.pyplot as pltimport numpy as np生成数据集def create_dataset(n_samples=1000): n_data = torch.ones(n_samples//2,
2021-10-25 16:26:54
252
原创 白板推导系列Pytorch-逻辑回归
白板推导系列Pytorch-逻辑回归的简单实现导入需要的包import torchimport matplotlib.pyplot as pltimport torch.nn as nnfrom torch.autograd import Variable生成数据集def create_dataset(n_samples=1000): n_data = torch.ones(n_samples//2, 2) x0 = torch.normal(2 * n_data, 1)
2021-10-24 18:36:30
175
2
原创 白板推导系列Pytorch-线性判别分析(LDA)
白板推导系列Pytorch-线性判别分析(LDA)导入所需的包import torchfrom sklearn.datasets import make_classificationfrom sklearn.linear_model import Perceptronimport torch.nn.functional as Fimport matplotlib.pyplot as plt生成数据集X, y = make_classification(n_samples=1000, n_f
2021-10-24 09:38:18
2668
3
原创 白板推导系列Pytorch实现-感知机算法
白板推导系列Pytorch实现-感知机算法下面的代码以二维输入为例,实现二分类的感知机算法import matplotlib.pyplot as pltimport torchimport torch.utils.data as Dataimport numpy as npclass Perceptron: # 注意,为了我们能看到训练的效果,特意将learning_rate设的很小 def __init__(self, X, y, learn_rate=0.00001, b
2021-10-22 18:36:02
297
3
原创 深度学习花书-5.6 贝叶斯统计
5.6 贝叶斯统计频率学派的观点是,对于一个概率模型,参数是未知的常量而贝叶斯学派的观点是,参数是未知的变量,它自身也是遵循某个概率分布的,我们只有它的先验分布,需要根据观察到的数据来进行调整。通常来说,如果我们对参数不具有太多确定性的时候,采用高斯分布作为先验是附加条件最小的分布频率派的典型就是极大似然估计,本质上是一个优化问题。而贝叶斯派是基于贝叶斯公式(如下),最关键是求分母,这通常是一个求积分问题p(θ∣x(1),…,x(m))=p(x(1),…,x(m)∣θ)p(θ)p(x(1),…,x(
2021-10-21 20:12:48
266
原创 深度学习花书-5.4 估计、偏差和方差
5.4 估计、偏差和方差5.4.1 点估计点估计是依据样本估计总体分布中所含的未知参数或未知参数的函数。简单的来说,指直接以样本指标来估计总体指标,也叫定值估计。通常它们是总体的某个特征值,如数学期望、方差和相关系数等。点估计问题就是要构造一个只依赖于样本的量,作为未知参数或未知参数的函数的估计值。构造点估计常用的方法是:①矩估计法,用样本矩估计总体矩②最大似然估计法。利用样本分布密度构造似然函数来求出参数的最大似然估计。③最小二乘法。主要用于线性统计模型中的参数估计问题。④贝叶斯估计法。1.
2021-10-17 20:05:37
901
原创 深度学习花书-3.8 期望、方差与协方差
3.8 期望、方差与协方差1.期望离散型E(f(x))=∑xP(x)f(x)E(f(x)) = \sum_{x} P(x) f(x)E(f(x))=x∑P(x)f(x)连续型E(f(x))=∫p(x)f(x)dxE(f(x)) = \int p(x) f(x) d xE(f(x))=∫p(x)f(x)dx2.方差Var(f(x))=E[(f(x)−E[f(x)])2]\operatorname{Var}(f(x))=E\left[(f(x)-E[f(x)])^{2}\right]
2021-10-12 15:14:00
289
原创 深度学习花书-2.9 伪逆矩阵
2.9 伪逆计算公式A+=VD+UT\boldsymbol{A^+}= \boldsymbol{V}\boldsymbol{D^+}\boldsymbol{U^T}A+=VD+UT其中,矩阵 U\boldsymbol{U}U,D\boldsymbol{D}D和V\boldsymbol{V}V是矩阵 A\boldsymbol{A}A奇异值分解后得到的矩阵。对角矩阵D\boldsymbol{D}D的伪逆D+\boldsymbol{D^+}D+是其非零元素取倒数之后再转置得到的值得注意的是,通过np
2021-10-11 21:43:34
317
原创 深度学习花书-2.10 PCA数学推导
2.10 PCA本节主要记录花书2.10 PCA实例 中下图两个式子的推导过渡,PCA的推导全过程之后再补充个人认为,从2.72往2.71推导更容易一些,然后我们再逆向考虑就行了先介绍一下Frobenius范数,定义公式如下,即矩阵每个元素的平方和开根∥A∥F≡∑i=1m∑j=1n∣aij∣2\|\mathbf{A}\|_{F} \equiv \sqrt{\sum_{i=1}^{m} \sum_{j=1}^{n}\left|a_{i j}\right|^{2}}∥A∥F≡i=1∑mj=1∑
2021-10-11 20:10:03
452
原创 深度学习花书- 4.3 基于梯度的优化方法
4.3 基于梯度的优化方法现在在看花书,看到PCA的时候部分地方不懂跳到4.3节寻找答案,所以先记录这一节的部分笔记,后面读到再补充向量微积分书上没讲,但是不懂这个就很多地方都没法看懂,先掌握一点基础公式即可。向量微积分参考文献:(31条消息) 向量微积分基础_文剑木然的专栏-优快云博客_向量微积分常用求导公式∂Ax∂x=A\frac{\partial \mathbf{A} \mathbf{x}}{\partial \mathbf{x}}=\mathbf{A}∂x∂Ax=A∂x⊤A∂x
2021-10-11 15:41:26
216
原创 最小生成树-Prim算法的Python实现
建立图如果不了解算法思想,请移步 http://c.biancheng.net/algorithm/prim.htmlclass Graph: def __init__(self,vertex_num,edges): # 权重初始化为无穷 self.vertex_num = vertex_num self.edges = np.zeros(shape=(vertex_num,vertex_num),dtype=int) self.ed
2021-10-08 18:26:58
655
原创 朴素贝叶斯算法
朴素贝叶斯算法贝叶斯公式:当我们知道结果的时候,想知道最可能导致这个结果的原因在这个公式里面,类别就是原因,特征就是结果(因为是这个类别,所以有这些特征?)其中P(类型|特征) 称为后验概率,P(类别)称为先验概率,P(特征|类别)叫做似然概率,P(特征)叫做证据(后面讲为什么可以忽略)那么想要求得P(类别|特征),那么就要求得p(类别)和p(特征|类别),前者容易,类别数除以总数即可后者则比较麻烦,我们需要引入另一个概念——独立朴素贝叶斯算法的朴素二字,意思是说,所有特征是相互独立的,比如硬
2021-10-08 18:13:33
280
pytorch实现seq2seq和transformer机器翻译
2022-04-16
中英平行语料小型数据集
2022-04-15
kmeans++聚类聚成这样合理吗
2021-11-13
朴素贝叶斯的实现,我写的pytorch版本的代码为什么速度那么慢,改成numpy就很快?
2021-10-25
感知机算法的pytorch实现代码
2021-10-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人