Torch,神经网络-gmodule对象上的正向函数-nngraph类

Torch,神经网络-gmodule对象上的正向函数-nngraph类,module,lua,neural-network,torch,Module,Lua,Neural Network,Torch,我是torch和lua的新手(任何关注我最新帖子的人都可以证明:),我对gmodule对象(类nngraph)的forward函数有以下问题 根据源代码(-as类gmodule继承自nn.module),语法为: function Module:forward(input) return self:updateOutput(input) end 但是,我发现了表作为输入传递的情况,如: local lst = clones.rnn[t]:forward{x[{{}, t}], unpac

我是torch和lua的新手(任何关注我最新帖子的人都可以证明:),我对gmodule对象(类nngraph)的forward函数有以下问题

根据源代码(-as类gmodule继承自nn.module),语法为:

function Module:forward(input)
   return self:updateOutput(input)
end
但是,我发现了表作为输入传递的情况,如:

local lst = clones.rnn[t]:forward{x[{{}, t}], unpack(rnn_state[t-1])}
其中:

clones.rnn[t]
本身就是一个gmodule对象。反过来,rnn_状态[t-1]是一个具有4个张量的表。所以最后,我们有了类似于

result_var = gmodule:forward{[1]=tensor_1,[2]=tensor_2,[3]=tensor_3,...,[5]=tensor_5}
问题是,根据网络架构的不同,您能否将格式为表的输入不仅传递到输入层,还传递到隐藏层

在这种情况下,您必须检查每个层是否只传递一个输入?(输出层除外)


非常感谢,我终于找到了答案。模块类(以及继承的类gmodule)有一个输入和一个输出

然而,输入(以及输出)不需要是一个向量,但它可以是一组向量——这取决于神经网络的配置,在这种特殊情况下,它是一个非常复杂的递归神经网络

因此,如果网络有多个输入向量,则可以执行以下操作:

result_var = gmodule:forward{[1]=tensor_1,[2]=tensor_2,[3]=tensor_3,...,[5]=tensor_5}
其中,每个张量/向量是一个输入向量。这些向量中只有一个是X向量或特征向量。其他节点可以作为其他中间节点的输入

反过来,result_var(即输出)可以有一个输出作为张量(预测)或一组张量作为输出(张量的集合),具体取决于网络配置


如果是后者,其中一个输出张量是预测,提醒通常在下一个时间步中用作中间节点的输入-但这同样取决于网络配置。

我终于找到了答案。模块类(以及继承的类gmodule)有一个输入和一个输出

然而,输入(以及输出)不需要是一个向量,但它可以是一组向量——这取决于神经网络的配置,在这种特殊情况下,它是一个非常复杂的递归神经网络

因此,如果网络有多个输入向量,则可以执行以下操作:

result_var = gmodule:forward{[1]=tensor_1,[2]=tensor_2,[3]=tensor_3,...,[5]=tensor_5}
其中,每个张量/向量是一个输入向量。这些向量中只有一个是X向量或特征向量。其他节点可以作为其他中间节点的输入

反过来,result_var(即输出)可以有一个输出作为张量(预测)或一组张量作为输出(张量的集合),具体取决于网络配置

如果是后者,其中一个输出张量是预测,提醒通常在下一个时间步中用作中间节点的输入,但这同样取决于网络配置