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â]
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Fb860a07a-eb0a-4c94-9ae6-873c0be86083%252FRAtsYYyT.png%3Ftable%3Dblock%26id%3Da191c52e-8f1c-408d-9166-a7ed72655668%26cache%3Dv2&w=3840&q=75)
- 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:
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F8955b142-c407-4263-adb7-85168945c407%252FQzC1J1S2.png%3Ftable%3Dblock%26id%3D48266e70-b774-4ffe-9bdd-a249d3ab8b96%26cache%3Dv2&w=3840&q=75)
Normal
Para uma onde todo mundo fala com todo mundo:
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F8c9b32d7-7a89-4ae6-aaca-ccaec1cd26cb%252F-eHHLsbk.png%3Ftable%3Dblock%26id%3D5d399aab-c54d-442d-9fc2-1831f606a888%26cache%3Dv2&w=3840&q=75)
Camada do tipo dense ou camada totalmente conectada
O que vou estar fazendo:
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F42017ea3-e37f-4511-9266-6f9509f3cec4%252FL2v4a_Jg.png%3Ftable%3Dblock%26id%3Def890ad1-666b-450c-9456-2810b5a407a2%26cache%3Dv2&w=3840&q=75)
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) ])
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Fdbe30b10-d464-40a3-ab10-da8721feb996%252F6IQgGSnE.png%3Ftable%3Dblock%26id%3D7428f57c-6c2d-4ab5-afd0-f95c7c6787c0%26cache%3Dv2&w=3840&q=75)
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:
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F0f56bd47-96b9-4829-a868-94df8e9de700%252FCGtpMIcU.png%3Ftable%3Dblock%26id%3Dd903f403-0e1a-4347-b8b0-71773a9c9501%26cache%3Dv2&w=3840&q=75)
Basicamente ela faz a aprendizagem nĂŁo linear funcionar
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Fd0d11ee8-aaa9-4cec-876e-47ded6774978%252FPu6OCEDg.png%3Ftable%3Dblock%26id%3D3b633a62-e3f5-4437-b824-90ee0331a289%26cache%3Dv2&w=3840&q=75)
Â
Â
![notion image](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F663b4a93-48d0-46b3-b370-72f317ea64af%252FzK48A3JU.png%3Ftable%3Dblock%26id%3Df7eddb02-9194-4d66-883e-86e7691c0e27%26cache%3Dv2&w=3840&q=75)
Â
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