我知道线性中的 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
)
我想问:
我刚刚开始学习深度学习和人工智能,如果你能提供一些关于构建网络的课程,那将会有很大的帮助。
非常感谢。
你的问题有两种含义,变压器块和线性块。可以用两个分支来解释:
out_features=2304
是 in_features=768
的 3 倍。它们被分为 qkv 的 3 个元素,可以在工具上的 foward()
功能上找到。希望能探索从__init__()
到forward()
的参考脚本,彻底理解transformer paper。in_features
和 out_features
构建块是启发式的。线性块中的特征数量是您假设的函数的维数。我们对可以用低维表示的输入特征进行编码(网络的瓶颈),然后将其解码为我们想要解决的问题。Linear
相同)->卷积块-> 变压器 -> 图像变压器。 ”