NeuralNetwork
 Tudo Estruturas de dados Funções Páginas
Referência à classe Neuron

Classe Neurônio. Mais...

#include <neuron.h>

Tipos Públicos

enum  ActivationFunction { LINEAR, STEP, SIGMOID }
 

Membros públicos

void addBuffer (double)
 
void changeInput (vector< double >)
 
void changeWeight (int, double)
 
double deltaWeight (int)
 
ActivationFunction getActivationFunction ()
 Retorna o tipo da função de ativação (ex.
 
const double getDelta () const
 Retorna o valor do delta do neurônio.
 
const double getError () const
 Retorna o valor do erro do neurônio.
 
double getExpectedOutput () const
 Retorna o valor da sada esperada do neurônio.
 
multimap< double, double > getMyInputs ()
 
double getMyLoadBias ()
 
double getOutput ()
 Retorna a saída gerada para o neurônio.
 
double getValueSumFunction ()
 Retorna a saída da função soma.
 
double getWi (int)
 
double getXi (int)
 
double linearFunction ()
 Função de ativação - Combinação linear Retorna o mesmo valor da função soma.
 
 Neuron ()
 Construtor padrão.
 
 Neuron (ActivationFunction)
 Construtor.
 
 Neuron (vector< double >, ActivationFunction)
 Construtor.
 
void print ()
 
double radianToDegree (double)
 Método para transformar ângulos em radianos para graus.
 
double randDouble (double, double)
 Método para gerar números aleatórios de ponto flutuante.
 
void setActivationFunction (ActivationFunction)
 Setter para o tipo de função de ativação.
 
void setBias (double)
 
void setDelta (double)
 Setter para o valor do delta do neurônio.
 
void setError (double)
 Setter para o valor do erro do neurônio.
 
void setExpectedOutput (double)
 Setter para o valor da sada esperada do neurônio.
 
void setInput (double)
 Preenche uma única entrada para o neurônio na primeira iterao.
 
void setInput (double, double)
 Preenche uma única entrada e peso para o neurônio e armazena o valor no membro privado myInputs.
 
void setInputs (vector< double >)
 Copia o vector com as entradas(ou saídas da camada anterior) para o neurônio.
 
void setInputs (vector< double >, vector< double >, double)
 Copia o vector com as entradas(ou saídas da camada anterior) para o neurônio.
 
void setLoadBias ()
 Setter para o bias Atribui ao membro privado bias um valor randômico para o peso sináptico.
 
double sigmoidFunction ()
 Função de ativação - Sigmoidal Retorna a tangente hiperbólica do resultado da função soma.
 
void startAssociation ()
 
double stepFunction ()
 Função de ativação - Degrau Simétrico Se o valor retornado pela função soma for maior ou igual a zero (v >= 0) ou retorna -1 se este valor for menor que zero (v < 0)
 
void sumFunction (multimap< double, double >)
 Função de soma.
 
void sumFunction ()
 Função de soma.
 
 ~Neuron ()
 Destrutor Despacho de memória.
 

Atributos Privados

ActivationFunction myActFunction
 
vector< double > myBuffer
 
double myDelta
 
double myError
 
double myExpectedOutput
 
multimap< double, double > myInputs
 
vector< pair< double, double > > MYINPUTS
 
double myLoadBias
 
double myValueSumFunction
 

Descrição detalhada

Classe Neurônio.

Autor
Herinson B. Rodrigues
O neurônio artificial é uma estrutura lógico-matemática que procura simular a forma,
o comportamento e as funções de um neurônio biológico. Assim sendo, os dendritos foram
substituídos por entradas, cujas ligações com o corpo celular artificial são realizadas
através de elementos chamados de peso (simulando as sinapses). Os estímulos captados pelas
entradas são processados pela função de soma, e o limiar de disparo do neurônio biológico
foi substituído pela função de transferência.

Representação do neurônio

neuron.jpg

Documentação dos Construtores & Destrutor

Neuron::Neuron ( Neuron::ActivationFunction  func)

Construtor.

Construtor apenas com a função de ativação.

Parâmetros
ActivationFunctionTipo da função de ativação

Referências setActivationFunction() e setLoadBias().

{
this->setActivationFunction(func);
myValueSumFunction = 0;
this->setLoadBias();
}

+ Grafo de chamadas desta função:

Neuron::Neuron ( vector< double >  inputs,
ActivationFunction  func 
)

Construtor.

Inicializa o membro myInputs, ou seja, copia o vetor com as entradas para o membro da clase

Parâmetros
vector<double>Entradas do neurônio
ActivationFunctionTipo da função de ativação

Referências randDouble(), setActivationFunction(), setInputs() e setLoadBias().

{
this->setActivationFunction(func);
this->setLoadBias();
vector<double>::iterator it;
double sum;
for(it = inputs.begin(); it != inputs.end(); it++) {
double num = this->randDouble(-1.0, 1.0);
sum += ( (*it) * num );
}
// Soma com o bias
sum = sum + myLoadBias;
// Setter para as entradas e valor da fun&ccedil;&atilde;o soma
myValueSumFunction = sum;
this->setInputs(inputs);
}

+ Grafo de chamadas desta função:

Documentação dos métodos

Neuron::ActivationFunction Neuron::getActivationFunction ( )

Retorna o tipo da função de ativação (ex.

: LINEAR, DEGRAU, SIGMOIDAL)

Parâmetros
voidNenhum
Retorna
ActivationFunction Tipo de função de ativação utilizada
{
return myActFunction;
}
const double Neuron::getDelta ( ) const

Retorna o valor do delta do neurônio.

Parâmetros
voidNenhum
Retorna
const double
{
return myDelta;
}
const double Neuron::getError ( ) const

Retorna o valor do erro do neurônio.

Parâmetros
voidNenhum
Retorna
const double
{
return myError;
}
double Neuron::getExpectedOutput ( ) const

Retorna o valor da sada esperada do neurônio.

Parâmetros
voidNenhum
Retorna
const double
{
return myExpectedOutput;
}
double Neuron::getOutput ( )

Retorna a saída gerada para o neurônio.

Parâmetros
voidNenhum
Retorna
double Saída do neurônio

Referências linearFunction(), sigmoidFunction(), stepFunction() e sumFunction().

{
double output;
this->sumFunction();
switch(myActFunction) {
case LINEAR:
output = this->linearFunction(); break;
case STEP:
output = this->stepFunction(); break;
case SIGMOID:
output = this->sigmoidFunction(); break;
}
return output;
}

+ Grafo de chamadas desta função:

double Neuron::getValueSumFunction ( )

Retorna a saída da função soma.

Parâmetros
voidNenhum
Retorna
double Valor da função soma
{
return myValueSumFunction;
}
double Neuron::linearFunction ( )

Função de ativação - Combinação linear Retorna o mesmo valor da função soma.

Parâmetros
voidNenhum
Retorna
double Resultado da função ativação
Veja também
sumFunction()

Referenciado por getOutput().

{
return myValueSumFunction;
}

+ Este é o diagrama das funções que utilizam esta função:

double Neuron::radianToDegree ( double  radian)

Método para transformar ângulos em radianos para graus.

Parâmetros
doubleradian double Valor do ângulo em radianos
Retorna
double Valor do ângulo em em graus
{
return (radian * 180) / M_PI;
}
double Neuron::randDouble ( double  low,
double  upp 
)

Método para gerar números aleatórios de ponto flutuante.

Parâmetros
doublelow Limite inferior
doubleupp Limite superior
Retorna
double Um número de ponto flutuante aleatório

Referenciado por Neuron(), setInput(), setInputs() e setLoadBias().

{
double num = ( static_cast <double> (rand() % 100) / 100.0 );
return low + num * (upp - low);
}

+ Este é o diagrama das funções que utilizam esta função:

void Neuron::setActivationFunction ( Neuron::ActivationFunction  func)

Setter para o tipo de função de ativação.

Parâmetros
ActivationFunctionfunc Função de ativação
Retorna
void Nenhum

Referenciado por Neuron().

{
myActFunction = func;
}

+ Este é o diagrama das funções que utilizam esta função:

void Neuron::setDelta ( double  delta)

Setter para o valor do delta do neurônio.

Parâmetros
doubledelta
Retorna
void Nenhum
{
myDelta = delta;
}
void Neuron::setError ( double  error)

Setter para o valor do erro do neurônio.

Parâmetros
doubleerror
Retorna
void Nenhum
{
myError = error;
}
void Neuron::setExpectedOutput ( double  expectedOutput)

Setter para o valor da sada esperada do neurônio.

Parâmetros
doubleexpectedOutput
Retorna
void Nenhum
{
myExpectedOutput = expectedOutput;
}
void Neuron::setInput ( double  input)

Preenche uma única entrada para o neurônio na primeira iterao.

A entrada repassada para o membro privado myInputs

Parâmetros
doubleinput contendo um número com a entrada
Retorna
void Nenhum

Referências randDouble().

{
double num = this->randDouble(-1.0, 1.0);
myInputs.insert( pair<double, double>(num, input) );
MYINPUTS.push_back( pair<double, double>(num, input) );
}

+ Grafo de chamadas desta função:

void Neuron::setInput ( double  input,
double  load 
)

Preenche uma única entrada e peso para o neurônio e armazena o valor no membro privado myInputs.

Parâmetros
doubleinput número contendo a entrada
doubleload número contendo o peso da respectiva entrada
Retorna
Nenhum
{
myInputs.insert( pair<double, double>(load, input) );
MYINPUTS.push_back( pair<double, double>(load, input) );
}
void Neuron::setInputs ( vector< double >  inputs)

Copia o vector com as entradas(ou saídas da camada anterior) para o neurônio.

A(s) entrada(s) (são) armazenada(s) no membro privado myInputs. Os pesos so aleatorios na primeira iterao

Parâmetros
vector<double>inputs contendo as entradas para o neurônio
Retorna
void Nenhum

Referências randDouble().

Referenciado por Neuron().

{
vector<double>::iterator it;
for(it = inputs.begin(); it != inputs.end(); it++)
{
double num = this->randDouble(-1.0, 1.0);
myInputs.insert( pair<double, double>(num, *it) );
MYINPUTS.push_back( pair<double, double>(num, *it) );
}
}

+ Grafo de chamadas desta função:

+ Este é o diagrama das funções que utilizam esta função:

void Neuron::setInputs ( vector< double >  inputs,
vector< double >  weights,
double  bias 
)

Copia o vector com as entradas(ou saídas da camada anterior) para o neurônio.

A(s) entrada(s) (são) armazenada(s) no membro privado myInputs. Os pesos no so aleatorios, pois, os mesmos encontran-se dispostos no segundo vector. O segundo parmetro utilizado no setter para o pesso do baias

Parâmetros
vector<double>inputs contendo as entradas para o neurônio
Retorna
void Nenhum
{
vector<double>::iterator it;
vector<double>::iterator it2;
for(it = inputs.begin(), it2 = weights.begin(); it != inputs.end(); it++, it2++)
{
myInputs.insert( pair<double, double>(*it2, *it) );
MYINPUTS.push_back( pair<double, double>(*it2, *it) );
}
myLoadBias = bias;
}
void Neuron::setLoadBias ( )

Setter para o bias Atribui ao membro privado bias um valor randômico para o peso sináptico.

Retorna
void Nenhum

Referências randDouble().

Referenciado por Neuron().

{
myLoadBias = this->randDouble(-1.0, 1.0);
}

+ Grafo de chamadas desta função:

+ Este é o diagrama das funções que utilizam esta função:

double Neuron::sigmoidFunction ( )

Função de ativação - Sigmoidal Retorna a tangente hiperbólica do resultado da função soma.

Parâmetros
voidNenhum
Retorna
double Resultado da função ativação

Referenciado por getOutput().

{
return tanh(myValueSumFunction);
}

+ Este é o diagrama das funções que utilizam esta função:

double Neuron::stepFunction ( )

Função de ativação - Degrau Simétrico Se o valor retornado pela função soma for maior ou igual a zero (v >= 0) ou retorna -1 se este valor for menor que zero (v < 0)

Parâmetros
voidNenhum
Retorna
double Resultado da função ativação

Referenciado por getOutput().

{
if(myValueSumFunction >= 0.0)
return 1;
return 0;
}

+ Este é o diagrama das funções que utilizam esta função:

void Neuron::sumFunction ( multimap< double, double >  inputs)

Função de soma.

Parâmetros
multimap<double,double>inputs Um multimap contendo as entradas e pesos
Retorna
void Nenhum
{
multimap<double, double>::iterator it;
double sum = 0;
for(it = inputs.begin(); it != inputs.end(); it++) {
sum += (it->first * it->second);
}
// Soma com o bias
sum = sum + myLoadBias;
// Setter para as entradas e valor da fun&ccedil;&atilde;o soma
myValueSumFunction = sum;
}
void Neuron::sumFunction ( )

Função de soma.

Parâmetros
voidNenhum
Retorna
void Nenhum

Referenciado por getOutput().

{
vector < pair <double,double> >::iterator it2;
multimap<double, double>::iterator it;
double sum = 0;
for(it = myInputs.begin(), it2 = MYINPUTS.begin() ; it != myInputs.end(); it++ , it2++)
//sum += ( (it2->first * it2->second) + myLoadBias);
//sum += ( (it->first * it->second) + myLoadBias);
sum += (it2->first * it2->second);
// Setter para as entradas e valor da fun&ccedil;&atilde;o soma
//myValueSumFunction = sum;
myValueSumFunction = sum + myLoadBias;
}

+ Este é o diagrama das funções que utilizam esta função:


A documentação para esta classe foi gerada a partir dos seguintes ficheiros: