Aula 01 – Tensor Flow – Introdução ao TensorFlow
Aula 01 – Tensor Flow – Introdução ao TensorFlow
Voltar para página principal do blog
Todas as aulas desse curso
Aula 02
Meu github:
https://github.com/toticavalcanti
Documentação oficial do TensorFlow:
https://www.tensorflow.org/
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
Aproveito para deixar meus link de afiliados:
Hostinger
Digital Ocean
One.com
Introdução ao TensorFlow
Aprendendo a construir uma rede neural
A rede neural utiliza algoritmos de aprendizado não supervisionados.
Muitas vezes não temos massa de dados históricos, ou essa massa que você precisaria analisar é tão absurdamente grande que seria impossível uma máquina calcular em tempo hábil.
Então, por exemplo, um algoritmo que vai jogar xadrez, se ele for aprender por todas as possibilidades de jogadas possíveis, o cálculo seria inviável em relação ao tempo.
Tem determinados jogos que a quantidade de jogadas possíveis é maior que a quantidade de estrelas no universo, ou talvez, maior que a quantidade de átomos no universo, então é impossível você treinar algo assim.
A solução é trabalhar com outros tipos de algoritmos e raciocínio.
O que é utilizado para isso é a técnica de redução de entropia ou cálculo de recompensa, onde o algoritmo vai ver, eu tenho n possibilidades de movimentos, n possibilidades de jogada, de ações, enfim, e aí ele tenta descobrir a resposta para: Qual das ações possíveis, vai dá uma recompensa maior?
Deep learning ou aprendizado profundo
O aprendizado profundo é um subcampo do aprendizado de máquina que é um conjunto de algoritmos inspirados nas estruturas e funções cerebrais.
O Google usa aprendizado de máquina em todos os seus produtos para melhorar o mecanismo de pesquisa, tradução, legenda da imagem ou recomendações.
Para dar um exemplo concreto, os usuários do Google podem experimentar uma pesquisa mais rápida e refinada com a IA.
Se o usuário digitar uma palavra-chave na barra de pesquisa, o Google fornecerá uma recomendação sobre qual poderia ser a próxima palavra.
O Google usa o aprendizado de máquina para tirar proveito de seus enormes conjuntos de dados para oferecer aos usuários a melhor experiência.
O TensorFlow é uma biblioteca desenvolvida pelo Google Brain Team para acelerar o aprendizado de máquina e a pesquisa em redes neurais profundas.
Ele foi desenvolvido para rodar em várias CPUs(Graphics Processing Unit) ou GPUs(Graphics Processing Unit) e até sistemas operacionais móveis.
Arquitetura do TensorFlow
A arquitetura do Tensorflow funciona em três partes:
- Pré-processamento dos Dados
- Construção do modelo
- Treinar e estimar o modelo
É chamado de fluxo tensor (TensorFlow) porque recebe a entrada como uma matriz multidimensional, também conhecida como tensores.
Você pode construir um tipo de fluxograma de operações (chamado Grafo) que deseja executar nessa entrada.
A entrada entra em uma extremidade e depois flui através desse sistema de múltiplas operações e sai pela outra extremidade como saída.
É por isso que é chamado TensorFlow porque o tensor entra através de uma lista de operações e sai do outro lado.
É literalmente um fluxo de tensores.
Não entendi direito o que são Tensores! Vamos mais fundo então 😉
Tensores
O tensor é a estrutura de dados primária usada no aprendizado profundo, entradas e saídas, tudo dentro de uma rede neural é representado usando tensores.
Os livros de Deep Learning em geral diz o seguinte sobre tensores:
“No caso geral, uma matriz de números organizados em uma grade regular com um número variável de eixos é conhecida como tensor”.
Um tensor é uma matriz em geral multidimensional, ou seja, uma matriz nd.
Um número é um tensor de dimensão zero, um vetor é um tensor unidimensional e uma matriz n-dimensional é um tensor n-dimensional.
Um tensor é uma generalização, enquanto número, vetor etc. são casos específicos de um tensor.
Vejamos alguns termos relacionados ao tensor.
x = [
[2,1,6],
[2,8,7],
[9,9,1]
]
Forma de um tensor
A forma de um tensor representa o comprimento de cada dimensão.
Para o tensor acima, a forma é (3,3), pois possui 2 dimensões e comprimento 3.
A classificação de um tensor
A classificação de um tensor é o número de dimensões desse tensor.
Para o exemplo acima, a classificação será 2.
Um tensor de classificação zero é um escalar, um tensor de dimensão zero.
Um tensor de grau um é um vetor, um tensor unidimensional.
Nota
A classificação será igual ao número de índices necessários para acessar um elemento em um tensor.
tens = [
[6,9],
[4,1]
]
x[2][2] => 4 #total de elementos
Para o exemplo acima, a classificação é 2.
Portanto, são necessários dois índices para acessar cada elemento.
Mais a frente falaremos mais de tensores 😉
Onde o Tensorflow pode ser executado?
Os requisitos de hardware e software do TensorFlow podem ser classificados em:
Fase de Desenvolvimento: É quando você treina o modelo. O treinamento geralmente é feito no seu desktop ou laptop.
Fase de Execução ou Fase de Inferência: Uma vez concluído o treinamento, o Tensorflow pode ser executado em muitas plataformas diferentes.
Você pode executá-lo em:
- Desktop executando Windows, macOS ou Linux
- Nuvem como serviço da web
- Dispositivos móveis como iOS e Android
Você pode treiná-lo em várias máquinas e executá-lo em uma máquina diferente, depois de ter o modelo treinado.
O modelo pode ser treinado e usado em GPUs(Graphics Processing Unit), bem como em CPUs(Graphics Processing Unit).
GPUs(Graphics Processing Unit)
As GPUs foram projetadas inicialmente para videogames.
No final de 2010, os pesquisadores de Stanford descobriram que a GPU também era muito boa em operações de matriz e álgebra, o que as torna muito rápidas para realizar esses tipos de cálculos.
O aprendizado profundo depende de muita multiplicação de matrizes.
O TensorFlow é muito rápido no cálculo da multiplicação de matrizes porque é escrito em C++.
Embora seja implementado em C++, o TensorFlow pode ser acessado e controlado por outras linguagens, principalmente o Python.
Por fim, um recurso significativo do TensorFlow é o TensorBoard.
O TensorBoard permite monitorar graficamente e visualmente o que o TensorFlow está fazendo.
Componentes do TensorFlow
Tensor
No fluxo tensor, todos os cálculos envolvem os tensores.
Um tensor é um vetor ou matriz de n dimensões que representa todos os tipos de dados.
Todos os valores em um tensor mantém o mesmo tipo de dados com uma forma conhecida ou parcialmente conhecida.
A forma dos dados é a dimensionalidade do vetor ou matriz.
Um tensor pode ser originado a partir dos dados de entrada ou do resultado de uma computação.
No TensorFlow, todas as operações são realizadas dentro de um grafo.
O grafo é um conjunto de cálculos que ocorrem sucessivamente. Cada operação é chamada de nó operacional e é conectada uma à outra.
O grafo descreve as operações e conexões entre os nós.
No entanto, ele não exibe os valores.
A borda dos nós é o tensor, ou seja, uma maneira de preencher a operação com dados.
Grafo ou representação gráfica
O TensorFlow utiliza uma estrutura de grafo.
O grafo reúne e descreve todos os cálculos em série feitos durante o treinamento.
O grafo tem muitas vantagens:
- Foi feito para rodar em várias CPUs ou GPUs e até em sistemas operacionais móveis
- A portabilidade do grafo permite preservar os cálculos para uso imediato ou posterior. O grafo pode ser salvo para ser executado no futuro.
- Todos os cálculos no grafo são feitos conectando tensores
- Um tensor tem um nó e uma aresta. O nó carrega a operação matemática e produz saídas. As arestas explicam os relacionamentos de entrada / saída entre os nós.
Por que o TensorFlow é popular?
O TensorFlow foi desenvolvido para ser acessível a todos.
A biblioteca TensorFlow incorpora APIs diferentes para arquitetura de aprendizado profundo em escala, como CNN ou RNN.
O TensorFlow é baseado na computação gráfica permitindo ao desenvolvedor visualizar a construção da rede neural com Tensorboad.
Essa ferramenta é útil para depurar o programa.
Por fim, o TensorFlow foi desenvolvido para ser implantado em escala.
O TensorFlow atrai a maior popularidade no GitHub, em comparação com outras estruturas de aprendizado profundo.
Lista de algoritmos suportados pelo TensorFlow
Atualmente, o TensorFlow 2.0 possui uma API integrada para:
- Linear regression: tf.estimator.LinearRegressor
- Classification: tf.estimator.LinearClassifier
- Deep learning classification: tf.estimator.DNNClassifier
- Deep learning wipe and deep: tf.estimator.DNNLinearCombinedClassifier
- Booster tree regression: tf.estimator.BoostedTreesRegressor
- Boosted tree classification: tf.estimator.BoostedTreesClassifier