为什么有时Linear层的out_features比in_features高?

问题描述 投票:0回答:1

我知道线性中的 out_features 通常低于 in_features 以获得更有意义的特征,但有时我看到 out_features 高于 in_features,有时它是相等的。 例如,像下面 pytorch 中 swin Transformer v2 中的架构:

Sequential(
      (0): SwinTransformerBlockV2(
        (norm1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)
        (attn): ShiftedWindowAttentionV2(
          (qkv): Linear(in_features=768, out_features=2304, bias=True) #Higher
          (proj): Linear(in_features=768, out_features=768, bias=True) #Equal
          (cpb_mlp): Sequential(
            (0): Linear(in_features=2, out_features=512, bias=True)
            (1): ReLU(inplace=True)
            (2): Linear(in_features=512, out_features=24, bias=False) # Lower
          )

我想问:

  1. 网络中具有更高、相等、更低的 out_features 的目的是什么?
  2. 你能给我提供一些关于这个问题的论文以及具有这个问题的网络架构吗?

我刚刚开始学习深度学习和人工智能,如果你能提供一些关于构建网络的课程,那将会有很大的帮助。

非常感谢。

deep-learning pytorch neural-network
1个回答
0
投票

你的问题有两种含义,变压器块和线性块。可以用两个分支来解释:

  1. 网络中具有更高、相等、更低的 out_features 的目的是什么?
  • 在图像转换器中,qkv(query, key value) 旨在获取输入块的相关性。
    out_features=2304
    in_features=768
    的 3 倍。它们被分为 qkv 的 3 个元素,可以在工具上的
    foward()
    功能上找到。希望能探索从
    __init__()
    forward()
    的参考脚本,彻底理解transformer paper
  • 在线性块中,使用参数
    in_features
    out_features
    构建块是启发式的。线性块中的特征数量是您假设的函数的维数。我们对可以用低维表示的输入特征进行编码(网络的瓶颈),然后将其解码为我们想要解决的问题。
  1. 你能给我一些关于这个问题的论文以及具有这个问题的网络架构吗?
  • 我希望在学习深度学习之前先阅读线性回归的文章,遵循线性代数的基础理论:“线性代数”->线性回归、分类->多层感知器(与Pytorch中的
    Linear
    相同)->卷积块-> 变压器 -> 图像变压器。 ”
© www.soinside.com 2019 - 2024. All rights reserved.