如何在这种结构中建立神经网络?不同的节点连接到下一层不同数量的节点

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] 指向jth 输入和ith 输出神经元之间的连接权重。为了构建类似于您的玩具示例的结构,我们将制作这样的面具

>> 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节点包含值,小时,周信息?

以上是关于如何在这种结构中建立神经网络?不同的节点连接到下一层不同数量的节点的主要内容,如果未能解决你的问题,请参考以下文章

geth ethereum 客户端连接到 ganache

确定层次结构中的两个节点是不是已连接

无法从节点连接到 docker 中的 mongo 副本集

建立一个pptp-vpn连接怎么配置?

如何建立VPN通道

如何从 kubernetes pod 连接到本地网络