import matplotlib.pyplot as plt
import torch
from torchvision import datasets, transforms
= 64
Nb
= "~/temp"
dir_data
= torch.utils.data.DataLoader(
train_loader
datasets.FashionMNIST(
dir_data,=True,
train=True,
download=transforms.Compose(
transform
[transforms.ToTensor()]
),
),=Nb,
batch_size=True,
shuffle
)
=(16, 6))
plt.figure(figsizefor i in range(10):
2, 5, i + 1)
plt.subplot(= train_loader.dataset.__getitem__(i)
image, _
plt.imshow(image.squeeze().numpy())'off'); plt.axis(
Exercício 4 - CNN
Neste exercício, você vai trabalhar com o banco de dados Fashion MNIST e implementar um classificador multiclasse usando uma CNN. Esse dataset contem 70000 imagens 28x28 de peças de vestuário distribuídas em 10 classes, divididas em um conjunto de treinamento com 60000 imagens e um de teste com 10000.
O banco de dados Fashion MNIST tem as mesmas características do banco de dados MNIST (imagens 28x28 e 10 classes), sendo possível substituí-lo diretamente. A sugestão é que seja usado o exemplo da CNN com PyTorch, substituindo a parte de carregamento de dados do MNIST, para o Fashion MNIST, como no exemplo:
Você deve implementar uma rede CNN, com a etapa de treinamento e teste, de forma que o resultado de acurácia da classificação seja superior à 90% considerando os dados de teste. Para tanto, faça simulações alterando a arquitetura da rede ou ajustando os hiperparâmetros, até conseguir o desempenho desejado.
Ao final do exercício, você deverá apresentar:
Os códigos utilizados para treinar o modelo e avaliá-lo com os conjuntos de teste;
O valor obtido para a acurácia considerando os dados de teste.
A sugestão é que o relatório seja elaborado utilizando um Jupyter Notebook e a linguagem Python, já que essas são as ferramentas que estamos utilizando neste bloco do curso. No entanto, isso não é obrigatório e você pode usar outra linguagem de programação, caso queira.
Instruções para entrega
O exercício pode ser feito em dupla ou individualmente;
A entrega deve incluir:
- Um vídeo de no máximo 40s, mostrando a resolução do exercício;
- Os códigos-fontes dos programas, preferencialmente organizados em um Jupyter Notebook, descrevendo o experimento e mostrando como foram obtidos os resultados solicitados.
A correção será feita baseada no vídeo. Quando o professor/pesquisador ficar com alguma dúvida, serão consultados os códigos-fonte;
Sobre o vídeo:
- Deve incluir áudio descrevendo o experimento;
- Gravem a tela do computador usando celular ou usando algum programa de captura de tela (por exemplo Zoom, Google Meet, ou OBS Studio);
- No início, deve aparecer o rosto e algum documento do aluno que gravou o vídeo (como a carteira USP, RG, CNH, etc);
- No caso de entrega em dupla, não é necessário que os dois componentes apareçam no vídeo. No entanto, alternem o apresentador ao longo das entregas dos exercícios e não esqueçam de incluir os dois nomes no início do vídeo.
- Procurem convencer o espectador do vídeo, que vai corrigir o exercício que fizeram os exercícios computacionais solicitados e que eles estão funcionando corretamente. Tentem fazer um bom aproveitamento do tempo para apresentar os resultados solicitados, respeitando o limite de 40s e não acelerem a velocidade do vídeo;
Sobre os códigos-fonte:
- Incluir o nome do(s) aluno(s) no início do programa;
Sobre o envio no Moodle:
- Apenas um aluno de cada dupla deve enviar o vídeo no Moodle;
- Podem ser enviados o arquivo de vídeo (.mkv, .mp4, .avi, etc.) ou um link para o vídeo (Youtube, Google Drive, etc);
- No segundo caso, certifiquem-se que todos os professores/pesquisadores (magno.silva@usp.br, hae.kim@usp.br, renatocan@lps.usp.br, wesleybeccaro@usp.br) tenham acesso ao seu vídeo.
- Não se esqueçam de escrever o nome dos componentes da dupla (ou do único aluno, escrevendo: “exercício feito individualmente”) em três lugares diferentes: no campo “comentários sobre o envio” no Moodle, no início do vídeo e no início dos códigos-fonte.