Embedding的理解

Embedding的理解

​ 我Embedding作用总是忘…因此在此记录辅助理解。

​ 原文地址:怎么形象理解embedding这个概念?


什么是Embedding?

​ Embedding(嵌入)是拓扑学里面的词,在深度学习领域经常和Manifold(流形)搭配使用。

​ 可以用几个例子来说明,比如三维空间的球体是一个二维流形嵌入在三维空间(2D manifold embedded in 3D space)。之所以说他是一个二维流形,是因为球上的任意一个点只需要用一个二维的经纬度来表达就可以了。

​ 又比如一个二维空间的旋转矩阵是2x2的矩阵,其实只需要一个角度就能表达了,这就是一个一维流形嵌入在2x2的矩阵空间。


什么是深度学习里的Embedding?

​ 这个概念在深度学习领域最原初的切入点是所谓的Manifold Hypothesis(流形假设)。流形假设是指“自然的原始数据是低维的流形嵌入于(embedded in)原始数据所在的高维空间”。那么,深度学习的任务就是把高维原始数据(图像,句子)映射到低维流形,使得高维的原始数据被映射到低维流形之后变得可分,而这个映射就叫嵌入(Embedding)。比如Word Embedding,就是把单词组成的句子映射到一个表征向量。但后来不知咋回事,开始把低维流形的表征向量叫做Embedding,其实是一种误用。。。

​ 如果按照现在深度学习界通用的理解(其实是偏离了原意的),Embedding就是从原始数据提取出来的Feature,也就是那个通过神经网络映射之后的低维向量。

### Patch Embedding 概念及应用详解 #### 定义与作用 Patch Embedding 是视觉变换器 (Vision Transformer, ViT) 中的关键组件之一。其主要功能是从输入图像中提取固定大小的小区域(称为 patches),并将这些patches转换成一维向量表示形式以便后续处理[^1]。 #### 参数配置 对于给定的图片尺寸,默认情况下 `img_size` 设置为 224 × 224 像素;而每个 patch 的边长则由 `patch_size` 控制,一般取值为 16 或者 32。此外,在标准 RGB 图像里,`in_chans` 表示输入的颜色通道数,即红绿蓝三原色对应的三个通道。最后,通过线性映射层将每一片子图投影到指定维度的空间内,这个目标维度就是所谓的嵌入维度 (`embed_dim`),比如常见的设置是将其设为 768 维度。 #### 计算过程 当定义好上述参数之后,可以创建一个名为 `self.patch_embed` 的对象来执行具体的 embedding 操作。具体来说,假设我们有一个分辨率为 H×W 的彩色图像作为输入,则会按照预设好的 `patch_size` 将整张大图分割成为若干个小方块——也就是所谓的 "patches"[^2]。接着利用卷积操作或者其他方式把这些二维矩阵展平并投射至更高纬度空间形成最终的一系列特征向量序列[^3]。 ```python import torch.nn as nn class PatchEmbed(nn.Module): """ Image to Patch Embedding """ def __init__(self, img_size=224, patch_size=16, in_chans=3, embed_dim=768): super().__init__() num_patches = (img_size // patch_size)**2 self.img_size = img_size self.patch_size = patch_size self.num_patches = num_patches self.proj = nn.Conv2d(in_chans, embed_dim, kernel_size=patch_size, stride=patch_size) def forward(self, x): B, C, H, W = x.shape assert H == self.img_size and W == self.img_size, \ f"Input image size ({H}*{W}) doesn't match model ({self.img_size}*{self.img_size})." # Flatten: [B,C,H,W]->[B,num_patches,embed_dim] x = self.proj(x).flatten(2).transpose(1, 2) return x ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值