如何在这种结构中建立神经网络?不同的节点连接到下一层不同数量的节点
Posted
技术标签:
【中文标题】如何在这种结构中建立神经网络?不同的节点连接到下一层不同数量的节点【英文标题】:How to build neural network in this structure?with different nodes connects to different number of nodes in next layer 【发布时间】:2021-12-31 10:06:23 【问题描述】:我只知道如何在 PyTorch 中使用 LSTM 的 RNN 等内置网络。但他们倾向于处理上一层中的每个节点,这些节点会将信息提供给下一层中的所有节点。
我想做一些不同的事情,但不知道如何自己编写代码。如下图:节点 a 映射到层中所有的 [d, e, f] 三个节点2、而节点b映射到[e,f]而节点c只映射到[ f]。结果,节点 d 将只包含来自 a 的信息,而 e 将包含来自 [a 的信息, b]。 f 将包含来自上一层所有节点的信息。 有谁知道如何编码这个结构?请给我一些见解,我将不胜感激:D
Structure
【问题讨论】:
【参考方案1】:当您有一个看起来像全连接层但具有自定义连接性的层时,请使用具有适当结构的掩码。
假设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
th 输入和i
th 输出神经元之间的连接权重。为了构建类似于您的玩具示例的结构,我们将制作这样的面具
>> mask
tensor([[1., 0., 0.],
[1., 1., 0.],
[1., 1., 1.]])
然后你可以简单地屏蔽W
>> (mask * W) @ x
tensor([[0.1361],
[0.6147],
[1.1892]])
注意:@
是矩阵乘法,*
是逐点乘法。
【讨论】:
所以如果我的输入 dim 为 3,则输出 dim 为 3。我的神经网络结构将类似于 input 3 dim, LSTM_layer(3, 64), Fully-connected_layer(64, 3), *下三角掩码矩阵(3, 3),输出dim 3。这是否可以作为我的自定义连接,使最后三个节点获得不同的信息?或者我应该将掩码矩阵放在输入层(3,1)和 LSTM 层(3,64)之间 你的输入是连续的(中间有 LSTM)吗?你的图只显示了全连接层。我提供的解决方案仅用于屏蔽FC层。 对不起,我把图简单化了。我的输入是时间序列值(值、小时索引、星期索引),我想使用 LSTM 层来提取输入(3 暗淡)和输出(3 暗淡)之间的一些信息。那么如果我在LSTM层之后使用掩码,输出三个节点会不会是这样:d节点只包含周信息,e节点包含周和小时,f节点包含值,小时,周信息?以上是关于如何在这种结构中建立神经网络?不同的节点连接到下一层不同数量的节点的主要内容,如果未能解决你的问题,请参考以下文章