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

.flattened-pom.xml是一个文件,它在项目打包过程中由IDEA自动生成。它的作用是提供一个扁平化的pom.xml文件,供项目打包时读取依赖信息。 这个文件通常位于项目目录下,可以通过修改或删除它来解决一些问题。例如,当项目升级后,.flattened-pom.xml文件中的版本号可能会过时或错误,这时可以手动修改该文件中的版本号,以保持正确的依赖关系。或者,如果不需要该文件,也可以直接删除它。 如果你想查看一个具体的.flattened-pom.xml文件示例,你可以参考以下链接:<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [idea 打包引入版本不对问题](https://blog.csdn.net/hcc_new_one_object/article/details/130984295)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析](https://blog.csdn.net/weixin_42201180/article/details/127204351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

computer_vision_chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值