- 博客(30)
- 收藏
- 关注
原创 Transformer详解
1.整体结构Transformer[1]模型是Google2017年提出的一种用于机器翻译的模型,完全摒弃了传统循环神经网络的结构,采用了完全基于注意力机制的结构,取得了相当显著的效果,并且从此使得完全注意力机制这种模型设计模型从NLP领域出圈到计算机视觉领域,比如VIT就是基于Transformer的一种视觉模型,终结了CNN多年在图像领域的统治地位。[1] Vaswani, Ashish , et al. “Attention Is All You Need.” arXiv (2017).论文
2022-03-23 10:48:43 5465
原创 python处理excel表格
python 处理excel表格导入xlrd模块,pandas模块此脚本可以对excel进行处理,可以检测合并单元格,垂直水平合并都可以.此脚本还引入pandas模块,可以对矩阵化的excel进行类似数据库一样的分析处理# -*- coding: utf-8 -*-import xlrdimport jsonimport pandas as pdfrom collections i...
2018-10-11 10:32:03 900
原创 python3实现的自动化oracle数据库归档日志巡检工具
# -*- coding: utf-8 -*-'''自动化巡检脚本v2.0用法:切换目录到脚本所在目录,shell中输入:python3 脚本名 文件名 需要巡检的行数目前版本未经过优化,仍有一些瑕疵. 推荐使用python3.4以上版本.新增:进一步筛选时间相隔两分钟以内的错误信息作者:loki邮箱:549135011@qq.com如有问题欢迎指教'''def get_fi...
2018-09-12 16:17:18 2122
原创 (表征学习论文阅读)Bootstrap your own latent-a new approach to self-supervised learning
之前的对比学习总是依赖大量的负样本来训练模型,然而本文的研究发现,图像增强的选择相较于对比大量的负样本更具有鲁棒性。因此,作者认为基于对比学习的方法可以不利用负样本就能够获得较好的表征,这样也可以减少大量的复杂性。
2024-04-09 10:12:08 912
原创 (表征学习论文阅读)A Simple Framework for Contrastive Learning of Visual Representations
各种数据增强手段的组合在表征学习中起到了重要作用;在表征和对比损失之间引入非线性变换能够有效提高表征质量;对比学习相较于监督学习需要更大的batch size和更多的训练步数。基于生成模型的方法例如VQ-VAE,MAE,BERT基于判别模型的方法例如MoCo,CLIP。
2024-04-08 15:04:55 1190 1
原创 (表征学习论文阅读)FINITE SCALAR QUANTIZATION: VQ-VAE MADE SIMPLE
向量量化(Vector Quantization)或称为矢量量化最早在1984年由Gray提出,主要应用于数据压缩、检索领域,具体的阐述可以参考我写的另一篇关于VQ算法的文章。随着基于神经网络的离散表征学习模型的兴起,VQ技术也开始重新被重视。它在图像、音频等表征学习中体现出了优秀的性能,并且有希望成为多模态大语言模型的重要组件。在AI领域,最为知名应该是VQ-VAE(Vector Quantized-Variational Autoencoder)了,它的思想是将图像xxx映射为表征zk×d。
2024-04-03 14:33:56 2119 2
原创 对比学习前置知识--NCE和InfoNCE
它旨在拉近正样本(相似样本)之间的距离,同时推开负样本(不相似样本)之间的距离,以此来学习数据的有效表示。InfoNCE通过最大化正样本对之间的互信息,同时使得锚点样本与负样本对之间的信息量最小化,从而学习有效的数据表示。它通过对比来自数据分布的样本和来自已知噪声分布的样本,使得模型能够学习区分这两种样本。NCE通常用于语言模型和其他概率模型的训练中,特别是在处理大规模词汇表时,如自然语言处理中的词嵌入学习。代表的是模型输出的概率,它是一个二分类的概率,即模型判别当前正样本。代表噪声样本的数量。
2024-04-03 08:49:53 4430 2
原创 向量量化(vector quantization)
首先需要搞清楚向量量化和向量降维的区别,在AI领域中,向量往往是以高维的形式存在的,每一维的元素都包含了数据的特征。例如一张图片在经过VGG16网络的计算后,输出的会是一个4096维的向量,而向量降维所研究的侧重点是如何将高维的向量转换为相对低维的向量,以提高计算效率,如下图所示。在此过程中,降维算法会去除高维向量中冗余的特征元素或者噪声,常见的算法有主成分分析(PCA)、线性判别分析(LDA)等。
2024-03-22 15:05:25 2486 1
原创 卷积神经网络的梯度求解
在一些对神经网络可解释性的研究中,总是会利用到损失函数对最后一层特征图进行求梯度的操作,例如著名的Grad CAM,因此对于卷积神经网络的理解不能仅仅停留在调包的阶段,我们需要拆解开它求梯度的黑盒。以下是以上计算过程的代码,可以发现计算结果和推导是一致的。的每个元素对最终输出的贡献大小,就需要计算出。最后将结果整合之后,再将形状变换与。操作之后,得到一个新的特征图。如图所示,假设有一个特征图。得到一个长度为2的输出向量。因此根据链式求导法则,中每个元素的偏导,即。我们整理一下从特征图。
2022-11-15 14:32:17 1558 1
原创 论文阅读笔记:RepVgg
最后我们将原输入等价为3x3卷积也很简单,构建一个形状为[out_channels, in_channels, 3, 3]的全零卷积核即可,每个out_channel中的其中一个in_channel的中心点设置为1即可,这其实可以看成一个特殊的1x1卷积。要设置为1,因此我们仅仅需要将1x1卷积的卷积核用0填充为3x3卷积核即可,这样的操作和直接用1x1卷积的结果是等价的。矩阵的乘法有分配律,假设3x3的卷积核为A,1x1为B,原输入为C,输入的特征图为X,那么存在。我们令卷积后的输出为。
2022-10-22 13:23:30 348 1
原创 梯度累积算法
设置为32,传统的算法每次扫过32个样本后即更新一次参数,假设我们的显存最大只支持。一样的训练效果,可以采用梯度累积的方式来进行训练。传统的训练方式都是训练一个。的样本就执行一次梯度下降算法更新参数,梯度累积则是设置一个累积步数。是8,那么我们设置累积步数为4,达到的效果和传统的算法是一样的。越大模型训练越稳定,但是往往受制于显存大小而不能设置较大的。在训练神经网络的时候,
2022-10-10 15:04:08 941
原创 BCEloss和CrossEntropyLoss的区别
主要用于计算标签只有1或者0时的二分类损失,标签和预测值是一一对应的。用于计算多分类任务,一个标签可能对应了预测的多个概率,例如一个任务包含了。来计算损失前,需要对预测值进行一次。函数会将预测值映射到0-1之间。个类别,那么预测值就有。
2022-10-08 16:10:15 2835 1
原创 论文阅读笔记:Faster RCNN
Faster RCNN是一种快速的目标检测模型,在RCNN基础上提出了RPN(Region Proposal Network)来取代SS(Selective Search)算法来生成候选锚框,从而大大加快了目标检测的速度。而在学习Faster RCNN之前必须要搞明白RCNN和Fast RCNN的相关概念和网络框架。如图所示,RCNN的实现步骤分为四步:从RCNN的框架中,我们可以很容易地发现在步骤2,3中需要对2000个锚框进行特征提取,这是非常低效的,因此,Fast RCNN直接对原始图像进行特征提取
2022-06-20 10:22:50 1140
原创 论文阅读笔记:SPPNet
现有的卷积神经网络总是需要一个特定尺寸的图片作为输入,例如常用的224×224224 \times 224224×224。假设存在一些不满足这种尺寸的原始图片,那么需要对图片进行一些预处理,例如裁剪拉伸。这一系列的人工处理会影响神经网络的预测精度,因此为了解决这一问题,能够使得神经网络模型可以接受任意输入尺寸的图片,本文提出了Spatial pyramid pooling为什么CNN模型需要特定尺寸的输入呢,这来源于模型最后的线性分类器,分类器需要对经过CNN处理的feature map做flatten操作
2022-06-15 14:58:40 226
原创 神经网络中的常见标准化(Normalization)
具体做法如上图所示,计算除了通道维的均值和方差从而进行标准化,即batch中每个样本对应位置的特征做标准化(以均值为例,每个样本第n个通道的特征图计算均值,得到一个均值特征图,再对高和宽再算均值最终得到n个1x1的均值特征图)。其中γ\gammaγ和β\betaβ是可学习的超参数。BN的提出是为了加快神经网络的训练并且解决Internal Covariate Shift的问题。使用了BN之后我们可以采用较大的学习率。此外,BN也可以提供正则化的作用,从而减少Dropout的使用。pytorch简洁代码实现:
2022-06-10 16:05:17 1849
原创 论文阅读笔记:Swin-Transformer
本文是一篇奠定了Transformer在图像领域地位的论文,它不同于ViT(Vision Transformer),提出了一种层次化的结构,因为ViT一开始就固定了patch的划分,因此感受野不会变化,而Swin Transformer采用了传统CNN下采样的设计,在不同的阶段采用不同的感受野尺度,最终得到了比ViT更好的性能表现。论文代码提供了一种用卷积来进行初始划分patch的方法,就是用kernerl_size,stride与patch_size的卷积核做卷积操作。1.2 DropPath论文
2022-06-05 15:55:59 793
原创 目标检测(pytorch官方教程)
1. 定义数据集https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html数据集和相关的代码都在官网都可以下载到,一切准备工作完成之后,第一步就是构建数据集:import osimport numpy as npimport torchfrom PIL import Imagefrom torch.utils.data import Dataset, DataLoaderfrom torchvision.io
2022-05-31 15:41:29 1459 1
原创 论文阅读笔记:Vision Transformer (ViT)
1. Vision TransformerDosovitskiy, Alexey, et al. “An image is worth 16x16 words: Transformers for image recognition at scale.” arXiv preprint arXiv:2010.11929 (2020).这是一篇奠定了Transformer在视觉领域击败传统卷积的文章,Transformer在NLP领域大放异彩之后,在视觉领域也取得了优异的效果,作者摒弃了所有的卷积操作,将
2022-05-27 14:40:30 335
原创 论文阅读笔记: MobileNet
1. MobileNet V1Howard, Andrew G., et al. “Mobilenets: Efficient convolutional neural networks for mobile vision applications.” arXiv preprint arXiv:1704.04861 (2017).本文主要提出了一种深度可分离卷积(depthwise separable convolutions)用于替换传统卷积。将传统的卷积分解为了两步:用分组卷积来提取输入每个通道
2022-05-24 19:58:12 352
原创 论文阅读笔记:GhostNet
1. GhostNetHan, Kai, et al. “Ghostnet: More features from cheap operations.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.本文的题目起得很fancy,有一种神秘的色彩,其实读完文章之后,就会觉得ghost这个比喻非常的有趣也很贴切。阅读本文的前提必须对SENet以及深度可分离卷积这些工作有一定的
2022-05-23 16:23:23 1457
原创 论文阅读笔记:ResNext
1. ResNextXie, Saining, et al. “Aggregated residual transformations for deep neural networks.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.多分支结构是Inception中提出的,然而在Inception中每个分支的结构都不太一样,因此这为网络结构的设计带来了很多麻烦。作为类Incep
2022-05-22 16:25:58 391
原创 论文阅读笔记:SqueezeNet
1. SqueezeNetIandola, Forrest N., et al. “SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size.” arXiv preprint arXiv:1602.07360 (2016).本文提出了一种轻量化的图像分类网络:SqueezeNet,正如文章的标题所写,参数量比AlexNet少50倍。可以被部署于嵌入式设备,在分布式训练时减少通信开销。
2022-05-19 15:47:09 300
原创 深度学习最新工作CookNet
1. 背景介绍随着深度学习研究的深入,神经网络已经可以完成各种任务,例如图像分类,实例分割,自然语言处理。然而目前神经网络的设计需要大量的代码工作和文献阅读,因此本文认为提高神经网络的效果需要同时关注开发和研究人员的营养水平,因此提出了CookNet。2. 研究成果首先我们需要准备若干琵琶腿,青椒,洋葱和土豆。需要用的配料有黄豆酱,耗油,生抽,老抽,蒜蓉酱。第一步洗净琵琶腿,第二步将琵琶腿切成块,加入料酒腌制十五分钟,第三步起锅烧油炒糖色,注意用小火,糖化开变成焦糖色下入鸡块,第四步炒制
2022-04-29 20:22:17 983
原创 锚框和边缘框
这篇主要是参考了李沐大佬的教程,锚框和边缘框是目标检测中最重要的工具,用于框住图片中的物体。1. 边缘框边缘框是图片中物体的真实位置和范围,有两种表示方式,一种是边角坐标表示法,通过物体左上和右下两个角的坐标表示一个矩形框,还有一种是中心表示法,用物体的中心和宽高表示矩形框。代码如下:import torchfrom d2l import torch as d2limport matplotlib.pyplot as pltimport matplotlib.image as mpimgimg
2022-04-22 16:32:21 5750
原创 论文阅读笔记:ShuffleNet
背景由于深度学习模型结构越来越复杂,参数量也越来越大,需要大量的算力去做模型的训练和推理。然而随着移动设备的普及,将深度学习模型部署于计算资源有限基于ARM的移动设备成为了研究的热点。ShuffleNet[1]是一种专门为计算资源有限的设备设计的神经网络结构,主要采用了pointwise group convolution 和 channel shuffle两种技术,在保留了模型精度的同时极大减少了计算开销。[1]Zhang X, Zhou X, Lin M, et al. Shufflenet:
2022-04-10 14:53:49 17296
原创 傅里叶级数到傅里叶变换
1. 欧拉公式欧拉公式是把复指函数和三角函数联系起来的函数,建立了三角函数和指数函数的关联:eix=cosx+isinxe^{ix} = cosx + isinxeix=cosx+isinx它是根据泰勒公式观察而来,证明如下:sinx=∑k=0∞(−1)k⋅x2k+1(2k+1)!=x−x33!+x55!−x77!…sinx=\sum_{k=0}^{\infty}(-1)^k \cdot \frac{x^{2k+1}}{(2k+1)!}=x - \frac{x^3}{3!}+\frac{x^5}{5
2022-04-04 15:59:53 2068
原创 Attention机制--concat方式
本文主要参考github:https://github.com/bentrevett/pytorch-seq2seq/blob/master/3%20-%20Neural%20Machine%20Translation%20by%20Jointly%20Learning%20to%20Align%20and%20Translate.ipynb
2021-06-22 10:20:17 2339 1
原创 基于pytorch的Seq2Seq的实现
结构这是一种经典的Seq2Seq结构,由两部分组成,Encoder 和 Decoder(编码器和解码器), 这两个部分的构造几乎一模一样,都是由循环神经网络组成,层数,隐藏层维度都是一样的。它的原理是一个序列输入到编码器之后,编码器输出最后的隐藏状态(h)到解码器, h包含了序列的前后信息,然后通过解码器对h处理,逐步生成相应的预测序列。Encoder以下是Encoder的一段基本代码,由最基本的RNN组成:需要弄清楚它矩阵的变换。class EncoderRNN(nn.Modul..
2021-06-20 16:36:12 1939 2
原创 pytorch里的argmax和argmin的理解
pandas是一种科学计算模块,可以对数据进行分析处理.在某些方面还可以和数据库媲美.非常强大.本笔记主要参考官方文档它主要有两种数据结构series和dataframe先引入三个库,这三个是数据分析最常用的:import pandas as pdimport numpy as npimport matplotlib.pyplot as plt#创建Seriess = pd.Se...
2018-10-11 11:05:26 595
原创 python3 与操作系统交互的模块简介
重点内容: 首先需要注意的是导入os模块时,避免使用from os import *,因为python内建的方法里有open(),会和os.open()重复. 强调内容: 本文使用的是ubuntu18.04版本,编辑器是sublime text3.尽量选择linux去进行开发. 1.查看当前目录 使用os.getcwd() 2.shutil模块 import shutil ...
2018-08-30 19:03:28 736
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人