Essa atividade tinha como objectivo o desenvolvimento de um Perceptron Multicamadas (MLP) para a solução do problema XOR. Nesse repositório, você encontrará duas implementações do MLP, uma usando Go (e a lib gonum
) e outra usando Python (e a lib pytorch
). A Implementação em Go foi feita do zero, sem o uso de bibliotecas de terceiros, enquanto a implementação em Python foi feita usando a biblioteca pytorch
para facilitar a implementação do modelo, usando SGD
como otimizador e BCELoss
como função de perda.
.
├── go
│ ├── go.mod
│ ├── go.sum
│ └── src
│ ├── main.go
│ ├── math
│ │ └── math.go
│ ├── perceptron
│ │ └── main.go
│ └── utils
│ ├── text.go
│ └── time.go
├── python
│ ├── requirements.txt
│ └── src
│ ├── main.py
│ ├── perceptron
│ │ └── main.py
│ └── utils
│ ├── math.py
│ └── text.py
└── README.md
A estrutura do repositório é bem simples. Dentro da pasta go
você encontrará o código em Go e dentro da pasta python
você encontrará o código em Python. Dentro de cada uma dessas pastas, você encontrará um arquivo main.go
ou main.py
que é o arquivo principal do projeto. Dentro da pasta perceptron
você encontrará o código do Perceptron Multicamadas (orientado a objetos) e dentro da pasta utils
você encontrará funções utilitárias e, no caso do Go, também existe uma pasta math
com funções matemáticas (para compensar a falta de funções matemáticas que existem no numpy
do Python).
Para executar o código em Go, você deve ter o Go instalado na sua máquina. Para instalar o Go, siga as instruções aqui. Após instalar o Go, você deve executar o seguinte comando:
go run src/main.go
Você também pode compilar o código e executar o binário gerado:
go mod tidy # Para garantir que todas as dependências estão instaladas
go build -o go-mlp -ldflags "-s -w" src/main.go # Para compilar o código
./go-mlp # Executar o programa compilado
A seguir você encontrará a demonstração do código em Go.
Para executar o código em Python, você deve ter o Python instalado na sua máquina. Para instalar o Python, siga as instruções aqui. Após instalar o Python, você deve executar o seguinte comando:
Crie um ambiente virtual:
python3 -m venv venv
source venv/bin/activate
Instale as dependências:
pip install -r requirements.txt
Execute o código:
python src/main.py
A seguir você encontrará a demonstração do código em Python.
Em Python, o MLP foi treinado em 50 mil épocas e com uma taxa de aprendizado de 0.10, obtendo uma acurácia de 99.88% (sem arredondamento). Em Go, o MLP foi treinado em 500 mil épocas e com uma taxa de aprendizado de 0.10, obtendo uma acurácia média de 99.35% (sem arredondamento). Com arredondamento, a acurácia de ambos os modelos foi de 100%, o que significa que o modelo foi capaz de simular a função XOR (não aprender, ja que computadores não aprendem). Vale notar que a velocidade de execução do código em Go é muito superior ao código em Python, rodando 10 vezes mais épocas 10 vezes mais rápido (aproximadamente 100 vezes mais rápido).