Ir para conteúdo
Fórum Script Brasil
  • 0

Perceptron - aprendizado


jouber

Pergunta

Olá galera,

Estou tentando criar um programa para ler determinados pesos definidos e então fazer com que sejam ajustados para que o mesmo siga para o resultado 1 ou -1.

O problema está ocorrendo quando vou declarar a seguinte parte do meu código" double dClassifica = classifica[dEntrada]; ", o compilador DEV informa a seguinte mensagem de erro: invalid types 'double ()

(double)[double]' for array subscript.

alguém poderia me ajudar nessa parte do código?

Segue abaixo o codigo completo:

[code]#include <cstdlib>

#include <iostream>
#include <stdio.h>
#include <math.h>
double Pesos[2] = {0.0, 0.0};
double classifica(double entrada){
double resultado[2];
double somaPeso;
double limite;
resultado[0] = entrada*Pesos[0];
resultado[1] = 1.0*Pesos[1];
somaPeso = resultado[0] + resultado[1];
if(somaPeso >= 0.0){
limite = 1.0;
}else{
limite = -1.0;
}
return limite;
}
int main(){
double entrada[2] = {1.0, 2.0};
double saida[2] = {1.0, -1.0};
bool aprendizado = false;
while(!aprendizado){
aprendizado = true; //saida do estado atual do aprendizado
std::cout << entrada[0]<< " , " << entrada[0] <<" Eval = "
<< classifica(entrada[0]) << std::endl;
std::cout << entrada[1]<< " , " << entrada[1] <<" Eval = "
<< classifica(entrada[1]) << std::endl;
std::cout << "Pesos = " <<Pesos[0] <<" , " << Pesos[1]
<< std::endl << std::endl;
int contador = 0;
while (contador<2){
double dEntrada = entrada[contador];
double dSaida = saida[contador];
double dClassifica = classifica[dEntrada];
if(dClassifica != dSaida){
Pesos[0] = Pesos[0]+ dSaida*dEntrada;
Pesos[1] = Pesos[1]+ dSaida*1.0;
aprendizado = false;
}
++contador;
}
}[/code]
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Primeiro, arrays só aceitam número inteiros em seus subscritos. Então, se esse "classifica" fosse um array, o seu dEntrada deveria ser um int. Porém, pelo que vejo no seu código, seu classifica é uma função. Neste caso você não deve usar o operador de subscrito e sim o operador de chamada de função. Ex:

double dClassifica = classifica(dEntrada);
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...