public static bool Export(Neural network, string pathFile) { XmlDocument doc = new XmlDocument(); XmlElement root = doc.CreateElement("Network"); doc.AppendChild(root); //save number of Input, Hidden, Output Nodes XmlElement numInput = doc.CreateElement("numInputNodes"); numInput.InnerText = Convert.ToString(network.m_iNumInputNodes); XmlElement numHidden = doc.CreateElement("numHiddenNodes"); numHidden.InnerText = Convert.ToString(network.m_iNumHiddenNodes); XmlElement numOutput = doc.CreateElement("numOutputNodes"); numOutput.InnerText = Convert.ToString(network.m_iNumOutputNodes); root.AppendChild(numInput); root.AppendChild(numHidden); root.AppendChild(numOutput); //save input nodes XmlElement InputNodes = doc.CreateElement("InputNodes"); for (int i = 0; i <= network.m_iNumInputNodes; i++) { XmlElement aInputNode = doc.CreateElement("Input" + Convert.ToString(i + 1)); //save activation func if (network.m_arInputNodes[i].m_activeFuncType == ActionvationFunction.SIGMOID_FUNCTION) { XmlElement actFunc = doc.CreateElement("activateFunc"); actFunc.InnerText = "SIGMOID_FUNCTION"; aInputNode.AppendChild(actFunc); } //save weight for in-hid connection for (int j = 0; j < network.m_iNumHiddenNodes; j++) { XmlElement aWeight = doc.CreateElement("InHid" + Convert.ToString(i + 1) + Convert.ToString(j + 1)); aWeight.InnerText = Convert.ToString(network.m_arInputHiddenConn[j, i]); aInputNode.AppendChild(aWeight); } InputNodes.AppendChild(aInputNode); } root.AppendChild(InputNodes); //save hidden nodes XmlElement HiddenNodes = doc.CreateElement("HiddenNodes"); for (int i = 0; i <= network.m_iNumHiddenNodes; i++) { XmlElement aHiddenNode = doc.CreateElement("Hidden" + Convert.ToString(i + 1)); //save activation func if (network.m_arHiddenNodes[i].m_activeFuncType == ActionvationFunction.SIGMOID_FUNCTION) { XmlElement actFunc = doc.CreateElement("activateFunc"); actFunc.InnerText = "SIGMOID_FUNCTION"; aHiddenNode.AppendChild(actFunc); } //save weight for hid-out connection for (int j = 0; j < network.m_iNumOutputNodes; j++) { XmlElement aWeight = doc.CreateElement("HidOut" + Convert.ToString(i + 1) + Convert.ToString(j + 1)); aWeight.InnerText = Convert.ToString(network.m_arHiddenOutputConn[j, i]); aHiddenNode.AppendChild(aWeight); } HiddenNodes.AppendChild(aHiddenNode); } root.AppendChild(HiddenNodes); //save output nodes XmlElement OutputNodes = doc.CreateElement("OutputNodes"); for (int i = 0; i < network.m_iNumOutputNodes; i++) { XmlElement aOutputNode = doc.CreateElement("Output" + Convert.ToString(i + 1)); //save activation func if (network.m_arOutputNodes[i].m_activeFuncType == ActionvationFunction.SIGMOID_FUNCTION) { XmlElement actFunc = doc.CreateElement("activateFunc"); actFunc.InnerText = "SIGMOID_FUNCTION"; aOutputNode.AppendChild(actFunc); } OutputNodes.AppendChild(aOutputNode); } root.AppendChild(OutputNodes); doc.Save(pathFile); return true; }
public static Neural Import(string pathFile) { XmlDocument input = new XmlDocument(); Neural loadedNetwork = null; try { input.Load(pathFile); XmlNode root = input.FirstChild; //Get number of input, hidden, output nodes int numInputNodes = Int32.Parse(root.SelectSingleNode("descendant::numInputNodes").InnerText); int numHiddenNodes = Int32.Parse(root.SelectSingleNode("descendant::numHiddenNodes").InnerText); int numOutputNodes = Int32.Parse(root.SelectSingleNode("descendant::numOutputNodes").InnerText); string lags = root.SelectSingleNode("descendant::Lag").InnerText; //create a network loadedNetwork = new Neural(numInputNodes, numHiddenNodes, numOutputNodes); //Get Input Nodes for (int i = 0; i <= loadedNetwork.m_iNumInputNodes; i++) { //get a input node XmlNode tempNode = root.SelectSingleNode("descendant::Input" + Convert.ToString(i + 1)); //get activation function type string activationFunc = tempNode.SelectSingleNode("descendant::activateFunc").InnerText; if (activationFunc.Equals("SIGMOID_FUNCTION")) { loadedNetwork.m_arInputNodes[i].m_activeFuncType = ActionvationFunction.SIGMOID_FUNCTION; } //get weight for (int j = 0; j < loadedNetwork.m_iNumHiddenNodes; j++) { loadedNetwork.m_arInputHiddenConn[i, j] = Convert.ToDouble(tempNode.SelectSingleNode("descendant::InHid" + Convert.ToString(i + 1) + Convert.ToString(j + 1)).InnerText); } } //Get Hidden Nodes for (int i = 0; i <= loadedNetwork.m_iNumHiddenNodes; i++) { //get a hidden node XmlNode tempNode = root.SelectSingleNode("descendant::Hidden" + Convert.ToString(i + 1)); //get activation function type string activationFunc = tempNode.SelectSingleNode("descendant::activateFunc").InnerText; if (activationFunc.Equals("SIGMOID_FUNCTION")) { loadedNetwork.m_arHiddenNodes[i].m_activeFuncType = ActionvationFunction.SIGMOID_FUNCTION; } } //Get Output Nodes for (int i = 0; i < loadedNetwork.m_iNumOutputNodes; i++) { //get a output node XmlNode tempNode = root.SelectSingleNode("descendant::Output" + Convert.ToString(i + 1)); //get activation function type string activationFunc = tempNode.SelectSingleNode("descendant::activateFunc").InnerText; if (activationFunc.Equals("SIGMOID_FUNCTION")) { loadedNetwork.m_arOutputNodes[i].m_activeFuncType = ActionvationFunction.SIGMOID_FUNCTION; } } } catch (Exception e) { Console.WriteLine(e.Message); return null; } return loadedNetwork; }
public static bool Export(Neural network, string pathFile) { XmlDocument doc = new XmlDocument(); XmlElement root = doc.CreateElement("Network"); doc.AppendChild(root); //save number of Input, Hidden, Output Nodes XmlElement numInput = doc.CreateElement("numInputNodes"); numInput.InnerText = Convert.ToString(network.m_iNumInputNodes); XmlElement numHidden = doc.CreateElement("numHiddenNodes"); numHidden.InnerText = Convert.ToString(network.m_iNumHiddenNodes); XmlElement numOutput = doc.CreateElement("numOutputNodes"); numOutput.InnerText = Convert.ToString(network.m_iNumOutputNodes); root.AppendChild(numInput); root.AppendChild(numHidden); root.AppendChild(numOutput); //save input nodes XmlElement InputNodes = doc.CreateElement("InputNodes"); for (int i = 0; i <= network.m_iNumInputNodes; i++) { XmlElement aInputNode = doc.CreateElement("Input" + Convert.ToString(i + 1)); //save activation func if (network.m_arInputNodes[i].m_activeFuncType == ActionvationFunction.SIGMOID_FUNCTION) { XmlElement actFunc = doc.CreateElement("activateFunc"); actFunc.InnerText = "SIGMOID_FUNCTION"; aInputNode.AppendChild(actFunc); } //save weight for in-hid connection for (int j = 0; j < network.m_iNumHiddenNodes; j++) { XmlElement aWeight = doc.CreateElement("InHid" + Convert.ToString(i + 1) + Convert.ToString(j + 1)); aWeight.InnerText = Convert.ToString(network.m_arInputHiddenConn[j, i]); aInputNode.AppendChild(aWeight); } InputNodes.AppendChild(aInputNode); } root.AppendChild(InputNodes); //save hidden nodes XmlElement HiddenNodes = doc.CreateElement("HiddenNodes"); for (int i = 0; i <= network.m_iNumHiddenNodes; i++) { XmlElement aHiddenNode = doc.CreateElement("Hidden" + Convert.ToString(i + 1)); //save activation func if (network.m_arHiddenNodes[i].m_activeFuncType == ActionvationFunction.SIGMOID_FUNCTION) { XmlElement actFunc = doc.CreateElement("activateFunc"); actFunc.InnerText = "SIGMOID_FUNCTION"; aHiddenNode.AppendChild(actFunc); } //save weight for hid-out connection for (int j = 0; j < network.m_iNumOutputNodes; j++) { XmlElement aWeight = doc.CreateElement("HidOut" + Convert.ToString(i + 1) + Convert.ToString(j + 1)); aWeight.InnerText = Convert.ToString(network.m_arHiddenOutputConn[j, i]); aHiddenNode.AppendChild(aWeight); } HiddenNodes.AppendChild(aHiddenNode); } root.AppendChild(HiddenNodes); //save output nodes XmlElement OutputNodes = doc.CreateElement("OutputNodes"); for (int i = 0; i < network.m_iNumOutputNodes; i++) { XmlElement aOutputNode = doc.CreateElement("Output" + Convert.ToString(i + 1)); //save activation func if (network.m_arOutputNodes[i].m_activeFuncType == ActionvationFunction.SIGMOID_FUNCTION) { XmlElement actFunc = doc.CreateElement("activateFunc"); actFunc.InnerText = "SIGMOID_FUNCTION"; aOutputNode.AppendChild(actFunc); } OutputNodes.AppendChild(aOutputNode); } root.AppendChild(OutputNodes); doc.Save(pathFile); return(true); }
public static Neural Import(string pathFile) { XmlDocument input = new XmlDocument(); Neural loadedNetwork = null; try { input.Load(pathFile); XmlNode root = input.FirstChild; //Get number of input, hidden, output nodes int numInputNodes = Int32.Parse(root.SelectSingleNode("descendant::numInputNodes").InnerText); int numHiddenNodes = Int32.Parse(root.SelectSingleNode("descendant::numHiddenNodes").InnerText); int numOutputNodes = Int32.Parse(root.SelectSingleNode("descendant::numOutputNodes").InnerText); string lags = root.SelectSingleNode("descendant::Lag").InnerText; //create a network loadedNetwork = new Neural(numInputNodes, numHiddenNodes, numOutputNodes); //Get Input Nodes for (int i = 0; i <= loadedNetwork.m_iNumInputNodes; i++) { //get a input node XmlNode tempNode = root.SelectSingleNode("descendant::Input" + Convert.ToString(i + 1)); //get activation function type string activationFunc = tempNode.SelectSingleNode("descendant::activateFunc").InnerText; if (activationFunc.Equals("SIGMOID_FUNCTION")) { loadedNetwork.m_arInputNodes[i].m_activeFuncType = ActionvationFunction.SIGMOID_FUNCTION; } //get weight for (int j = 0; j < loadedNetwork.m_iNumHiddenNodes; j++) { loadedNetwork.m_arInputHiddenConn[i, j] = Convert.ToDouble(tempNode.SelectSingleNode("descendant::InHid" + Convert.ToString(i + 1) + Convert.ToString(j + 1)).InnerText); } } //Get Hidden Nodes for (int i = 0; i <= loadedNetwork.m_iNumHiddenNodes; i++) { //get a hidden node XmlNode tempNode = root.SelectSingleNode("descendant::Hidden" + Convert.ToString(i + 1)); //get activation function type string activationFunc = tempNode.SelectSingleNode("descendant::activateFunc").InnerText; if (activationFunc.Equals("SIGMOID_FUNCTION")) { loadedNetwork.m_arHiddenNodes[i].m_activeFuncType = ActionvationFunction.SIGMOID_FUNCTION; } } //Get Output Nodes for (int i = 0; i < loadedNetwork.m_iNumOutputNodes; i++) { //get a output node XmlNode tempNode = root.SelectSingleNode("descendant::Output" + Convert.ToString(i + 1)); //get activation function type string activationFunc = tempNode.SelectSingleNode("descendant::activateFunc").InnerText; if (activationFunc.Equals("SIGMOID_FUNCTION")) { loadedNetwork.m_arOutputNodes[i].m_activeFuncType = ActionvationFunction.SIGMOID_FUNCTION; } } } catch (Exception e) { Console.WriteLine(e.Message); return(null); } return(loadedNetwork); }
static void Main(string[] args) { Neural neural = new Neural(1, 2, 1); double learningRate = 0.7; double moment = 0.4; double maxEpouch = 10000; double expectError = 0.00001; string fileName = @"E:\PROJECT\FINAL PROJECT\Other\Test\fuel.txt"; List<double> sample = new List<double>(); System.IO.StreamReader file = null; string line = null; int counter = 0; bool isFormatFileRight = true; int beginRow = 1; int endRow = 71; int columnSelected = 1; int idxRow = 0; try { file = new System.IO.StreamReader(fileName); while ((line = file.ReadLine()) != null) { idxRow++; if (idxRow < beginRow || idxRow > endRow) continue; char[] delimiterChars = { ' ', ',' }; string[] words = line.Split(delimiterChars); if (columnSelected <= words.Length) { sample.Add(Double.Parse(words[columnSelected - 1])); } else { isFormatFileRight = false; break; } } } catch (System.OutOfMemoryException outOfMemory) { sample = null; } double max = sample.Max(); double min = sample.Min(); int count = sample.Count; double[] series = new double[count]; List<double> sample2 = new List<double>(); for (int i = 0; i < count; i++) { double a = sample.ElementAt(i); double b = (a - min) / (max - min) * (0.99 - 0.01) + 0.01; series[i] = b; sample2.Add(b); } NeuralTraining training = new NeuralTraining(); training.s_Network = neural; //training.Rprop_Run(sample2, null); training.Bp_Run(sample2, null, 0.7, 0.4); int x = 0; }
static void Main(string[] args) { Neural neural = new Neural(1, 2, 1); double learningRate = 0.7; double moment = 0.4; double maxEpouch = 10000; double expectError = 0.00001; string fileName = @"E:\PROJECT\FINAL PROJECT\Other\Test\fuel.txt"; List <double> sample = new List <double>(); System.IO.StreamReader file = null; string line = null; int counter = 0; bool isFormatFileRight = true; int beginRow = 1; int endRow = 71; int columnSelected = 1; int idxRow = 0; try { file = new System.IO.StreamReader(fileName); while ((line = file.ReadLine()) != null) { idxRow++; if (idxRow < beginRow || idxRow > endRow) { continue; } char[] delimiterChars = { ' ', ',' }; string[] words = line.Split(delimiterChars); if (columnSelected <= words.Length) { sample.Add(Double.Parse(words[columnSelected - 1])); } else { isFormatFileRight = false; break; } } } catch (System.OutOfMemoryException outOfMemory) { sample = null; } double max = sample.Max(); double min = sample.Min(); int count = sample.Count; double[] series = new double[count]; List <double> sample2 = new List <double>(); for (int i = 0; i < count; i++) { double a = sample.ElementAt(i); double b = (a - min) / (max - min) * (0.99 - 0.01) + 0.01; series[i] = b; sample2.Add(b); } NeuralTraining training = new NeuralTraining(); training.s_Network = neural; //training.Rprop_Run(sample2, null); training.Bp_Run(sample2, null, 0.7, 0.4); int x = 0; }