public Net(int Inputs, int Outputs, int Layers = 3) { if (Layers < 2) throw new ArgumentException("There must be at least 2 layers."); this.Inputs = Inputs; this.Outputs = Outputs; NodeLayers = new NodeLayer[Layers]; for (int i = 0; i < Layers - 1; i++) { NodeLayers[i] = new NodeLayer(Inputs, Inputs); } NodeLayers[Layers - 1] = new NodeLayer(Inputs, Outputs); }
public void LogicNodeLayerOR() { INodeLayer NodeLayer = new NodeLayer(2, 1); BackPropagation prop = new BackPropagation(2, 1); DataSet _1 = new DataSet(new double[] { 0, 0 }, new double[] { 0 }); // 0 | 0 = 0 DataSet _2 = new DataSet(new double[] { 0, 1 }, new double[] { 1 }); // 0 | 1 = 1 DataSet _3 = new DataSet(new double[] { 1, 0 }, new double[] { 1 }); // 1 | 0 = 1 DataSet _4 = new DataSet(new double[] { 1, 1 }, new double[] { 1 }); // 1 | 1 = 1 prop.AddDataSet(_1); prop.AddDataSet(_2); prop.AddDataSet(_3); prop.AddDataSet(_4); int epoch = 1000; double SSE = prop.Train(NodeLayer, epoch); Assert.IsTrue(SSE < 0.2, "LogicNodeOR SSE after {0} epochs is '{1}'", epoch, SSE); }