CNTK C#-将输出连接到特定的图层输入

时间:2019-02-09 13:57:21

标签: c# neural-network deep-learning cntk

我需要创建 10个神经元,每个神经元具有 2个输入。这些中的每一个都有一个输出,该输出应该连接到具有 10个输入和一个输出的层。

我对输入神经元的定义:

Function in1 =  Util.Dense(CNTK.Variable.InputVariable(CNTK.NDShape.CreateNDShape(new int[] { 2 }), CNTK.DataType.Float), 1, computeDevice);
Function in2 =  Util.Dense(CNTK.Variable.InputVariable(CNTK.NDShape.CreateNDShape(new int[] { 2 }), CNTK.DataType.Float), 1, computeDevice);
Function in3 =  Util.Dense(CNTK.Variable.InputVariable(CNTK.NDShape.CreateNDShape(new int[] { 2 }), CNTK.DataType.Float), 1, computeDevice);
Function in4 =  Util.Dense(CNTK.Variable.InputVariable(CNTK.NDShape.CreateNDShape(new int[] { 2 }), CNTK.DataType.Float), 1, computeDevice);
Function in5 =  Util.Dense(CNTK.Variable.InputVariable(CNTK.NDShape.CreateNDShape(new int[] { 2 }), CNTK.DataType.Float), 1, computeDevice);
Function in6 =  Util.Dense(CNTK.Variable.InputVariable(CNTK.NDShape.CreateNDShape(new int[] { 2 }), CNTK.DataType.Float), 1, computeDevice);
Function in7 =  Util.Dense(CNTK.Variable.InputVariable(CNTK.NDShape.CreateNDShape(new int[] { 2 }), CNTK.DataType.Float), 1, computeDevice);
Function in8 =  Util.Dense(CNTK.Variable.InputVariable(CNTK.NDShape.CreateNDShape(new int[] { 2 }), CNTK.DataType.Float), 1, computeDevice);
Function in9 =  Util.Dense(CNTK.Variable.InputVariable(CNTK.NDShape.CreateNDShape(new int[] { 2 }), CNTK.DataType.Float), 1, computeDevice);
Function in10 = Util.Dense(CNTK.Variable.InputVariable(CNTK.NDShape.CreateNDShape(new int[] { 2 }), CNTK.DataType.Float), 1, computeDevice);

具有10个输入的图层:

mergeLayer = Util.Dense(CNTK.NDShape.CreateNDShape(new int[] { 10 }), CNTK.DataType.Float, 1, computeDevice);

如何将10个输出连接到mergeLayer的每个输入?

1 个答案:

答案 0 :(得分:0)

通常,您不会分别创建图层功能,而是将一个功能作为输入参数传递给另一个。用cntk.splice连接数据。在Python中:

import cntk as C

input1 = C.ops.input_variable((4, 2), np.float32)

in1 =  C.layers.Dense(1)( input1[0] )
in2 =  C.layers.Dense(1)( input1[1] )
in3 =  C.layers.Dense(1)( input1[2] )
in4 =  C.layers.Dense(1)( input1[3] )

allIn = C.splice( in1, in2, in3, in4, axis=0 )

mergeLayer = C.layers.Dense(1)( allIn )