【问题标题】:PyTorch transformer argument "dim_feedforward"PyTorch 变压器参数“dim_feedforward”
【发布时间】:2022-03-19 10:42:55
【问题描述】:
我想了解这个论点到底是怎么回事。
-
我读过变压器层内的前馈子层是“逐点”前馈层。在这种情况下,“pointwise”是什么意思?
-
前馈层采用 2 个参数:输入特征和输出特征。
这个参数不能是输出特征,因为无论我使用什么值,转换器层的输出总是具有相同的形状。它也不能是输入特征,因为它是由自注意力子层确定的。
-
最重要的是——注意力的张量大小的论据在哪里?将输入转换为查询、键和值的那些?
【问题讨论】:
标签:
deep-learning
pytorch
【解决方案1】:
- “Position-wise”或“Point-wise”是指前馈网络 (FFN) 采用序列的每个位置,例如,句子的每个单词,作为其输入。所以point-wise FFN是一个共享的FFN,每个单词一个一个地输入。
- (和 3.)没错。它既不是输入特征(由自注意力子层确定)也不是输出特征(与输入特征相同的值)。 实际上是隐藏特征。问题是,transformer encoder 中的这个特殊的 FFN 有两个线性层,根据implementation of TransformerEncoderLayer:
# Implementation of Feedforward model
self.linear1 = Linear(d_model, dim_feedforward, **factory_kwargs)
self.dropout = Dropout(dropout)
self.linear2 = Linear(dim_feedforward, d_model, **factory_kwargs)
所以dim_feedforward 是功能编号。 FFN的隐藏层。通常,其值设置为比d_model(默认为2048)大几倍。