
算法
文章平均质量分 75
taoqick
这个作者很懒,什么都没留下…
展开
-
python sorted 自定义比较函数 单个或多个参数 数字拼接 cmp_to_key
不废话了,直接上例子:res1 = sorted([2,3,1], reverse=True)print(res1)#[3, 2, 1]res2 = sorted({1:3,2:1}.items(), reverse=True)print(res2)#[(2, 4), (1, 3)]res3 = sorted({1:3,2:1}.items(), key=lambda x :...原创 2019-12-27 23:50:10 · 392 阅读 · 0 评论 -
DALL·E2(unCLIP)、DDPM、DDIM、Stable Diffusion、IS、FID、ControlNet、Score Matching、朗之万、RF、SDXL、SD3要点总结
DALL·E 1可以看成是VQ-VAE和文本经过BPE编码得到的embedding。原创 2023-07-09 19:30:09 · 2635 阅读 · 0 评论 -
GAN系列基础知识
原始GAN的值函数是minGmaxDVDGEx∼pdataxlogDx)]Ez∼pzzlog1−DGz)))]其中Ex∼pdatax表示从真实样本采样,Ez∼pzz表示从噪声样本中采样进一步将V(D,G)写成积分格式就是VGD∫xpdataxlogDx))dx∫zpzzlog1−D。原创 2023-02-13 11:29:08 · 646 阅读 · 0 评论 -
关于PatchGAN的理解
但是PatchGAN输出的是一个N x N的矩阵,这个N x N的矩阵的每一个元素,比如a(i,j) 只有True or False 这两个选择(label 是 N x N的矩阵,每一个元素是True 或者 False),这样的结果往往是通过卷积层来达到的,因为逐次叠加的卷积层最终输出的这个N x N 的矩阵,其中的每一个元素,实际上代表着原图中的一个比较大的感受野,也就是说对应着原图中的一个Patch,因此具有这样结构以及这样输出的GAN被称之为Patch GAN。转载 2023-02-10 19:59:23 · 482 阅读 · 0 评论 -
pytorch中bilinear的理解
但仔细看实现发现这个表达式并不是简单连乘的关系。假设x1(shape是b,n)和x2(shape是b,m)是二维,那么A是个三维tensor(shape是a,n,m)。具体实现时,A先拆成a个(n,m)形状的tensor,x1分别与之。直接参考官方文档,x1和x2是两个输入,A是参数矩阵,如下表达式。原创 2022-11-13 22:28:37 · 1641 阅读 · 0 评论 -
双线性插值(Bilinear Interpolation)
最近用到插值算法,使用时仿真速度太慢,于是采用算法简单的线性插值。本篇主要介绍一下双线性插值的实现方法。转载 2022-11-12 17:17:14 · 404 阅读 · 0 评论 -
Pytorch中的collate_fn、dataloader和dataset
DataLoader是拿出batch_size条features和label交给这个函数来collate,所以简单来说,x的最外层是batch个数,x的次外层是特征和label,因此len(x[0])其实是2,以下是一个测试code。原创 2022-10-23 15:14:41 · 1563 阅读 · 0 评论 -
L1 L2正则化、Smooth L1、优化器weight_decay、坐标轴下降、近端梯度下降 (proximal gradient descent)、subgradient次梯度
简单说就是L(w)+Cw^2和L(w)+C|w|这俩目标函数求导结果分别是+2Cw和+C,+C不会随着w的变化而变化,所以解空间就稀疏了。转载 2022-10-06 22:09:10 · 2584 阅读 · 0 评论 -
kaiming初始化的推导
网络训练的过程中, 容易出现梯度消失(梯度特别的接近0)和梯度爆炸(梯度特别的大)的情况,导致大部分反向传播得到的梯度不起作用或者起反作用. 研究人员希望能够有一种好的权重初始化方法: 让网络前向传播或者反向传播的时候, 卷积的输出和前传的梯度比较稳定. 合理的方差既保证了数值一定的不同, 又保证了数值一定的稳定.(通过卷积权重的合理初始化, 让计算过程中的数值分布稳定), 均匀分布也是有方差的, 并且均值为0的时候, 可以通过方差算出均匀分布的最小值和最大值.值由权重参数的数量和传播的方向决定.转载 2022-10-04 22:42:20 · 1597 阅读 · 0 评论 -
Pytorch动态计算图
Pytorch的计算图由节点和边组成,节点表示张量或者Function,边表示张量和Function之间的依赖关系。Pytorch中的计算图是动态图。这里的动态主要有两重含义。第一层含义是:计算图的正向传播是立即执行的。无需等待完整的计算图创建完毕,每条语句都会在计算图中动态添加节点和边,并立即执行正向传播得到计算结果。第二层含义是:计算图在反向传播后立即销毁。下次调用需要重新构建计算图。转载 2022-10-04 16:21:47 · 585 阅读 · 0 评论 -
Pytorch自动微分机制
神经网络通常依赖反向传播求梯度来更新网络参数,求梯度过程通常是一件非常复杂而容易出错的事情。而深度学习框架可以帮助我们自动地完成这种求梯度运算。Pytorch一般通过反向传播 backward 方法 实现这种求梯度计算。该方法求得的梯度将存在对应自变量张量的grad属性下。除此之外,也能够调用torch.autograd.grad 函数来实现求梯度计算。这就是Pytorch的自动微分机制。转载 2022-10-04 16:00:31 · 1500 阅读 · 0 评论 -
通俗讲解pytorch中nn.Embedding原理及使用
每个mini-batch的训练,都要从词向量表找到mini-batch对应的单词的词向量作为RNN的输入放进网络。上面batch有3个样例,RNN的每一步要输入每个样例的一个单词,一次输入batch_size个样例,所以batch要按list外层是时间步数(即序列长度),list内层是batch_size排列。其为一个简单的存储固定大小的词典的嵌入向量的查找表,意思就是说,给一个编号,嵌入层就能返回这个编号对应的嵌入向量,嵌入向量反映了各个编号代表的符号之间的语义关系。维度的前两维和前面讲的是一致的。转载 2022-10-01 15:27:05 · 3328 阅读 · 0 评论 -
如何理解与看待在cvpr2020中提出的circle loss?与triplet loss的关系
先说triplet loss:以上转载自:Triplet loss学习笔记 - 知乎------------------------------以下转载自:如何理解与看待在cvpr2020中提出的circle loss? - 知乎转载 2022-05-29 18:35:23 · 499 阅读 · 0 评论 -
学会区分 RNN 的 output 和 state
写这篇文章的起因是,有人问调用 outputs, last_state = tf.nn.static_rnn(cell,inputs) 之后,last_state 和outputs[-1] 相等吗?如果不想等,为什么会不等呢?其实这也是学习 RNN 的一大难点。我个人认为,学习RNN 最难的地方就是弄明白它的输入和输出是什么。一个简单的回答是,对于一个 RNN 单元,它每次接受一个当前输入 x_...原创 2018-03-07 19:02:05 · 2559 阅读 · 3 评论 -
强化学习入门
model和policy的区别Model:Mathematical models of dynamics and rewardPolicy: Function mapping agent’s states to actionsmodel-based和model-free的区别有模型学习是指根据环境中的经验,构建一个虚拟世界,同时在真实环境和虚拟世界中学习;免模型学习是指不对环境进行建模,直接与真实环境进行交互来学习到最优策略。强化学习四件套:状态集合S、动作集合A、状态转移函数P和奖励函数R,当原创 2022-05-22 20:25:05 · 625 阅读 · 0 评论 -
CNN参数估计
CNN转载 2022-05-04 20:48:31 · 206 阅读 · 0 评论 -
U-Net原理、SegNet和DeepLab等分割任务综述
Unet 背景介绍:Unet 发表于 2015 年,属于 FCN 的一种变体。Unet 的初衷是为了解决生物医学图像方面的问题,由于效果确实很好后来也被广泛的应用在语义分割的各个方向,比如卫星图像分割,工业瑕疵检测等。Unet 跟 FCN 都是 Encoder-Decoder 结构,结构简单但很有效。Encoder 负责特征提取,你可以将自己熟悉的各种特征提取网络放在这个位置。由于在医学方面,样本收集较为困难,作者为了解决这个问题,应用了图像增强的方法,在数据集有限的情况下获得了不错的精度。Un翻译 2022-04-13 20:52:56 · 3955 阅读 · 0 评论 -
OCR概述和CRAFT
基于候选框的文本检测框架是在通用物体检测的基础上,通过设置更多不同长宽比的锚框来适应文本变长的特性,以达到文本定位的效果。例如基于经典的 Faster R-CNN 所衍生出来的 Facebook 大规模文本提取系统 Rosetta[34]、基于 SSD 框架的 SegLink[35]和 TextBoxes++[36]等。 基于像素分割的文本检测框架首先通过图像语义分割获得可能属于的文本区域的像素,之后通过像素点直接回归或者对文本像素的聚合得到最终的文本定位。例如基于 FCN 的 TextSn...转载 2022-04-06 21:13:50 · 1116 阅读 · 0 评论 -
beam search、top-k sampling、nucleus sampling、temperature sampling和联合采样
大家好,我是小飞,今天讲解下机器学习中常用到的一种搜索算法beam search(束搜索)。为了方便大家理解,这里先假设一个非常简单的搜索任务。假设一个搜索任务假设现在有一个简化版的中文翻译英文任务,输入和输出如下,为了方便描述搜索算法,限制输出词典只有{"I", "H", "U"} 这3个候选词,限制1个时间步长翻译1个汉字,1个汉字对应1个英文单词,这里总共3个汉字,所以只有3个时间步长。中文输入:"我" "恨" "你"英文输出:"I" "H" "U"目标:得到最优的翻译序列I-H-.转载 2022-04-01 16:00:14 · 2549 阅读 · 2 评论 -
一文读懂CRNN+CTC(Connectionist Temporal Classification)文字识别
先总结一把CTC,下面文档太长:CTC是一种Loss计算方法,用CTC代替Softmax Loss,TF和pytorch都有对CTC的实现,从而解决OCR或者语音识别中序列对齐的问题。CTC特点:引入blank字符,解决有些位置没有字符的问题 通过递推,快速计算梯度- CTC在递推最终概率的时候,使用前向后向算法,类似HMM中的前向后向算法- CTC在最终求解的时候,使用beam search-----------------------------------------文字.转载 2022-04-01 14:44:52 · 1395 阅读 · 0 评论 -
TSN(Temporal Segment Networks)和TSM(Temporal Shift Module)SlowFast对比
简单来说,TSN(Temporal Segment Networks)是2D卷积,融合了Temporal(比如光流信息)和Segment(视频抽帧)双流的信息;TSM(Temporal Shift Module)是3D卷积,作者管自己设计的3D卷积方式叫作Temporal Shift Module,可以在效果和开销中间取一定的平衡。Temporal Segment Networks论文主要思想仍然是Two-Stream 的结构,以下是算法主要流程图。所谓Two-Stream,就是两种输入。T转载 2022-03-22 15:45:34 · 3042 阅读 · 0 评论 -
光流(Optical flow)-视频分析基础概念
光流的概念(Optical Flow)光流是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。考虑下图(图片来自维基百科):图中表示一个小球在连续5帧图像中的移动,箭头则表示小球的位移矢量。简单来说,光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”,光流的研.转载 2022-03-19 12:39:42 · 7099 阅读 · 0 评论 -
跨卡同步 Batch Normalization
作者:张航Amazon AI Applied Scientist很多用户在论坛上,GitHub 上,甚至是不同的深度学习平台上,都要求提供跨卡同步(Cross-GPU Synchronized) Batch Normalization 或称为同步BN (SyncBN)。 我们团队率先提供了 MXNet 的实现。写在前面:为什么要跨卡同步 Batch Normalization现有的标准 Batch Normalization 因为使用数据并行(Data Parallel),是单卡的实现模式.转载 2022-03-18 16:43:16 · 384 阅读 · 0 评论 -
MoCo、SimCLR、BYOL、SwAV、iBot、DiNoV2、MAE、Beit、SimMIM、MaskFeat对比学习总结
MoCo V1(Momentum Contrast for Unsupervised Visual Representation Learning)MoCo的想法主要是在之前end-to-end和memory bank基础上产生的。q表示query,也就是对比的left;k表示key,也就是对比的right,k中既包含和q相似的样本(可能会标记为k+),也包含也q不相似的样本关于end-to-end方式(The end-to-end update by back-propagation is a原创 2022-03-17 16:41:51 · 3912 阅读 · 1 评论 -
用scikit-learn学习DBSCAN聚类
在DBSCAN密度聚类算法中,我们对DBSCAN聚类算法的原理做了总结,本文就对如何用scikit-learn来学习DBSCAN聚类做一个总结,重点讲述参数的意义和需要调参的参数。1. scikit-learn中的DBSCAN类 在scikit-learn中,DBSCAN算法类为sklearn.cluster.DBSCAN。要熟练的掌握用DBSCAN类来聚类,除了对DBSCAN本身的原理有较深的理解以外,还要对最近邻的思想有一定的理解。集合这两者,就可以玩转DBSCAN了。2. DBSCA转载 2022-01-18 21:10:28 · 1020 阅读 · 0 评论 -
带你入门多目标跟踪
现在从目标检测和单目标跟踪方向转来做多目标跟踪的小伙伴应该有不少,但由于多目标跟踪任务本身的复杂性,导致其入门会比目标检测与单目标跟踪困难不少。再加上论文分布在各个会议,开源代码较少,都造成了多目标跟踪的研究门槛较高。本文旨在带领大家入门多目标跟踪,了解多目标跟踪领域的发展概况,让大家更方便直观地理解这个问题。1. 简介多目标跟踪,即MOT(Multi-Object Tracking),顾名思义,就是在一段视频中同时跟踪多个目标。MOT主要应用场景是安防监控和自动驾驶等,这些场景中我们往往需要对众多转载 2022-01-03 15:45:02 · 3235 阅读 · 0 评论 -
SENet(Squeeze Excitation)、CBAM(Convolutional Block Attention Module)和CA(Coordinate Attention)
最基本的卷积操作开始说起。近些年来,卷积神经网络在很多领域上都取得了巨大的突破。而卷积核作为卷积神经网络的核心,通常被看做是在局部感受野上,将空间上(spatial)的信息和特征维度上(channel-wise)的信息进行聚合的信息聚合体。卷积神经网络由一系列卷积层、非线性层和下采样层构成,这样它们能够从全局感受野上去捕获图像的特征来进行图像的描述。然而去学到一个性能非常强劲的网络是相当困难的,其难点来自于很多方面。最近很多工作被提出来从空间维度层面来提升网络的性能,如 Inception ...转载 2022-01-02 14:38:21 · 786 阅读 · 0 评论 -
人脸识别损失函数简介与Pytorch实现:ArcFace、SphereFace、CosFace、TripletLoss
# SphereFaceclass SphereProduct(nn.Module): r"""Implement of large margin cosine distance: : Args: in_features: size of each input sample out_features: size of each output sample m: margin c...转载 2021-12-26 20:57:36 · 1466 阅读 · 0 评论 -
[多模态预训练模型] Single-stream/Two-stream architectures
我们通常从三个方面学习了解一个多模态预训练模型:模型架构、预训练任务、预训练数据集,目前层出不穷的各种模型也是针对其中某个或某几个方面做文章。根据模型架构,多模态预训练模型可以分为two-stream和one-stream两大类,前者首先利用两个独立的模型分别处理图片和文本两种单模态信息,然后通过co-attention transformer layers融合两种模态信息;后者首先将两种模态的信息融合,然后直接输入到同一个模型中处理。目前one-stream有ViLBERT[1]、LXMERT[2]、ER转载 2021-12-22 22:48:13 · 1974 阅读 · 1 评论 -
双线性池化、 MLB(Multimodal Low-rank Bilinear Pooling)、MCB(Multimodal Compact Bilinear Pooling)
本文将包括以下内容:对bilinear pooling进行详细介绍,便于读者理解原文; 建立bilinear pooling到bilinear model的联系,便于读者理解以MLB为核心的bilinear model相关文章。 快速介绍对bilinear pooling的各种改进形式。这个结构相当容易理解,就是一共用到了两次MCBP模块,第一个MCBP融合了文本和图像的特征进而用来提取图像的attention,第二个MCBP则把图像的atte...转载 2021-12-21 23:41:14 · 5534 阅读 · 0 评论 -
Optical Flow介绍与代码实现
首先我们先来介绍一下Optical Flow是个什么东西, 在浏览器的搜索框框里面我们输入"Optical flow"可以看到维基百科的解释:光流(Optical flow or optic flow)是关于视域中的物体运动检测中的概念。用来描述相对于观察者的运动所造成的观测目标、表面或边缘的运动。哦Optical flow是一个概念, 描述的是一个相对于观测者的运动,这个运动是观测造成的,就是说,我们眼睛的目光和物体保持相对静止就没有光流运动啦. 似乎是个物理上面的东西, 这个网址 "http..转载 2021-12-19 11:14:57 · 518 阅读 · 0 评论 -
label smoothing(标签平滑)学习笔记
label smoothing是一种在分类问题中,防止过拟合的方法。交叉熵损失函数在多分类任务中存在的问题多分类任务中,神经网络会输出一个当前数据对应于各个类别的置信度分数,将这些分数通过softmax进行归一化处理,最终会得到当前数据属于每个类别的概率。然后计算交叉熵损失函数:训练神经网络时,最小化预测概率和标签真实概率之间的交叉熵,从而得到最优的预测概率分布。最优的预测概率分布是:神经网络会促使自身往正确标签和错误标签差值最大的方向学习,在训练数据较少,不足以表征所有的样转载 2021-12-05 22:28:20 · 1212 阅读 · 0 评论 -
如何理解深度学习分布式训练中的large batch size与learning rate的关系?
在深度学习进行分布式训练时,常常采用同步数据并行的方式,也就是采用大的batch size进行训练,但large batch一般较于小的baseline的batch size性能更差,请问如何理解调试learning rate能使large batch达到small batch同样的收敛精度和速度?最近在进行多GPU分布式训练时,也遇到了large batch与learning rate的理解调试问题,相比baseline的batch size,多机同步并行(之前有答案是介绍同步并行的通信框架NCC.转载 2021-12-04 21:11:50 · 878 阅读 · 0 评论 -
一文了解Kafka核心概念和角色
文章目录1.概述2.Producer3.Consumer4.Consumer Group5.Broker6.Topic7.Partition8.Offset9.持久化10.Replica副本机制11.zookeeper1.概述kafka里面的消息是有topic来组织的,简单的我们可以想象为一个队列。一个topic就是一个消息队列,然后它把每个topic又分为很多个partition 这个是为了做并行的,更加方便扩展,而且提高了吞吐量 在每个pa转载 2021-11-23 15:43:50 · 1050 阅读 · 0 评论 -
RBM(受限玻尔兹曼机)和DBN(深度信念网络)和DBM(深度玻尔兹曼机)的区别
受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)是一种可用随机神经网络(stochastic neural network)来解释的概率图模型(probabilistic graphical model)。RBM是Smolensky于1986年在波尔兹曼机(Boltzmann Machine,BM)基础上提出的,所谓“随机”是指网络中的神经元是随机神经元,输出状态只有两种(未激活和激活),状态的具体取值根据概率统计法则来决定。RBM理论是Hinton在2006年提出基于RB转载 2021-11-06 16:13:04 · 1011 阅读 · 0 评论 -
万变不离其宗:用统一框架理解向量化召回
前言常读我的文章的同学会注意到,我一直强调、推崇,不要孤立地学习算法,而是要梳理算法的脉络+框架,唯有如此,才能真正融会贯通,变纸面上的算法为你的算法,而不是狗熊掰棒子,被层出不穷的新文章、新算法搞得疲于奔命。之前,我在《推荐算法的"五环之歌"》梳理了主流排序算法常见套路:特征都ID化。类别特征天然是ID型,而实数特征需要经过分桶转化。 每个ID特征经过Embedding变成一个向量,以扩展其内涵。 属于一个Field的各Feature Embedding通过Pooling压缩成一个向量,以翻译 2021-11-03 21:00:21 · 890 阅读 · 0 评论 -
负样本为王:评Facebook的向量化召回算法
有人的地方就会有江湖,就会有鄙视链存在,推荐系统中也不例外。排序、召回,尽管只是革命分工不同,但是我感觉待遇还是相差蛮大的排序 排序,特别是精排,处于整个链条的最后一环,方便直接对业务指标发力。比如优化时长,只要排序模型里,样本加个权就可以了。 排序由于候选集较小,所以有时间使用复杂模型,各种NN,各种Attention,能加的,都给它加上,逼格顿时高大上了许多。 用于排序的基础设施更加完善,特征抽取、指标监控、线上服务都相对成熟。 召回 一个系统中不可能只有一路召回,平日里相互竞争,转载 2021-11-03 20:43:42 · 305 阅读 · 0 评论 -
Focal loss、Gradient Harmonizing Mechanism、SCELoss
Focal Loss for Dense Object DetectionICCV2017 RBG和Kaiming大神的新作。论文目标我们知道object detection的算法主要可以分为两大类:two-stage detector和one-stage detector。前者是指类似Faster RCNN,RFCN这样需要region proposal的检测算法,这类算法可以达到很高的准确率,但是速度较慢。虽然可以通过减少proposal的数量或降低输入图像的分辨率等方式达到提速,但是速度并转载 2021-10-08 14:53:01 · 994 阅读 · 0 评论 -
MMoE ESSM PLE对比
---------------------MMoE--------------------通过门控网络的机制来平衡多任务,multi-gate的结构对于任务差异带来的冲突有一定的缓解作用。一、Motivation多任务模型通过学习不同任务的联系和差异,可提高每个任务的学习效率和质量。多任务学习的的框架广泛采用shared-bottom的结构,不同任务间共用底部的隐层。这种结构本质上可以减少过拟合的风险,但是效果上可能受到任务差异和数据分布带来的影响。也有一些其他结构,比如两个任务的参数不共用..转载 2021-10-04 20:35:53 · 3099 阅读 · 1 评论 -
从Thompson Sampling到增强学习, 再谈多臂老虎机问题
老虎机是赌场里最常见的一个设备,一家赌场里有那么多机器,每次摇动都可能后悔或者获得一定额度的奖励,你通过选择不同的老虎机臂最大化自己的利益。这个问题看似非常简单,让很多人都忘了他其实是一个reinforcement learning的问题。问题描述(Bernoulli Bandit)假设我们有一个K臂老虎机,每一个臂(action)的回报率(reward_i)都是固定的,但是agent并不知道这个回报率是多少,agent如何在T回合内最大化自己的回报(注意,这里的T通常是远远大于K的)。在互转载 2021-08-11 18:07:33 · 1640 阅读 · 0 评论