TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Step by Step python

Por:   •  3/9/2017  •  Relatório de pesquisa  •  2.056 Palavras (9 Páginas)  •  245 Visualizações

Página 1 de 9

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <time.h>

#define ENTRADAS 1

#define SAIDAS 2

#define NR_AMOSTRAS 5

#define NR_NEURON_O 3

#define CAMADAS_O 2

#define EPOCAS 10000000 //14:05 //21:18

#define TX_APRENDIZADO 0.7

//altura/Motor1/Motor2

double cj_treinamento[NR_AMOSTRAS][ENTRADAS+SAIDAS+1] = {

{0.26, 0.1289, 0.1245},

{0.35, 0.1278, 0.1256},

{0.44, 0.1267, 0.1267},

{0.75, 0.1256, 0.1278},

{1.06, 0.1245, 0.1289},

};

double w_e_o[ENTRADAS+1][NR_NEURON_O]; //sinapses entrada para oculta 1

double w_o_o[NR_NEURON_O+1][NR_NEURON_O]; // sinapses oculta 1 para oculta 2

double w_o_s[NR_NEURON_O+1][SAIDAS]; // sinapses oculta 2 para saida

double saida_o[NR_NEURON_O][CAMADAS_O]; //saidas das camadas ocultas

double saida_s[SAIDAS]; //saida final

double delta_saida[SAIDAS];

double gradiente_oculta[NR_NEURON_O][CAMADAS_O]; // gradiente

double delta_oculta[NR_NEURON_O][CAMADAS_O]; //delta

/*

Cabecalho das funcoes auxiliares

*/

void inicializa_sinapses();

int gera_nr_aleatorios();

void mostrar_sinapses();

double f_sigmoid(double net);

void calcular_saidas(double entradas[ENTRADAS]);

void treinar_RNA();

double calcular_erro(double desejado, double saida);

void menu();

void calcular_delta_saida(double desejado, double desejado2);

void calcular_delta_oculta();

void calcular_delta_oculta2();

void calcular_gradiente_oculta();

void calcular_gradiente_oculta2();

void ajustar_pesos_sinapticos(double entradas[ENTRADAS]);

void salvaSinapses();

/*

Função principal

*/

int main()

{

srand(time(NULL));

while (1) {

menu();

}

return 0;

}

void inicializa_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++)

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

//inicializa pesos sinapticos da camda oculta 1 para camada oculta 2

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

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");

}

...

Baixar como (para membros premium)  txt (8.9 Kb)   pdf (56.5 Kb)   docx (17.2 Kb)  
Continuar por mais 8 páginas »
Disponível apenas no TrabalhosGratuitos.com