【发布时间】:2017-08-04 03:29:10
【问题描述】:
我正在制作一个连接架构不太明显的神经网络。我归结为 4 个输入块,每个输入块都有自己通往最终输出层的路径,并在几个步骤之间将它们合并。
我在 R 上使用 mxnet。我定义了 4 个mx.symbol.Variable("data"),每个都是输入“块”的输入。图表上仅显示 1 (graph.viz(out))。我可以理解,我应该只提供 1 个大输入向量是有道理的。但是...如何拆分该输入向量? (哦,可以肯定的是,mxnet 中的lstm 中的state.size 指向内存块的数量,等于# 输入和输出,对吧?)
代码(最小示例):
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
所以问题是:如何提供 2 个输入,或者如何将 1 个输入向量拆分为 2 个? (in1 和 in2 似乎效果不佳)
-- 编辑 1
可以想象符号变量名的前两行
in1 <- mx.symbol.Variable("data") # 7 values
in2 <- mx.symbol.Variable("data") # 7 values
应该不同。我很确定他们应该更像:
in1 <- mx.symbol.Variable("data1") # 7 values
in2 <- mx.symbol.Variable("data2") # 7 values
但是,更改它们不会更改可视计算图。好吧,确实如此:现在再次只显示 1 个输入,但不是作为输入(绿色圆圈),而是作为实际层(粉红色矩形)。这似乎对我没有帮助...
【问题讨论】:
标签: mxnet