Torch,神经网络 - 在 gmodule 对象的 nngraph 类上执行前向函数

我是一个torch和lua的新手(任何跟随我的最新帖子的人都可以证明:)),对于gmodule对象(类nngraph)的前向函数有以下问题。

根据源代码(https://github.com/torch/nn/blob/master/Module.lua-作为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_state[t-1]是一个带有4个张量的表。因此,最终,我们得到了一些类似于

result_var = gmodule:forward{[1]=tensor_1,[2]=tensor_2,[3]=tensor_3,...,[5]=tensor_5}

问题是,根据网络架构,您是否可以将格式化为表格的输入不仅传递到输入层而且传递到隐藏层?

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

非常感谢

点赞
用户4380945
用户4380945

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

然而,输入(以及输出)不一定是一个vector,而它可以是多个vector的集合,这取决于神经网络的配置,在这个特定的情况下,它是一个相当复杂的递归神经网络。

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

result_var = gmodule:forward{[1]=tensor_1,[2]=tensor_2,[3]=tensor_3,...,[5]=tensor_5}

其中每个张量/向量都是输入向量之一。其中只有一个向量是X向量,或者是特征向量。其他向量可以作为中间节点的输入。

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

如果后者是情况,其中一个输出张量是预测,其余的通常作为下一次步骤中间节点的输入 - 但这又取决于网络配置。

2016-01-11 23:25:16