Aula 19 - Tensor Flow - Redes Neurais - MNIST

Meu github:

https://github.com/toticavalcanti

Documentação oficial do TensorFlow:

https://www.tensorflow.org/

Quer aprender python3 de graça e com certificado? Acesse então:

https://workover.com.br/python-codigo-fluente

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no Facebook

https://digitalinnovation.one/

Link do código fluente no Pinterest

Aproveito para deixar meus link de afiliados:

Hostinger

Digital Ocean

One.com

Toti:

https://www.youtube.com/channel/UCUEtjLuDpcOvR3mIUr-viOA

Backing track / Play-along:

https://www.youtube.com/channel/UCT3TryVMqTqYBjf5g5WAHfA

Código Fluente

https://www.youtube.com/channel/UCgn-O-88XBAwdG9gUWkkb0w

Putz!

https://www.youtube.com/channel/UCZXop2-CECwyFYmHbhnAkAw

Fiquem a vontade para me adicionar ao linkedin.

Aula 19 - Tensor Flow - Redes Neurais - MNIST

Base de dados MNIST (dígitos manuscritos)

Esse link logo abaixo da aula de scikit-learn aqui do código fluente, tem também uma explicação dessa base de dados.

https://www.codigofluente.com.br/aula-09-scikit-learn-aplicando-svm-ao-digits-dataset/

A base contém dígitos únicos manuscritos de 0 a 9. Cada dígito é representado em uma matriz numérica de 28 x 28 pixels em uma escala de cinza, onde valores próximos a zero tendem ao branco e próximos a 1 tende ao preto.

Representação Matricial

São valores que representam a imagem em tons de cinza, então temos uma representação numérica dessas imagens de dígitos manuscritos. Podemos fazer um flat nessa matriz, isto é, podemos achatar ela e deixá-la unidimensional ao invés de bi.

Representação Vetorial

Ao invés de uma matriz de 28 por 28, vamos ter um vetor unidimensional de 784 elementos. Fazer uma representação achatada da matriz, acaba removendo parte das informações, como a relação de um pixel com os pixels vizinhos. Vamos ignorar por enquanto esse efeito colateral. Mais na frente, quando formos trabalhar com redes neurais convolucionais, voltamos a isso, porque elas levam em consideração a relação de um pixel com seus pixels vizinhos.

Tensor

Podemos pensar o conjunto todo com 55.000 imagens como um tensor, um n-dimensional array. Para os Labels usaremos One-Hot Encoding. E isso significa que, em vez de termos rótulos como strings tipo: um, dois, três, etc. Teremos apenas um único array para cada imagem que os rótulos representam com base na posição do índice. Então, o rótulo correspondente será um na localização do índice de seu rótulo verdadeiro zero em todos os outros lugares, ou seja, em todos os outros índices.

Array One-Hot Encode do número 4

O número 1 na posição do Array.

Soft Max regression

Vamos começar com uma abordagem mais simples usando uma regressão máxima suave (Soft Max regression). Uma soft Max regression é uma regressão que retorna uma lista de valores entre 0 e 1, que quando somados resultam em 1. É uma lista de probabilidades. Então, vamos imaginar que, se tivermos uma lista com 10 rótulos potenciais de zero a nove, quando aplicamos a soft Max regression, obtemos uma lista de 10 probabilidades. Quando você soma essas probabilidades o resultado é igual a 1. Isso significa que basicamente escolheremos qualquer rótulo que tenha a maior probabilidade de está correto. Você geralmente não obterá 100% para uma probabilidade, em vez disso, obterá uma probabilidade relativamente alta para um rótulo, então, talvez a segunda maior probabilidade para um número de aparência semelhante e então todo o resto não terá zero, mas, algo muito próximo a zero, porque nunca é 100%. A ideia básica da Soft Max é definir um novo tipo de camada de saída para nossas redes neurais. A saída Z tem os pesos multiplicados por uma entrada X mais um termo tendencioso(Viés ou Bias), na fórmula, o b. Uma vez que temos o resultado Z, a função de ativação que passamos não é a função sigmóide, mas sim a Soft Max, e de acordo com esta função, é o exponencial da saída Z dividida pelo denominador que é a soma de todos os neurônios de saída. Isso é a Soft Max.

Veja onde ela entra na rede.

Como equação

Transformando em uma multiplicação de matrizes e adição de vetor

Isso deixa a computação bem mais eficiente.

Por essa aula é só, na próxima vamos por a mão na massa no notebook e codar.

\o/ e até lá!

Meu github:

https://github.com/toticavalcanti

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no Facebook

Link do código fluente no Pinterest

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado, até a próxima e bons estudos. ;)