如何拆分mxnet神经网络的输入?

时间:2017-08-03 18:00:21

标签: mxnet

我正在建立一个不太明显的连接架构的神经网络。我归结为4个输入块,每个输入都有自己的路径通向最终输出层,并在几个步骤之间合并它们。 我在R上使用mxnet。我定义了4 mx.symbol.Variable("data"),每个都是' chunk的输入。输入。图表上只显示1(graph.viz(out))。我可以理解,我应该只提供一个大输入向量。但是......如何拆分输入向量? (哦,并且确定,mxnet中state.size的{​​{1}},指向内存块的数量,等于#输入和输出,对吗?)

代码(最小例子):

lstm

所以问题是:如何提供2个输入,或者如何在2中分割1个输入向量? (in1 <- mx.symbol.Variable("data1") # 7 values in2 <- mx.symbol.Variable("data2") # 7 values l1.1 <- mx.symbol.RNN(in1, name="lstm1.1", mode="lstm", num.layers=1, state.size=7) # first nn on the first 7 inputs l1.2 <- mx.symbol.RNN(in2, name="lstm1.2", mode="lstm", num.layers=1, state.size=7) # second nn on the last 7 inputs l2 <- mx.symbol.RNN(data=l1.1+l1.2, name="lstml2", mode="lstm", num.layers=1, state.size=14) # state.size must be 14, since each input separate has 7 out.dens <- mx.symbol.FullyConnected(c.lstm, name="out-dens", num.hidden=4) # pred <- mx.symbol.LinearRegressionOutput(out, name="pred") graph.viz(pred) # only lstm1.1 has a data input in1似乎没有成功(

- 编辑1

可以想象,符号变量的名称前两行 in2 应该是不同的。我很确定他们应该更喜欢: in1 <- mx.symbol.Variable("data") # 7 values in2 <- mx.symbol.Variable("data") # 7 values

但是,更改它们并不会改变视觉计算图。好吧,它确实:现在再次只显示1个输入,但不是输入(绿色圆圈),而是作为实际层(粉红色矩形)。这似乎没有帮助我......

1 个答案:

答案 0 :(得分:1)

将第一行更改为:

input <- mx.symbol.Variable("data")

in1 <- mx.symbol.slice(input, begin=0, end=6)
in2 <- mx.symbol.slice(input, begin=7, end=13)

并且不使用concat

添加
l2 <- mx.symbol.concat(c(l1.1, 1.2), num.args=14)
l2 <- mx.symbol.RNN(data=l2, name="lstml2", mode="lstm", num.layers=1, state.size=14)  # state.size must be 14, since each input separate has 7

似乎没问题