• VIT理论代码详解


    将图像输入到transformer的思想

    在这里插入图片描述
    把每个像素点按照顺序拿出来,作为token,这样做的话输入参数规模是:假如是1通道的灰度图: 224x224x1=50176,bert才512,是bert的100倍。

    改进方法:
    在这里插入图片描述

    VIT模型架构图

    在这里插入图片描述
    在这里插入图片描述

    步骤二:linear Projection of Flattened Patches

    把图片切分成一个一个的Patch,这些patch不能直接作为transformer的输入,要把patch转为固定维度的embedding。

    比如一个patch是16x16,直接展平=256
    假如transformer要求的输入是768。那么就需要Linear Projection of Flattened Patchs将256维映射成768维。

    步骤三:位置embedding 和 tokens embedding相加

    1.生成一个cls的token Embedding

    在这里插入图片描述

    2.生成所有序列的位置编码

    在这里插入图片描述
    位置编码是紫色。patch对应的embedding是粉色。

    3.token + 位置编码

    由于内容是一起输入到transformer中的,没有先后和位置之分,所以需要位置编码。如果没有位置编码,模型不知道谁在前谁在后。

    4.Transformer Encoder

    5.MLP_head

    MLP Head 是指位于模型顶部的多层感知机(Multi-Layer Perceptron)网络,通常用于对来自 Transformer 编码器的特征进行降维和映射,以便进行最终的分类或回归任务。

    在这里插入图片描述

    MLP Head 的作用有以下几个方面:

    特征映射和降维:由于 Transformer 编码器输出的特征通常是高维的,MLP Head 通过多层感知机来映射这些特征到更低维的表示。这有助于减少模型的参数数量和计算复杂度,同时保留重要的特征信息。

    非线性建模:MLP Head 中的激活函数引入了非线性性质,使模型能够学习更复杂的特征表示和决策边界,从而提高模型的表现能力。

    任务适应性:MLP Head 可以根据具体的任务需求来设计。例如,对于分类任务,最后一层通常包括一个 softmax 激活函数来生成类别概率分布;对于回归任务,最后一层可以是一个线性层来输出连续值。

    patch + Position Embedding

    补充

    token的中文意思?解释transformer的token

    “Token” 这个词在中文中的意思是 “标记” 或者 “令牌”。在计算机科学和自然语言处理领域,“token” 通常指的是文本中的最小单元,可以是一个单词、一个字符或者其他一些文本片段,根据特定的上下文和任务而定。在 Transformer 模型中,“token” 是指输入文本被拆分成的最小单位,通常是一个单词或一个子词(subword)。

    nn.LayerNorm()和nn.BatchNorm()的区别?

    1.具体实现的差别:
    Batch Normalization 是在每个批次(mini-batch)的数据上进行归一化。
    Layer Normalization 是在每个输入特征的维度上进行归一化。
    如下图:
    在这里插入图片描述
    BN、LN可以看作横向和纵向的区别。

    2.适用情况的差别
    BatchNorm适用于CV领域。
    LayerNorm适用于NLP领域。

    归一化的好处

    经过归一化再输入激活函数,得到的值大部分会落入非线性函数的线性区,导数远离导数饱和区,避免了梯度消失,这样来加速训练收敛过程。

    BatchNorm这类归一化技术,目的就是让每一层的分布稳定下来,让后面的层可以在前面层的基础上安心学习知识。

    BatchNorm就是通过对batch size这个维度归一化来让分布稳定下来。LayerNorm则是通过对Hidden size这个维度归一。

    优点:
    这意味着 Layer Normalization 不依赖于批次的大小,因此在训练和推理时都更加稳定。

    参考链接:

    https://blog.csdn.net/weixin_42392454/article/details/122667271

  • 相关阅读:
    【C++】面向对象模型 ① ( 面向对象设计 | 面向对象底层实现机制 | 程序内存结构 )
    【无标题】
    记一次使用NetworkManager管理Ubuntu网络无效问题分析
    7月VR大数据:Quest 2占比突破50%,Pico Neo 3较上月大幅涨幅
    Android基础开发-选择图片,发送彩信
    【Android】2、Android开发进阶超详细介绍
    向量化操作简介和Pandas、Numpy示例
    git reset hard,mixed,soft
    阿里一面的那些Redis高频例题
    深入理解Java IO流(第二篇)
  • 原文地址:https://blog.csdn.net/qq_42864343/article/details/132728196