我只知道如何在 PyTorch 中使用像 LSTM 的 RNN 这样的内置网络。但是它们倾向于处理前一层中的每个节点,这些节点将向下一层中的所有节点提供信息。
我想做一些不同的事情,但不知道如何自己编码。如下图所示:节点a映射到第 2 层中的所有 [d, e, f] 三个节点,而节点b映射到 [e,f],节点c仅映射到 [f]。因此,节点d将仅包含来自 a 的信息,而e将包含来自 [a,b] 的信息。f将包含来自前一层中所有节点的信息。 有谁知道如何编写此结构?请给我一些见解,我将不胜感激:D
结构
当您的图层看起来像"完全连接"图层但具有自定义连通性时,请使用具有正确结构的蒙版。
假设x = [a, b, c]
是 3 暗输入,W
表示连接矩阵。
>> x
tensor([[0.1825],
[0.9598],
[0.2871]])
>> W
tensor([[0.7459, 0.4669, 0.9687],
[0.9016, 0.4690, 0.0471],
[0.5926, 0.9700, 0.5222]])
然后W[i][j]
指向第j
个输入和第i
个输出神经元之间的连接权重。为了构建类似于您的玩具示例的结构,我们将制作这样的面具
>> mask
tensor([[1., 0., 0.],
[1., 1., 0.],
[1., 1., 1.]])
然后,您可以简单地掩盖W
>> (mask * W) @ x
tensor([[0.1361],
[0.6147],
[1.1892]])
注意:@
是矩阵乘法,*
是逐点乘法。