public RedeAtivacao Setup(string descricao, Tipo tipo) { DatabaseEntities entities = new DatabaseEntities(); RedeAtivacao ativacao; REDE fromdb; var query = from r in entities.REDE where r.descricao == descricao select r; if (entities.REDE.Count(r => r.descricao == descricao) == 0) return null; fromdb = (REDE)query.First(); int entradas = fromdb.entradas; int[] neuronios = Utils.StringToInt(fromdb.neuronios); ativacao = new RedeAtivacao(new BipolarSigmoideFuncaoAtivacao(), entradas, neuronios); ativacao = Utils.SetupPesos(ativacao, fromdb.pesos); ativacao = Utils.SetupThreshold(ativacao, fromdb.threshold); ativacao.Descricao = descricao; return ativacao; }
/// <summary> /// /// </summary> /// <param name="rede"></param> public AprendizadoBackPropagation(RedeAtivacao rede) { this.rede = rede; // Cria as matrizes de erro e delta erroNeuronio = new double[rede.NumeroCamadas][]; atualizacaoPesos = new double[rede.NumeroCamadas][][]; atualizacaoThreshold = new double[rede.NumeroCamadas][]; // Inicializa as matrizes de erro e delta para cada camada for(int i = 0; i < rede.NumeroCamadas; i++) { Camada camada = rede[i]; erroNeuronio[i] = new double[camada.NumeroNeuronios]; atualizacaoPesos[i] = new double[camada.NumeroNeuronios][]; atualizacaoThreshold[i] = new double[camada.NumeroNeuronios]; // Para cada neurônio for (int j = 0; j < camada.NumeroNeuronios; j++) { atualizacaoPesos[i][j] = new double[camada.NumeroEntradas]; } } }
public static string PesosParaString(RedeAtivacao rede) { string output = ""; for (int i = 0; i < rede.NumeroCamadas; i++) { for (int j = 0; j < rede[i].NumeroNeuronios; j++) { for (int k = 0; k < rede[i][j].NumeroEntradas; k++) { output += rede[i][j][k] + ";"; } } } return output; }
public static RedeAtivacao SetupPesos(RedeAtivacao rede, string pesos) { int count = 0; double[] pesosarr = StringToDouble(pesos); for (int i = 0; i < rede.NumeroCamadas; i++) { for (int j = 0; j < rede[i].NumeroNeuronios; j++) { for (int k = 0; k < rede[i][j].NumeroEntradas; k++) { rede[i][j][k] = pesosarr[count++]; } } } return rede; }
private void buttonQRSSalvar_Click(object sender, EventArgs e) { RedeAtivacao rede = new RedeAtivacao(new SigmoideFuncaoAtivacao(), int.Parse(textBoxQRSEntradas.Text), Utils.StringToInt(textBoxQRSNeuronios.Text)); RedeServices service = new RedeServices(); rede.Descricao = textBoxQRSDesc.Text; rede.Aleatorizar(); service.Salvar(rede, RedeServices.Tipo.Ativacao, "QRS"); MessageBox.Show("Rede salva com sucesso!"); textBoxQRSDesc.Text = ""; textBoxQRSEntradas.Text = ""; textBoxQRSNeuronios.Text = ""; AtualizarCombos(); }
public static RedeAtivacao SetupThreshold(RedeAtivacao rede, string thresholds) { if (thresholds == null) return rede; int count = 0; double[] saidasarr = StringToDouble(thresholds); for (int i = 0; i < rede.NumeroCamadas; i++) { for (int j = 0; j < rede[i].NumeroNeuronios; j++) { rede[i][j].Threshold = saidasarr[count++]; } } return rede; }
/*public static string SaidasParaString(RedeAtivacao rede) { string output = ""; for (int i = 0; i < rede.NumeroCamadas; i++) { for (int j = 0; j < rede[i].NumeroNeuronios; j++) { output += rede[i][j].Saida + ";"; } } return output; } public static RedeAtivacao SetupSaidas(RedeAtivacao rede, string saidas) { int count = 0; double[] saidasarr = StringToDouble(saidas); for (int i = 0; i < rede.NumeroCamadas; i++) { for (int j = 0; j < rede[i].NumeroNeuronios; j++) { rede[i][j].Saida = saidasarr[count++]; } } return rede; }*/ public static string ThresholdParaString(RedeAtivacao rede) { string output = ""; for (int i = 0; i < rede.NumeroCamadas; i++) { for (int j = 0; j < rede[i].NumeroNeuronios; j++) { output += rede[i][j].Threshold + ";"; } } return output; }