コード例 #1
0
ファイル: RedeServices.cs プロジェクト: alaorneto/ECG
        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;
        }
コード例 #2
0
        /// <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];
                }
            }
        }
コード例 #3
0
ファイル: Utils.cs プロジェクト: alaorneto/ECG
        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;
        }
コード例 #4
0
ファイル: Utils.cs プロジェクト: alaorneto/ECG
        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;
        }
コード例 #5
0
ファイル: FConfigRedeNeuronal.cs プロジェクト: alaorneto/ECG
        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();
        }
コード例 #6
0
ファイル: Utils.cs プロジェクト: alaorneto/ECG
        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;
        }
コード例 #7
0
ファイル: Utils.cs プロジェクト: alaorneto/ECG
        /*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;
        }