Skip to content

fabiosperotto/Perceptron

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Perceptron

Implementação simples de perceptrons para o problema de reconhecimento de números MNIST[1] [2]. Este projeto baseia-se em implementações voltadas para PHP como o do desenvolvedor jtet[3] com a adição de uma interface de uso por linha de comando (exemplos a seguir). Utiliza especificação de treinamento implementadas em C por Matt Lind[4].

Para instalação:

composer install

Não é necessário usar a interface em linha de comando (run.php) pode reutilizar a classe Perceptron como desejar em seu programa.

require_once __DIR__ . '/vendor/autoload.php';

use Neural\Perceptron;

$perceptron = new Perceptron($quantidadeEntradas);
$perceptron->train($conjuntoEntradas, $alvo);
$teste = $perceptron->test($entradasParaTeste);

Existem funções para importação de dados de CSV e exportação de pesos em arquivo JSON para posterior uso em testes.

Usando a interface em linha de comando

Testado somente em ambiente Linux.

asciicast

Treinamento

Gera pesos randômicos para todos os neurônios (valores até um máximo de 0.4999...)
Para cada neurônio criado (10 Perceptrons)    
    erro = alvo - saída do neurônio
    Para todos os pesos i
        peso[i] += taxa_aprendizado * erro * entrada[i]
    Se (erro != desejado) somaErros++

Testes

##Cenário 1 Teste realizado após treinamento com 15 épocas/eras e 18 mil imagens (30 minutos), não utiliza bias nem função de ativação:

Pre-Testes

Testes

##Cenário 2 Teste realizado após treinamento com 15 épocas/eras e 60 mil imagens (103 minutos), com bias e usa função de ativação sigmoide:

Pre-Testes

Testes

##Cenário 3 Teste realizado após treinamento com 15 épocas/eras e 60 mil imagens (118 minutos), com bias, usa função de ativação sigmoide mas normaliza as entradas de dados dividindo o pixel por 255:

Pre-Testes

Testes

Referências:

  1. https://en.wikipedia.org/wiki/MNIST_database
  2. http://yann.lecun.com/exdb/mnist/
  3. https://github.com/jtet/Perceptron
  4. https://github.com/mmlind/mnist-1lnn/

About

Simple Perceptron in PHP mainly for MNIST problem

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages