代码之家  ›  专栏  ›  技术社区  ›  Mischa Lisovyi

Pytork中nn.线性层在附加尺寸上的应用

  •  1
  • Mischa Lisovyi  · 技术社区  · 7 年前

    全连接层是如何连接的( nn.Linear documentation 也就是说,它可以用来连接张量 (N,*,in_features) 到 (N,*,out_features) N 在一个批次中的示例数量中,因此它是无关的,并且 * 这些是“附加”维度。这是否意味着使用附加维度中的所有可能切片对单个层进行训练,还是为每个切片或其他不同的对象训练单独的层?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Jatentaki    7 年前

    有 in_features * out_features linear.weight 和 out_features 在中学习的参数 linear.bias . 你可以想到 nn.Linear 担任

    1. 将张量重塑为某个值 (N', in_features) 哪里 N' N 以及使用 * input_2d = input.reshape(-1, in_features)
    2. 应用标准矩阵乘法 output_2d = linear.weight @ input_2d
    3. 加上偏见 output_2d += linear.bias.reshape(1, in_features) (请注意,我们在所有媒体上进行了广播 尺寸)
    4. input ,除了最后一个: output = output_2d.reshape(*input.shape[:-1], out_features)
    5. return output

    因此,主导维度 被视为与 * N 显式,让您知道输入必须是