我正在尝试实现专家层的混合,类似于以下所述: https://arxiv.org/abs/1701.06538
基本上,此层具有多个子层F_i(x_i),这些子层处理输入的投影版本。还有一个选通层G_i(x_i),基本上是所有子专家层上的注意力机制:
sum(G_i(x_i)* F_i(x_i)。
我朴素的方法是为子层建立一个列表:
sublayer_list = nn.ModuleList() 对于我在范围(num_of_layer)中: sublayer_list.append(self.make_layer())
然后在应用此方法时,我使用另一个for循环
out_list = [] 对于i,l枚举(sublayer_list): out_list.appned(l(input [i]))
但是,添加此专家混合物层会使训练速度降低近7倍(与将MoE层交换为类似大小的MLP相比)。我想知道是否有更有效的方法在pytorch中实现此功能?非常感谢!