/// <summary> /// 初始化神经网络 /// </summary> /// <param name="inLayerNodeCount">输入层节点数</param> /// <param name="hiddenLayerNodeCount">输出层节点数</param> /// <param name="outLayerNodeCount">输出层节点数</param> public NeuralNet(LayerData inLayerNode, [NotNull] LayerData[] hiddenLayerNode, LayerData outLayerNode) { // 输入层 InLayer = new NeuronLayer(inLayerNode.NodeCount, inLayerNode.ActiveType); // 隐层 HideLayer = new NeuronLayer[hiddenLayerNode.Length]; for (var i = 0; i < hiddenLayerNode.Length; i++) { HideLayer[i] = new NeuronLayer(hiddenLayerNode[i].NodeCount, hiddenLayerNode[i].ActiveType); } // 输出层 OutLayer = new NeuronLayer(outLayerNode.NodeCount, outLayerNode.ActiveType); InLayer.ConnectLayer(HideLayer[0]); for (var i = 0; i < hiddenLayerNode.Length - 1; i++) { HideLayer[i].ConnectLayer(HideLayer[i + 1]); } HideLayer[HideLayer.Length - 1].ConnectLayer(OutLayer); }
/// <summary> /// 初始化神经网络 /// </summary> /// <param name="inLayerNodeCount">输入层节点数</param> /// <param name="hiddenLayerNodeCount">输出层节点数</param> /// <param name="outLayerNodeCount">输出层节点数</param> public NeuralNet(int inLayerNodeCount, [NotNull] int[] hiddenLayerNodeCount, int outLayerNodeCount) { // 输入层 InLayer = new NeuronLayer(inLayerNodeCount); // 隐层 HideLayer = new NeuronLayer[hiddenLayerNodeCount.Length]; for (var i = 0; i < hiddenLayerNodeCount.Length; i++) { HideLayer[i] = new NeuronLayer(hiddenLayerNodeCount[i]); } // 输出层 OutLayer = new NeuronLayer(outLayerNodeCount); InLayer.ConnectLayer(HideLayer[0]); for (var i = 0; i < hiddenLayerNodeCount.Length - 1; i++) { HideLayer[i].ConnectLayer(HideLayer[i + 1]); } HideLayer[HideLayer.Length - 1].ConnectLayer(OutLayer); }
/// <summary> /// 连接层 /// </summary> /// <param name="layer">层类</param> public void ConnectLayer([NotNull] NeuronLayer layer) { NextLayer = layer; layer.PreLayer = this; for (var i = 0; i < NodeList.Count; i++) { for (var j = 0; j < NextLayer.NodeList.Count; j++) { NodeList[i].ConnectNeuron(NextLayer.NodeList[j]); } } }