Those are notes from a 2018 class, based on a online course. The proporse of my notes are only to demonstrate the Tensorflow potential. I was unable to find the code, so I will leave this untraslated
Â
- Me retornar duas tuplas. Duas listas imutĂĄveis, traduzindo do termo matemĂĄtico
- Pego argumento para ter treino e teste, separando as 2 turmas para dois usos distintos
- Tupla separada para treino tem 6000 e 1000 para teste
- Com shape de 28x28
- Uma biblioteca do Python apenas para visualizar os dados, usada Ă©: import matplotlib.pyplot as plt
- As imagens sĂŁo identificadas por um nĂșmero, para eu saber que imagem Ă© tal imagem. total_de_classificacoes = 10 nomes_de_classificacoes = [âCamisetaâ, âCalçaâ, âPulloverâ, âVestidoâ, âCasacoâ, âSandĂĄliaâ, âCamisaâ, âTĂȘnisâ, âBolsaâ, âBotaâ]
- Input shape eu digo o tamanho da minha imagem, o flatten para deixar elas com uma dimensĂŁo.
- Antes de deixar a camada mais densa:
Normal
Para uma onde todo mundo fala com todo mundo:
Camada do tipo dense ou camada totalmente conectada
O que vou estar fazendo:
Para:
- Achato as imagens que sĂŁo 28x28
- Faço o cålculo relu. Por ter poucas camadas, posso deixar mais camadas. Alguns consideram apenas se tiver mais camadas
- Faço dropout de 0.2 (20%) que é o recomendado para ajudar lå em baixo para não dar overfit
- Softmax para eu saber a probabilidade daquilo ser aquilo. Ele vai dizer a probabilidade da imagem ser CADA coisa. No total DEVE dar 1 modelo = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(256, activation=tensorflow.nn.relu), keras.layers.Dropout(0.2), keras.layers.Dense(10, activation=tensorflow.nn.softmax) ])
Tanto faz o nĂșmero do dense, tem que ser um nĂșmero para. O escolhido foi 256, para depois ser feito o cĂĄlculo que nesse caso Ă© o RELU:
Basicamente ela faz a aprendizagem nĂŁo linear funcionar
Â
Â
Â
Para depois ir para a saĂda:
keras.layers.Dense(10, activation=tensorflow.nn.softmax)
Antes de eu fazer o fit, para eu treinar. Eu preciso copilar:
modelo.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
- Adam Ă© o mais usado para otimizar os dados, quando tem mais categorias como o nosso
- Para perda Ă© usado esse cĂĄlculo, por termos 10 categorias
- MĂ©trica que eu vou usar para treinar, para saber se Ă© de qualidade. Acurrary Ă© o mais comum. Assim ajuda a diminuir a perda e aumentar a acurĂĄcia
Depois eu faço o fit do dado, para ver o quanto eu devo treinar (lembrando que isso depende de caso para caso, só vai saber testando):
- comparados os dois
- por 5 vezes, mais que isso vai ter uma perda pior na hora da avaliação. Por dar um overfit
- Quebro mais uma vez o valor, para ter mais uma camada de teste. Invés de apenas 2 historico = modelo.fit(imagens_treino, identificacoes_treino, epochs=5, validation_split=0.2)
Em baixo por Ășltimo eu uso a biblioteca especifica onde eu posso acessar o resultado de cada teste, para ver se bate com o que Ă© a imagem de verdade