public Neuronio(int nEntradas, Rede.FAtivação nF) { Pesos = new double[nEntradas]; F = nF; }
public static List<Rede> GeraRedesNeurais(List<PreRedeNeural> preRede,Teste nTeste) { Rede.FAtivação[] fs; if (nTeste.Bounds) { fs = new Rede.FAtivação[2] { F1Bounds, F2 }; } else { fs = new Rede.FAtivação[2] { F1, F2 }; } List<Rede> r = new List<Rede>(); foreach (PreRedeNeural prn in preRede) { r.Add(prn.GerarRedeNeural(fs)); } return r; }
public static List<Rede> GeraRedesNeurais(List<PreRedeNeural> preRede) { Rede.FAtivação[] fs = new Rede.FAtivação[2] { F1, F2 }; List<Rede> r = new List<Rede>(); foreach (PreRedeNeural prn in preRede) { //juntar padDentro com padFora //os primeiros neuronios representam pad dentro //qntd de entradas = qntd de variaveis //qntd de neuronios na primeira camada = qnd de planos //qntd de neuronios na segunda camada = qnd de padroes dentr+fora int[] camadas = new int[3] { prn.planos[0].VectorNormal.Length, prn.planos.Count, prn.padDentro.RowCount + prn.padFora.RowCount}; Rede dummy = new Rede(camadas, fs); //preencher a primeira camada for (int neuronio = 0; neuronio < prn.planos.Count; neuronio++) { dummy[0][neuronio].Pesos = (prn.planos[neuronio].VectorNormal.Scale(1/prn.planos[neuronio].d_2)).CopyToArray(); dummy[0][neuronio].PesoOffset = prn.planos[neuronio].bias / prn.planos[neuronio].d_2; } //preenchendo a segunda camada paddentro double nentradasD = prn.padDentro.ColumnCount; for (int neuronio = 0; neuronio < prn.padDentro.RowCount; neuronio++) { dummy[1][neuronio].Pesos = (prn.padDentro.GetRowVector(neuronio).Scale( 1/nentradasD)).CopyToArray(); dummy[1][neuronio].PesoOffset = 0; } //padfora double nentradasF = prn.padFora.ColumnCount; for (int neuronio = 0; neuronio < prn.padFora.RowCount; neuronio++) { dummy[1][neuronio + prn.padDentro.RowCount].Pesos = (prn.padFora.GetRowVector(neuronio).Scale( 1/nentradasF)).CopyToArray(); dummy[1][neuronio + prn.padDentro.RowCount].PesoOffset = 0; } r.Add(dummy); } return r; }