欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Patch embed 的映射矩阵多大?

最编程 2024-07-08 07:17:11
...

假设我们有一个图像,其大小为 (H \times W \times C),其中 (H) 是图像的高度,(W) 是图像的宽度,(C) 是图像的通道数(例如,RGB 图像的通道数为 3)。

  1. 将图像划分成 patches:

    • 假设我们将图像划分成大小为 (P \times P) 的 patches。
    • 这样我们就会得到 (\frac{H}{P} \times \frac{W}{P}) 个 patches。
  2. 将每个 patch 展开成一个向量:

    • 每个 patch 的大小为 (P \times P \times C),展开成一个长度为 (P^2 \cdot C) 的向量。
  3. 应用线性嵌入(Linear Embedding):

    • 使用一个线性变换将每个长度为 (P^2 \cdot C) 的向量映射到一个固定的维度,这个维度通常被称为 embedding dimension,记为 (D)。
    • 这个线性变换通常用一个权重矩阵来表示,形状为 (D \times (P^2 \cdot C))。

所以,总结一下,patch embedding layer 的大小和形状如下:

  • 输入大小:每个 patch 的大小为 (P^2 \cdot C)。
  • 输出大小:embedding dimension (D)。
  • 权重矩阵的形状:(D \times (P^2 \cdot C))。

如果具体举个例子,假设一个图像的大小为 (224 \times 224 \times 3),每个 patch 的大小为 (16 \times 16),embedding dimension (D) 为 768。

  1. 图像被划分成 (\frac{224}{16} \times \frac{224}{16} = 14 \times 14) 个 patches。
  2. 每个 patch 的大小为 (16 \times 16 \times 3 = 768)。
  3. patch embedding layer 的权重矩阵大小为 (768 \times 768)。

推荐阅读