1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

Patch Embedding 的本质是一个分块 + 展开 + 线性变换的过程,可以理解为对图像做一次“卷积核为 patch,步长为 patch_size 的卷积 + reshape”,再加上一个 cls token。这里我们只需要计算输出向量序列的维度,而不是具体做矩阵运算。

设输入参数为:

  • 图像尺寸:img_size(高 = 宽)
  • patch 大小:patch_size
  • 通道数:channel

P4481.第2题-Vision Transformer中的Patch Embdding层实现

    1000ms Tried: 682 Accepted: 378 Difficulty: 3 所属公司 : 华为
    算法与标签>机器学习算法

题目内容

VisionVisionVision Transformer(ViT)Transformer(ViT)Transformer(ViT) 是视觉领域应用非常广泛的基础网络结构,经典的 ViTViTViT 结构如图所示,

其包含了 PatchPatchPatch&PositionPositionPosition embedding、Transformerembedding、Transformerembedding、Transformer EncoderEncoderEncoder 等多个关键模块组成。这几个模块中,将图像分割为固定大小的 patchpatchpatch 并进行线性嵌入是一个关键步骤,也即 PatchPatchPatch EmbeddingEmbeddingEmbedding 层,其主要实现步骤为:

StepStepStep 111:将输入图像分割为多个非重叠的 patchpatchpatch ,也即将图片切分为 N∗NN*NN∗N 个 patchpatchpatch ,如 3∗33*33∗3 个 2D2D2D 图像块;

StepStepStep 222:将每个 patchpatchpatch 展平为向量,也即将每个切分后的 2D2D2D PatchPatchPatch 展平为 1D1D1D 向量;

StepStepStep 333:对展平的 patchpatchpatch 进行线性变换(嵌入),也即对每个展平后的 1D1D1D 向量做一个线性变换,使用一个可学习的权重矩阵 EEE 和 偏置向量 BBB 进行线性变换,公式为:Z=X∗E+bZ=X*E+bZ=X∗E+b

StepStepStep 444:添加可学习的位置编码;

请根据以上提示步骤,实现 PatchPatchPatch EmbeddingEmbeddingEmbedding 层。

特别注意:本实现过程中,无法使用深度学习框架,如 pytorch、tensorflowpytorch、tensorflowpytorch、tensorflow 等

输入描述

输入参数包括:imp_size、patch_size、channel、embedding_dimimp\_size、patch\_size、channel、embedding\_dimimp_size、patch_size、channel、embedding_dim,分别表示:

图像尺寸(图像长、宽默认相等)img_sizeimg\_sizeimg_size ;

patchpatchpatch 大小 patch_sizepatch\_sizepatch_size ;

图像通道数 channelschannelschannels ;

嵌入维度 embedding_dimembedding\_dimembedding_dim

输出描述

输出 patch_embeddingpatch\_embeddingpatch_embedding 后的维度信息 embedding_shapeembedding\_shapeembedding_shape,其中需要包含 clsclscls tokentokentoken,具体可见样例。

样例1

输入

448 32 3 384

输出

197 384

说明

输入:448448448 323232 333 384384384

分别表示:

图像尺寸(图像长、宽默认相等)img_size=448img\_size=448img_size=448 ;

patchpatchpatch 大小 patch_size=32patch\_size=32patch_size=32 ;

图像通道数 channels=3channels=3channels=3 ;

嵌入维度 embedding_dim=384embedding\_dim=384embedding_dim=384

输出:197197197 384384384

分别表示:

经过 patch_embeddingpatch\_embeddingpatch_embedding 层后得到的 embedding_shapeembedding\_shapeembedding_shape ,其中第一维 197197197 表示 patchpatchpatch token+clstoken+clstoken+cls tokentokentoken ,第二维表示 patch_embeddingpatch\_embeddingpatch_embedding 后的 enbeddingenbeddingenbedding 维度

样例2

输入

224 16 3 768

输出

197 768

说明

输入:224224224 161616 333 768768768

分别表示:

图像尺寸(图像长、宽默认相等)img_size=224img\_size=224img_size=224 ;

patchpatchpatch 大小 patch_size=16patch\_size=16patch_size=16 ;

图像通道数 channels=3channels=3channels=3 ;

嵌入维度 embedding_dim=768embedding\_dim=768embedding_dim=768

输出:197197197 768768768

分别表示:

经过 patch_embeddingpatch\_embeddingpatch_embedding 层后得到的 embedding_shapeembedding\_shapeembedding_shape ,其中第一维 197197197 表示 patchpatchpatch token+clstoken+clstoken+cls tokentokentoken ,第二维表示 patch_embeddingpatch\_embeddingpatch_embedding 后的 enbeddingenbeddingenbedding 维度

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 0, 90ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?