Pytorch Pytork中nn.线性层在附加尺寸上的应用
pytorch中的完全连接层(Pytorch Pytork中nn.线性层在附加尺寸上的应用,pytorch,tensor,Pytorch,Tensor,pytorch中的完全连接层(nn.Linear)是如何应用于“附加尺寸”的?这说明,它可以应用于将张量(N,*,in_特征)连接到(N,*,out_特征),其中N在一批示例的数量中,因此它是不相关的,*是那些“附加”维度。这是否意味着使用附加维度中的所有可能切片对单个层进行训练,或者是为每个切片或其他不同的对象训练的单独层?在线性中学习了输入特征*输出特征参数。在线性中学习了权重和输出特征参数线性偏差。你可以把nn.Linear想象成 将张量重塑为一些(N',in_特征),其中N'是N和*描述
nn.Linear
)是如何应用于“附加尺寸”的?这说明,它可以应用于将张量(N,*,in_特征)
连接到(N,*,out_特征)
,其中N
在一批示例的数量中,因此它是不相关的,*
是那些“附加”维度。这是否意味着使用附加维度中的所有可能切片对单个层进行训练,或者是为每个切片或其他不同的对象训练的单独层?在线性中学习了输入特征*输出特征
参数。在线性中学习了权重
和输出特征
参数线性偏差
。你可以把nn.Linear
想象成
将张量重塑为一些(N',in_特征)
,其中N'
是N
和*
描述的所有维度的乘积:input\u 2d=input。重塑(-1,in_特征)
应用标准矩阵乘法output\u 2d=linear.weight@input\u 2d
添加偏差output\u 2d+=linear.bias.reformate(1,in\u功能)
(注意我们在所有N'
维度上广播了它)
重塑输出,使其尺寸与输入
相同,除了最后一个尺寸外:输出=输出_2d。重塑(*input.shape[:-1],out_特征)
返回输出
因此,前导维度N
被视为与*
维度相同。文档将N
明确化,让您知道输入必须至少是2d,但可以是您希望的任意多个维度。为了验证我的理解,这实际上意味着单个层(=一组输入特征*输出特征
权重和输出特征
偏差)所有切片都经过额外维度的训练(因此我们得到的是N'
训练示例,而不是原始的N
)。这是你回答的正确措辞吗?是的。我没有用这种方式表达它,因为我不确定我是否理解您想要分割它的方式,但是是的,这里有N'
示例。