Outubro 10, 2019

O que é TensorFlow? Para que serve?

reconhecimento de imagens com tensorflow

TensorFlow é uma biblioteca de código aberto criada para aprendizado de máquina, computação numérica e muitas outras tarefas. Foi desenvolvido pelo Google em 2015 e rapidamente se tornou uma das principais ferramentas para machine learning e deep learning. Qualquer pessoa pode utilizar o TensorFlow gratuitamente, e o estilo de programação em TensorFlow é muito semelhante ao Python.

Como se utiliza o TensorFlow na prática?

utilizando o tensorflow na prática

Muita gente faz mistério sobre como e onde se utiliza o TensorFlow na prática, mas a verdade é que não é difícil de começar a trabalhar com TensorFlow. O primeiro passo é fazer o download da biblioteca TensorFlow para o seu computador. Depois que o TensorFlow está instalado, você pode utilizar uma interface para escrever seus códigos, compilar e obter os resultados. Mas qual interface? Em geral, as mesmas interfaces utilizadas para programar Python também servem para programar TensorFlow, como o Jupyter Notebook, Pycharm, etc.

Não se preocupe, criamos um curso gratuito completo para quem quer começar a utilizar o TensorFlow, com muita clareza e simplicidade. Acesse aqui: curso de TensorFlow.

Como surgiu o TensorFlow? (Um pouco de história)

google brain

Em 2011, a equipe do Google Brain (segmento do Google voltado pesquisa na área de inteligência artificial) criou um sistema chamado DistBelief, que era voltado para redes neurais e deep learning. Várias empresas do Google começaram a utilizar o DistBelief em aplicações comerciais e pesquisas, pois o sistema provou ser bastante útil.

Como a utilização estava crescendo dentro da empresa, o Google designou uma equipe de cientistas da computação para redesenhar o DistBelief, com o objetivo de torná-lo mais simples e mais rápido. Esse aperfeiçoamento acabou transformando o DistBelief no TensorFlow.

Atualmente, o TensorFlow está em sua segunda geração (2.0.0). O lançamento inicial do TensorFlow como código aberto ocorreu em novembro de 2015, e a versão 1.0.0 foi lançada em fevereiro de 2017. Em janeiro de 2018, o Google anunciou o TensorFlow 2.0.

O que significa o fato do TensorFlow ser código aberto?

Quando um software é “código aberto”, isso significa que seu código-fonte está disponível abertamente, com uma licença de direito autoral que permite visualizar/estudar, modificar e também distribuir o software de graça para qualquer pessoa ou empresa, para qualquer finalidade.

Softwares de código aberto costumam ter comunidades ativas de colaboradores, onde qualquer desenvolvedor pode contribuir para a melhoria do sistema. Podemos verificar isso no GitHub oficial do projeto, que atualmente possui mais de 2.000 contribuidores.

Graças a essa iniciativa, o TensorFlow cresceu muito em popularidade e utilização.

Quem utiliza o TensorFlow?

tensorflow TF

Seria muito difícil (talvez até impossível) citar todos os utilizadores do TensorFlow, pois quase todo profissional de Inteligência Artificial trabalha de alguma forma com essa ferramenta, desde aqueles que o utilizam em aplicações comerciais do dia-a-dia nas empresas (como cientistas de dados e engenheiros de dados) até pesquisadores que estão desenvolvendo novos algoritmos e recursos para aprendizado de máquina.

Algumas empresas que já declararam abertamente que utilizam o TensorFlow em suas aplicações são: Coca-Cola, Intel, Airbus, General Electric (GE), Twitter, Airbnb, Paypal, e muitas outras.

O TensorFlow é multi-plataforma, podendo ser executado no Windows, MacOS ou Linux. Além disso, também pode ser executado em CPUs, GPUs (placas de vídeo, que aceleram o processamento), ou ainda TPUs (que são circuitos integrados específicos desenvolvidos pelo Google para acelerar o aprendizado de máquina).

Já existem APIs do TensorFlow em várias linguagens: Python, JavaScript, C++, Java, Go, Swift, C#, Haskell, Julia, Ruby, Rust e Scala.

Para que serve o TensorFlow?

Talvez você já esteja convencido de que aprender TensorFlow é importante. Chegou a hora de entender um pouco melhor o que é um código TensorFlow e o que ele faz.

Podemos pensar no TensorFlow como sendo uma espécie de linguagem de programação, onde escrevemos um código e executamos. Na realidade, o TensorFlow é um Framework, ou seja, uma união de códigos que visa a uma aplicação. Mas em vez de ficarmos detalhando uma definição rigorosa, é mais fácil enxergar na prática o que ele faz.

Programar em TensorFlow é muito semelhante a programar em Python (principalmente o pacote Numpy do Python). Se você já sabe alguma coisa de Python (pacotes e funções), certamente não terá nenhuma dificuldade em aprender TensorFlow.

Recomendamos, inclusive, que você realize nosso curso gratuito de Python para Machine Learning e Análise de Dados para ter uma boa base antes de iniciar com o TensorFlow.

Depois que o TensorFlow está instalado, você pode utilizar a mesma interface (IDE) que utiliza para programar Python para rodar seus códigos TensorFlow. Inclusive, você pode escrever códigos Python misturados com TensorFlow e rodar tudo junto! Por isso, é mais fácil pensar no TensorFlow como se fosse uma biblioteca Python, da mesma forma que temos os pacotes/bibliotecas Numpy, Scikit-learn, Pandas, etc.

Mas, ao contrário das bibliotecas Python tradicionais, para executar um código TensorFlow existem alguns detalhes específicos, como a abertura de uma sessão.

Observe o código TensorFlow abaixo que imprime na tela a frase “Olá, mundo!”:

import tensorflow as tf

frase = tf.constant("Olá mundo!")

with tf.Session() as sess:
   rodar = sess.run(frase)

print(rodar)

Repare que primeiro nós precisamos importar o TensorFlow, da mesma forma que importamos outras bibliotecas Python. Porém, para que o código seja executado, tivemos que abrir uma sessão tf.Session().

O TensorFlow trabalha basicamente assim: primeiro você cria um blueprint do código, ou seja, um esqueleto daquilo que será executado, e depois executa abrindo uma sessão. Na prática, estamos criando um grafo computacional, e enquanto a sessão não for aberta, as informações não irão fluir pelo código. Tudo isso vai ficar mais claro em nosso curso de TensorFlow, não se preocupe.

A partir dessa ideia, podemos criar uma rede neural utilizando TensorFlow. Por exemplo:

 # Pesos da camada 1 
w1 = tf.Variable(tf.random_normal([n_input, n_hidden_1]))
# Bias da camada 1
b1 = tf.Variable(tf.random_normal([n_hidden_1]))
# Aplicando a função sigmoide na camada 1
camada_1 = tf.nn.sigmoid(tf.add(tf.matmul(x,w1),b1))

Esse código acima está criando uma camada de uma rede neural. A figura abaixo mostra um exemplo do que seria uma rede neural básica:

rede neural

Nesse exemplo ilustrativo, a camada de neurônios n1, n2, n3 e n4 é resultado de uma combinação dos valores de entrada a1, a2 e a3 com pesos w que multiplicam essas entradas, e uma constante b ainda é adicionada no final. Sobre essa combinação de variáveis, a função sigmoide é aplicada para fazer com que o valor da saída fique entre 0 e 1.

Obs: os demais pesos w e constantes b foram omitidos da figura.

Não se preocupe se tudo isso é muito novo e estranho para você. O objetivo desse artigo não é explicar os detalhes de como uma rede neural funciona, temos um curso específico para isso. A ideia aqui é apenas mostrar a utilidade do TensorFlow, provando que, com poucas linhas de código, é possível criar e configurar uma rede neural!

Então, basicamente, se nosso interesse é criar e trabalhar com redes neurais, utilizar o TensorFlow é uma sábia decisão, afinal as estruturas já estão prontas, não é necessário criar um código do zero que especifique todas as condições de uma rede neural (acredite, isso seria muito trabalhoso de se fazer em uma linguagem de programação qualquer!).

O TensorFlow possui funções prontas de estruturas de redes neurais dos mais variados tipos (redes neurais recorrentes, redes convolucionais, LSTMs, funções de ativação, técnicas de regularização, otimizadores, funções de custo, etc.). Em outras palavras, todos os recursos teóricos que estudarmos sobre redes neurais, deep learning, processamento de linguagem natural, visão computacional, etc., podem ser facilmente implementados no TensorFlow, basta invocar as funções e módulos certos, passando as configurações adequadas.

A parte mais difícil é entender o que está acontecendo por baixo dos panos, ou seja, como a rede neural está aprendendo de fato, e como interpretar os resultados. Isso tudo você vai aprender passo-a-passo em nosso curso de redes neurais e deep learning.

TensorBoard

Além da facilidade de poder executar funções prontas no ramo de redes neurais e inteligência artificial, o TensorFlow segue criando recursos extras muito úteis. Um exemplo é o TensorBoard.

TensorBoard é uma plataforma para visualização gráfica dos códigos executados usando TensorFlow. Você pode informar no código quais informações deseja visualizar, e o TensorBoard irá criar uma interface excelente para análise.

Observe abaixo alguns exemplos de análises de variáveis e resultados de uma rede neural no TensorBoard (rodamos um código para reconhecimento de dígitos escritos à mão e extraímos alguns resultados):

scalars tensorboard
Variáveis escalares
images tensorboard
Dígitos em pixels
grafo tensorboard
Grafo
histogramas tensorboard
Histogramas

Concorrentes do TensorFlow

Existem outros Frameworks no mercado que servem como alternativa ao TensorFlow para o trabalho em inteligência artificial. Alguns desses Frameworks são gratuitos, outros são privados e necessitam de pagamento de licença para liberar a utilização.

Alguns exemplos de Frameworks alternativos populares são: Pytorch, Caffe, Theano, CNTK e Keras.

Evidentemente, cada sistema possui suas vantagens e desvantagens, desde facilidade no uso até performance. Mas já podemos adiantar aqui que o TensorFlow é um dos mais performáticos em termos de velocidade (essa é uma das principais premissas desse sistema, servir para aplicações de ponta).

Para aprender mais sobre inteligência artificial, conheça nossos cursos.

Inicie agora mesmo nosso curso gratuito de TensorFlow: