Este projeto implementa uma rede neural simples em PyTorch para classificar dígitos do dataset MNIST, usando funções de treinamento, validação e visualização de resultados.
- Estrutura de Pastas
- Instalação e Configuração do Ambiente
- Como Executar
- Uso de GPU (CUDA)
- Descrição dos Arquivos
- Resultados
- Referências
A estrutura sugerida para o projeto é:
Rede_Neural/
├── data/
│ ├── __init__.py
│ └── importando_datasets.py
├── models/
│ ├── __init__.py
│ └── modelo.py
├── Rede_Neural/
│ ├── main.py
│ ├── train.py
│ └── ...
├── .venv/ # (opcional) Ambiente virtual Python
├── README.md # Este arquivo
└── requirements.txt # (opcional) Dependências
-
Clonar o repositório (opcional)
git clone https://github.com/usuario/ML_First_Project.git cd Rede_Neural
-
Crie um ambiente virtual (opcional, mas recomendado)
python -m venv .venv
e ative-o:
- Windows:
.venv\Scripts\activate
- Linux/Mac:
source .venv/bin/activate
- Windows:
-
Instale as dependências
Se tiver um arquivorequirements.txt
:pip install -r requirements.txt
Ou instale manualmente:
pip install torch torchvision matplotlib
- Abra um terminal dentro da pasta raiz do projeto (ex:
Rede_Neural/
). - Certifique-se de que seu ambiente virtual está ativo.
- Rode o script principal:
O código irá:
python Rede_Neural/main.py
- Baixar o dataset MNIST (caso não exista).
- Treinar a rede neural por um número de épocas (definido no código).
- Validar o modelo após o treino.
- Exibir uma imagem de exemplo do batch de treinamento.
Você deverá ver algo como:
Dispositivo em uso: cuda
Epoch [1/10] - Perda acumulada: ...
...
Total de imagens = 10000
Precisão do Modelo: 95.76%
- Verifique se você possui drivers atualizados da NVIDIA.
- Instale a versão do PyTorch com suporte a CUDA. Exemplo (PyTorch mais recente + CUDA 11.8):
pip uninstall torch torchvision torchaudio -y pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
- No código, usamos:
Se
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
torch.cuda.is_available()
forTrue
, o script usará sua GPU. Caso contrário, usará a CPU.
-
data/importando_datasets.py
- Carrega e transforma o dataset MNIST (transformação
ToTensor()
). - Exporta
trainset
,trainloader
,valset
,valloader
combatch_size
eshuffle
configurados.
- Carrega e transforma o dataset MNIST (transformação
-
models/modelo.py
- Define a classe
Modelo
(herdando denn.Module
), com camadas lineares e o métodoforward
.
- Define a classe
-
train.py
- Define funções de treinamento (
treino()
) e validação (validacao()
). - Gerencia otimização, cálculo de perda (
NLLLoss
), e exibe métricas como perda acumulada e acurácia.
- Define funções de treinamento (
-
main.py
- Script principal que:
- Define
device
(cuda ou cpu). - Instancia o modelo e move para
device
. - Chama
treino()
. - Chama
validacao()
. - Exibe exemplos de imagens e dimensões de tensores.
- Define
- Script principal que:
- Ao final de 10 épocas (epochs), o modelo deve alcançar uma acurácia acima de 94% no MNIST, podendo chegar a 97~98% conforme hiperparâmetros ou ajustes no modelo.
- Tempos de treinamento podem variar dependendo do uso de CPU ou GPU.
- Documentação do PyTorch
- Dataset MNIST
- Exemplo de Classificação MNIST em PyTorch (Tutorial Oficial) — apesar de focar em CIFAR10, os conceitos são semelhantes.
Sinta-se à vontade para contribuir com melhorias ou abrir issues neste projeto!