Dúvidas em código

8 respostas
mrfs

Boa tarde pessoal, gostaria de saber como comentar esse código, tipo, o que as linhas de códigos abaixo fazem.

Desde já muito obrigado.

package redeneural;

import javax.swing.JOptionPane;

/**
 *
 * 
 *Condições do Sitema
 *pesosIniciais = 0 (TODOS)
 *taxaAprendizado = 1
 *bias = 1
 *fnet v >= 0 saida = 1
 *fnet  v < 0 saida = 0
 *1 = quadricula marcada
 *0 = quadricula nao marcada
 */
public class ReconhecimentoCaracteresLogica {

    // Pesos dos neuronios TODOS iniciando com 0
    public static int[][] pesosNeuronio = new int[4][70];
    // TX de aprendizado
    public static final int TAXA_DE_APRENDIZADO = 1;
    // Saidas esperadas dos neuronios matriz [9][4]
    public static int[][] saidasNeuronio = {
        // letra Q neuronios de 1 a 4
        {0, 0, 0, 0},
        // letra S neuronios de 1 a 4
        {0, 0, 0, 1},
        // Letra X neuronios de 1 a 4
        {0, 0, 1, 0},
        // Letra W neuronios de 1 a 4
        {0, 0, 1, 1},
        // Número 4 neuronios de 1 a 4
        {0, 1, 0, 0},
        // Letra C neuronios de 1 a 4
        {0, 1, 0, 1},
        // Letra R neuronios de 1 a 4
        {0, 1, 1, 0},
        // Letra G neuronios de 1 a 4
        {0, 1, 1, 1},
        // Letra N neuronios de 1 a 4
        {1, 0, 0, 0}
    };
    // Entradas das letras para o treinamento matriz [70][9]
    public static int[][] entradas = {
        // Letra Q saida 0000
        {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
            0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0,
            0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1,
            0, 0, 0, 0, 0, 0, 0, 0},
        // Letra S saida 0001
        {0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
            0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
            0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0,
            0, 0, 1, 1, 0, 0, 0, 0},
        // Letra X saida 0010
        {0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,
            0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
            0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
            0, 0, 1, 0, 0, 0, 1, 0},
        // Letra W saida 0011
        {1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1,
            0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0,
            0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0,
            0, 0, 0, 1, 0, 1, 0, 0},
        // Número 4 saida 0100
        {0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
            0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
            0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
            0, 0, 0, 0, 0, 1, 0, 0},
        // Letra C saida 0101
        {0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
            0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
            0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
            0, 0, 0, 1, 1, 1, 0, 0},
        // Letra R saida 0110
        {0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
            0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0,
            0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0,
            0, 0, 0, 1, 0, 1, 0, 0},
        // Letra G saida 0111
        {0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
            0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0,
            0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1,
            0, 0, 0, 1, 1, 1, 1, 0},
        // Letra N saida 1000
        {1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1,
            0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1,
            1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1,
            1, 1, 0, 0, 0, 0, 1, 1},};

    
    public static int calculaNet(int[][] entradas, int[][] pesos, int letraEntrada,
            int neuronio) {
        int net = 0;
        for (int i = 0; i < entradas[letraEntrada].length; i++) {
            net = net + (entradas[letraEntrada][i] * pesos[neuronio][i]);
        }
        return net;
    }

    
    public static int calculaFNet(int net) {
        int saida = 0;
        if (net >= 0) {
            saida = 1;
        }
        return saida;
    }
    

    public static void calcularNovosPesos(int[][] pesos, int[][] entradas, int erro,
            int taxaAprendizado, int letraEntrada, int neuronio) {
        for (int i = 0; i < pesos[neuronio].length; i++) {
            pesos[neuronio][i] = pesos[neuronio][i] + taxaAprendizado * (erro)
                    * entradas[letraEntrada][i];
        }
    }

    public static int calculaNetExterno(int[] entradas, int[][] pesos, int neuronio) {
        int net = 0;
        for (int i = 0; i < entradas.length; i++) {
            net = net + (entradas[i] * pesos[neuronio][i]);
        }
        return net;
    }

    public static void main(String[] args) {
        int letraEntrada = 0;
        int net = 0;
        int encontrado = 0;
        int desejado = 0;
        int erro = 0;
        boolean error = true;

        
        while (error == true) {
            boolean teveErro = false;
            System.out.println("Aguarde, a rede esta sendo treinada...");
            for (int neuronio = 0; neuronio < 4; neuronio++) {
                net = calculaNet(entradas, pesosNeuronio, letraEntrada,
                        neuronio);
                encontrado = calculaFNet(net);
                desejado = saidasNeuronio[letraEntrada][neuronio];
                if (encontrado == desejado) {
                } else {
                    erro = desejado - encontrado;
                    calcularNovosPesos(pesosNeuronio, entradas, erro,
                            TAXA_DE_APRENDIZADO, letraEntrada, neuronio);
                    teveErro = true;
                }
            }
            
            if (!teveErro) {
                if (letraEntrada < 8) {
                    letraEntrada++;
                } else {
                    error = false;
                }

            } else {
                letraEntrada = 0;
            }

        }
        System.out.println("Treinamento Finalizado.  \n");

        boolean sair = false;

        while (sair == false) {
            String ia = "";

            do {

                ia = JOptionPane.showInputDialog("Entre com os 70 dígitos binários");

            } while (ia == null || ia.length() != 70);

            String[] arrayDeString = new String[70];

            for (int i = 0; i < arrayDeString.length; i++) {
                arrayDeString[i] = ia.charAt(i) + "";
            }
            
            int[] entrada = new int[70];
            entrada[0] = 1;
            try {
                String message = "";
                for (int i = 1; i < entrada.length; i++) {

                    entrada[i] = Integer.parseInt(arrayDeString[i]);

                    if (i == 0) {
                        message = "Bias " + entrada[i];
                        message = message + "\n";
                        System.out.print("\t");
                    } else {

                        message = message + entrada[i] + "     ";
                        if (i % 7 == 0) {
                            message = message + "\n";
                        }
                    }
                }
                System.out.println("\n");

                int[] saidas = new int[4];
                int nets = 0;
                for (int neuronio = 0; neuronio < 4; neuronio++) {
                    nets = calculaNetExterno(entrada, pesosNeuronio, neuronio);
                    saidas[neuronio] = calculaFNet(nets);
                }
                
                for (int i = 0; i < saidasNeuronio.length; i++) {
                    if (saidas[0] == saidasNeuronio[i][0]
                            && saidas[1] == saidasNeuronio[i][1]
                            && saidas[2] == saidasNeuronio[i][2]
                            && saidas[3] == saidasNeuronio[i][3]) {
                        
                        switch (i) {
                            case 0:
                                message = message + "\n\nSua entrada foi a Letra Q";
                                break;
                            case 1:
                                message = message + "\n\nSua entrada foi a Letra S";
                                break;
                            case 2:
                                message = message + "\n\nSua entrada foi a Letra X";
                                break;
                            case 3:
                                message = message + "\n\nSua entrada foi a Letra W";
                                break;
                            case 4:
                                message = message + "\n\nSua entrada foi o Número 4";
                                break;
                            case 5:
                                message = message + "\n\nSua entrada foi a Letra C";
                                break;
                            case 6:
                                message = message + "\n\nSua entrada foi a Letra R";
                                break;
                            case 7:
                                message = message + "\n\nSua entrada foi a Letra G";
                                break;
                            case 8:
                                message = message + "\n\nSua entrada foi a Letra N";
                                break;

                            default:
                                System.out.println("Não foi encontrado sua entrada, verifique sua letra binária");
                                break;
                        }

                        message = message + "\nSaída: " + saidas[0] + ""
                                + saidas[1] + "" + saidas[2] + "" + saidas[3];

                    }

                }
                JOptionPane.showMessageDialog(null, message);
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Número incorreto, Favor redigitar");
            }
            sair = true;
        }
    }
}

8 Respostas

Fyowti
//isso é um comentário
leonardoterrao

Fica a dica,

a melhor maneira de você saber o que as linhas de código faz e conseguir entender é fazendo debug e ir comentando.
Coloque o Breakpoint em todas as linhas e debuga ele algumas vezes e depois comece a comentar.

mrfs

Certo, eu sei que com //codigo ou com bloco /*codigo*/ é como se comenta, mais minha dúvida é nesse código abaixo, o que os métodos estão fazendo? ou as linhas...

public static int calculaNet(int[][] entradas, int[][] pesos, int letraEntrada,  
            int neuronio) {  
        int net = 0;  
        for (int i = 0; i < entradas[letraEntrada].length; i++) {  
            net = net + (entradas[letraEntrada][i] * pesos[neuronio][i]);  
        }  
        return net;  
    }  
  
      
    public static int calculaFNet(int net) {  
        int saida = 0;  
        if (net >= 0) {  
            saida = 1;  
        }  
        return saida;  
    }  
      
  
    public static void calcularNovosPesos(int[][] pesos, int[][] entradas, int erro,  
            int taxaAprendizado, int letraEntrada, int neuronio) {  
        for (int i = 0; i < pesos[neuronio].length; i++) {  
            pesos[neuronio][i] = pesos[neuronio][i] + taxaAprendizado * (erro)  
                    * entradas[letraEntrada][i];  
        }  
    }  
  
    public static int calculaNetExterno(int[] entradas, int[][] pesos, int neuronio) {  
        int net = 0;  
        for (int i = 0; i < entradas.length; i++) {  
            net = net + (entradas[i] * pesos[neuronio][i]);  
        }  
        return net;  
    }  
  
    public static void main(String[] args) {  
        int letraEntrada = 0;  
        int net = 0;  
        int encontrado = 0;  
        int desejado = 0;  
        int erro = 0;  
        boolean error = true;  
  
          
        while (error == true) {  
            boolean teveErro = false;  
            System.out.println("Aguarde, a rede esta sendo treinada...");  
            for (int neuronio = 0; neuronio < 4; neuronio++) {  
                net = calculaNet(entradas, pesosNeuronio, letraEntrada,  
                        neuronio);  
                encontrado = calculaFNet(net);  
                desejado = saidasNeuronio[letraEntrada][neuronio];  
                if (encontrado == desejado) {  
                } else {  
                    erro = desejado - encontrado;  
                    calcularNovosPesos(pesosNeuronio, entradas, erro,  
                            TAXA_DE_APRENDIZADO, letraEntrada, neuronio);  
                    teveErro = true;  
                }  
            }  
              
            if (!teveErro) {  
                if (letraEntrada < 8) {  
                    letraEntrada++;  
                } else {  
                    error = false;  
                }  
  
            } else {  
                letraEntrada = 0;  
            }  
  
        }  
        System.out.println("Treinamento Finalizado.  \n");  
  
        boolean sair = false;  
  
        while (sair == false) {  
            String ia = "";  
  
            do {  
  
                ia = JOptionPane.showInputDialog("Entre com os 70 dígitos binários");  
  
            } while (ia == null || ia.length() != 70);  
  
            String[] arrayDeString = new String[70];  
  
            for (int i = 0; i < arrayDeString.length; i++) {  
                arrayDeString[i] = ia.charAt(i) + "";  
            }  
              
            int[] entrada = new int[70];  
            entrada[0] = 1;  
            try {  
                String message = "";  
                for (int i = 1; i < entrada.length; i++) {  
  
                    entrada[i] = Integer.parseInt(arrayDeString[i]);  
  
                    if (i == 0) {  
                        message = "Bias " + entrada[i];  
                        message = message + "\n";  
                        System.out.print("\t");  
                    } else {  
  
                        message = message + entrada[i] + "     ";  
                        if (i % 7 == 0) {  
                            message = message + "\n";  
                        }  
                    }  
                }  
                System.out.println("\n");  
  
                int[] saidas = new int[4];  
                int nets = 0;  
                for (int neuronio = 0; neuronio < 4; neuronio++) {  
                    nets = calculaNetExterno(entrada, pesosNeuronio, neuronio);  
                    saidas[neuronio] = calculaFNet(nets);  
                }  
                  
                for (int i = 0; i < saidasNeuronio.length; i++) {  
                    if (saidas[0] == saidasNeuronio[i][0]  
                            && saidas[1] == saidasNeuronio[i][1]  
                            && saidas[2] == saidasNeuronio[i][2]  
                            && saidas[3] == saidasNeuronio[i][3]) {  
                          
                        switch (i) {  
                            case 0:  
                                message = message + "\n\nSua entrada foi a Letra Q";  
                                break;  
                            case 1:  
                                message = message + "\n\nSua entrada foi a Letra S";  
                                break;  
                            case 2:  
                                message = message + "\n\nSua entrada foi a Letra X";  
                                break;  
                            case 3:  
                                message = message + "\n\nSua entrada foi a Letra W";  
                                break;  
                            case 4:  
                                message = message + "\n\nSua entrada foi o Número 4";  
                                break;  
                            case 5:  
                                message = message + "\n\nSua entrada foi a Letra C";  
                                break;  
                            case 6:  
                                message = message + "\n\nSua entrada foi a Letra R";  
                                break;  
                            case 7:  
                                message = message + "\n\nSua entrada foi a Letra G";  
                                break;  
                            case 8:  
                                message = message + "\n\nSua entrada foi a Letra N";  
                                break;  
  
                            default:  
                                System.out.println("Não foi encontrado sua entrada, verifique sua letra binária");  
                                break;  
                        }  
  
                        message = message + "\nSaída: " + saidas[0] + ""  
                                + saidas[1] + "" + saidas[2] + "" + saidas[3];  
  
                    }  
  
                }  
                JOptionPane.showMessageDialog(null, message);  
            } catch (Exception e) {  
                JOptionPane.showMessageDialog(null, "Número incorreto, Favor redigitar");  
            }  
            sair = true;  
        }  
    }  
}
lele_vader

Parece um programa que faz uma rede neural

mrfs

Exato, rede neural.

mrfs

me ajudem a comentar esse código

denisspitfire

da 128 a 160 é um case… cases costumam ser usados para escolher opções. (ja fiz minha contribuição, vamu la galera faltam umas 300 linhas)

Pow cara, fala alguma coisa do que o código faz, ou tem que fazer… da uma iniciada ae.

InicianteJavaHenriqu

Onde você achou este código :?:

:thumbup:

Criado 24 de maio de 2012
Ultima resposta 25 de mai. de 2012
Respostas 8
Participantes 6