Essays.club - TCC, Modelos de monografias, Trabalhos de universidades, Ensaios, Bibliografias
Pesquisar

Step by Step python

Por:   •  7/11/2018  •  2.063 Palavras (9 Páginas)  •  321 Visualizações

Página 1 de 9

...

for (j =0; j < NR_NEURON_O; j++)

w_o_o[i][j] = gera_nr_aleatorios();

// Inicializa pesos sinapticos da camada oculta para a saida

for (i = 0; i < NR_NEURON_O+1; i++)

for (j =0; j < SAIDAS; j++)

w_o_s[i][j] = gera_nr_aleatorios();

}

int gera_nr_aleatorios()

{

int numeros[2] = {-1, 1};

// Retorna -1 ou 1

return (numeros[rand() % 2]);

}

void mostrar_sinapses()

{

int i, j;

// Inicializa pesos sinapticos da entrada para a camada oculta

for (i = 0; i < ENTRADAS+1; i++) {

for (j =0; j < NR_NEURON_O; j++)

printf("w_e_o[%d][%d]: %f \n", i, j, w_e_o[i][j]);

printf("\n");

}

//mostra pesos sinapticos da 1camada oculata para a 2camada oculta

for (i = 0; i < NR_NEURON_O+1; i++) {

for (j =0; j < NR_NEURON_O; j++)

printf("w_o_o[%d][%d]: %f \n", i, j, w_o_o[i][j]);

printf("\n");

}

// Inicializa pesos sinapticos da camada oculta para a saida

for (i = 0; i < NR_NEURON_O+1; i++) {

for (j =0; j < SAIDAS; j++)

printf("w_o_s[%d][%d]: %f \n", i, j, w_o_s[i][j]);

printf("\n");

}

}

double f_sigmoid(double net){

return 1 / (1 + exp(-net));

}

void calcular_saidas(double entradas[ENTRADAS])

{

int i, j;

// Calcular os nets da entrada para a camada oculta

for (i = 0; i < NR_NEURON_O; i++) {

saida_o[i][0] = 0.0;

saida_o[i][0] += w_e_o[0][i] * 1; // Calcula saida para bias

for (j = 1; j < ENTRADAS+1; j++)

saida_o[i][0] += w_e_o[j][i] * entradas[j-1];

// Calcular a saida de saida_o[i][0]

saida_o[i][0] = f_sigmoid(saida_o[i][0]);

}

// Calcular net da camada oculta 1 para camada oculta 2

for (i = 0; i < NR_NEURON_O; i++) {

saida_o[i][1] = 0.0;

saida_o[i][1] += w_o_o[0][i] * 1; // Calcula saida para bias

for (j = 1; j < NR_NEURON_O+1; j++)

saida_o[i][1] += w_o_o[j][i] * saida_o[j-1][0];

saida_o[i][1] = f_sigmoid(saida_o[i][1]);

}

// Calcular os nets da camada oculta 2 para a saida

for (i = 0; i < SAIDAS; i++) {

saida_s[i] = 0.0;

saida_s[i] += w_o_s[0][i] * 1; // Calcula saida para bias

for (j = 1; j < NR_NEURON_O+1; j++)

saida_s[i] += w_o_s[j][i] * saida_o[j-1][1];

saida_s[i] = f_sigmoid(saida_s[i]);

}

}

void treinar_RNA()

{

int i, j, k;

double entradas[ENTRADAS];

for (i = 1; i <= EPOCAS; i++) {

printf("epoca %d\n", i);

for (j = 0; j < NR_AMOSTRAS; j++) {

for(k = 0; k < ENTRADAS; k++)

entradas[k] = cj_treinamento[j][k];

// Feedforward

calcular_saidas(entradas);

// Backward (backpropagation)

calcular_delta_saida(cj_treinamento[j][1], cj_treinamento[j][2]);

calcular_gradiente_oculta();

calcular_delta_oculta();

calcular_gradiente_oculta2();

calcular_delta_oculta2();

ajustar_pesos_sinapticos(entradas);

}

}

}

double calcular_erro(double desejado, double saida)

{

return desejado - saida;

}

void menu()

{

int opcao, i;

double entradas[ENTRADAS];

printf("Rede Neural Perceptron de Multiplas Camadas\n");

...

Baixar como  txt (8.9 Kb)   pdf (54.7 Kb)   docx (16.8 Kb)  
Continuar por mais 8 páginas »
Disponível apenas no Essays.club