Vamos começar este tutorial com a introdução do TensorFlow:
O que é TensorFlow?
O TensorFlow é uma plataforma ponta a ponta de código aberto para a criação de aplicativos de aprendizado de máquina. É uma biblioteca de matemática simbólica que usa fluxo de dados e programação diferenciável para realizar várias tarefas com foco no treinamento e inferência de redes neurais profundas. Ele permite que os desenvolvedores criem aplicativos de aprendizado de máquina usando várias ferramentas, bibliotecas e recursos da comunidade.
Atualmente, a biblioteca de aprendizado profundo mais famosa do mundo é a TensorFlow do Google. O produto Google usa aprendizado de máquina em todos os seus produtos para melhorar o mecanismo de pesquisa, tradução, legendagem de imagens ou recomendações.
Para dar um exemplo concreto, os usuários do Google podem experimentar uma busca mais rápida e refinada com IA. Se o usuário digitar uma palavra-chave na barra de pesquisa, o Google fornece uma recomendação sobre qual poderia ser a próxima palavra.
O Google quer usar o aprendizado de máquina para aproveitar seus enormes conjuntos de dados para oferecer aos usuários a melhor experiência. Três grupos diferentes usam o aprendizado de máquina:
- Pesquisadores
- Cientistas de dados
- Programadores.
Todos eles podem usar o mesmo conjunto de ferramentas para colaborar uns com os outros e melhorar sua eficiência.
O Google não possui apenas dados; eles têm o computador mais massivo do mundo, então o Tensor Flow foi desenvolvido para ser escalonado. TensorFlow é uma biblioteca desenvolvida pela equipe do Google Brain para acelerar o aprendizado de máquina e a pesquisa de redes neurais profundas.
Foi construído para rodar em múltiplas CPUs ou GPUs e até mesmo em sistemas operacionais móveis, e possui vários wrappers em diversas linguagens como Python, C ++ ou Java.
Neste tutorial do TensorFlow, você aprenderá
- O que é TensorFlow?
- História do TensorFlow
- Como o TensorFlow funciona
- Arquitetura TensorFlow
- Onde o Tensorflow pode ser executado?
- Introdução aos componentes do TensorFlow
- Por que o TensorFlow é popular?
- Lista de algoritmos proeminentes compatíveis com TensorFlow
- Exemplo simples do TensorFlow
- Opções para carregar dados no TensorFlow
- Criar pipeline do Tensorflow
História do TensorFlow
Há alguns anos, o aprendizado profundo começou a superar todos os outros algoritmos de aprendizado de máquina ao fornecer uma grande quantidade de dados. O Google percebeu que poderia usar essas redes neurais profundas para melhorar seus serviços:
- Gmail
- foto
- Motor de busca Google
Eles construíram uma estrutura chamada Tensorflow para permitir que pesquisadores e desenvolvedores trabalhem juntos em um modelo de IA. Depois de desenvolvido e dimensionado, ele permite que muitas pessoas o utilizem.
Foi tornado público pela primeira vez no final de 2015, enquanto a primeira versão estável apareceu em 2017. É open source sob a licença Apache Open Source. Você pode usá-lo, modificá-lo e redistribuir a versão modificada por uma taxa, sem pagar nada ao Google.
A seguir, neste tutorial de aprendizado profundo do TensorFlow, aprenderemos sobre a arquitetura do TensorFlow e como o TensorFlow funciona.
Como o TensorFlow funciona
O TensorFlow permite que você crie gráficos e estruturas de fluxo de dados para definir como os dados se movem em um gráfico, tomando as entradas como uma matriz multidimensional chamada Tensor. Ele permite que você construa um fluxograma de operações que podem ser executadas nessas entradas, que vai em uma extremidade e chega na outra como saída.
Arquitetura TensorFlow
A arquitetura do Tensorflow funciona em três partes:
- Pré-processamento dos dados
- Construir o modelo
- Treine e estime o modelo
É chamado de Tensorflow porque recebe a entrada como uma matriz multidimensional, também conhecida como tensores . Você pode construir uma espécie de fluxograma de operações (chamado de Gráfico) que deseja executar nessa entrada. A entrada entra em uma extremidade e, em seguida, flui através desse sistema de múltiplas operações e sai pela outra extremidade como saída.
É por isso que é chamado de TensorFlow, porque o tensor entra, flui por uma lista de operações e, em seguida, sai do outro lado.
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 modo. O treinamento geralmente é feito em seu desktop ou laptop.
Fase de execução ou Fase de inferência: depois de 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 web
- Dispositivos móveis como iOS e Android
Você pode treiná-lo em várias máquinas e depois executá-lo em uma máquina diferente, assim que tiver o modelo treinado.
O modelo pode ser treinado e usado em GPUs e também em CPUs. As GPUs foram inicialmente projetadas 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, de modo que as torna muito rápidas para fazer esses tipos de cálculos. O aprendizado profundo depende muito da multiplicação de matrizes. O TensorFlow é muito rápido para calcular a multiplicação da matriz porque é escrito em C ++. Embora seja implementado em C ++, o TensorFlow pode ser acessado e controlado por outras linguagens, principalmente Python.
Por fim, um recurso significativo do TensorFlow é o TensorBoard. O TensorBoard permite monitorar graficamente e visualmente o que o TensorFlow está fazendo.
Introdução aos componentes do TensorFlow
Tensor
O nome do Tensorflow é derivado diretamente de sua estrutura principal: Tensor . No Tensorflow, todos os cálculos envolvem tensores. Um tensor é um vetor ou matriz de n-dimensões que representa todos os tipos de dados. Todos os valores em um tensor segurar tipo de dados idêntico com um conhecido (ou parcialmente conhecida) forma . A forma dos dados é a dimensionalidade da matriz ou array.
Um tensor pode ser originado dos dados de entrada ou do resultado de um cálculo. No TensorFlow, todas as operações são conduzidas dentro de um gráfico . O gráfico é um conjunto de cálculos que ocorre sucessivamente. Cada operação é chamada de nó operacional e estão conectadas entre si.
O gráfico 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 forma de preencher a operação com dados.
Gráficos
O TensorFlow usa uma estrutura de gráfico. O gráfico reúne e descreve todos os cálculos de série feitos durante o treinamento. O gráfico tem muitas vantagens:
- Foi feito para rodar em várias CPUs ou GPUs e até mesmo em sistemas operacionais móveis
- A portabilidade do gráfico permite preservar os cálculos para uso imediato ou posterior. O gráfico pode ser salvo para ser executado no futuro.
- Todos os cálculos no gráfico são feitos conectando tensores juntos
- Um tensor possui um nó e uma aresta. O nó carrega a operação matemática e produz saídas de endpoints. As arestas as arestas explicam as relações de entrada / saída entre os nós.
Por que o TensorFlow é popular?
TensorFlow é a melhor biblioteca de todas porque foi desenvolvida para ser acessível a todos. A biblioteca do Tensorflow incorpora diferentes APIs para construir uma arquitetura de aprendizado profundo em escala, como CNN ou RNN. O TensorFlow é baseado em computação gráfica; permite ao desenvolvedor visualizar a construção da rede neural com Tensorboad. Esta ferramenta é útil para depurar o programa. Por fim, o Tensorflow foi desenvolvido para ser implantado em escala. Ele roda em CPU e GPU.
O Tensorflow atrai a maior popularidade no GitHub em comparação com a outra estrutura de aprendizado profundo.
Lista de algoritmos proeminentes compatíveis com TensorFlow
Abaixo está a lista de algoritmos do TensorFlow compatíveis:
Atualmente, o TensorFlow 1.10 tem uma API integrada para:
- Regressão linear: tf.estimator.LinearRegressor
- Classificação: tf.estimator.LinearClassifier
- Classificação de aprendizagem profunda: tf.estimator.DNNClassifier
- Apagamento de aprendizado profundo e profundo: tf.estimator.DNNLinearCombinedClassifier
- Regressão da árvore de reforço: tf.estimator.BoostedTreesRegressor
- Classificação de árvore otimizada: tf.estimator.BoostedTreesClassifier
Exemplo simples do TensorFlow
import numpy as npimport tensorflow as tf
Nas primeiras duas linhas de código, importamos tensorflow como tf. Com Python, é uma prática comum usar um nome curto para uma biblioteca. A vantagem é evitar digitar o nome completo da biblioteca quando precisarmos usá-la. Por exemplo, podemos importar tensorflow como tf e chamar tf quando quisermos usar uma função tensorflow
Vamos praticar o fluxo de trabalho básico do Tensorflow com exemplos simples do TensorFlow. Vamos criar um gráfico computacional que multiplica dois números juntos.
Durante o exemplo, vamos multiplicar X_1 e X_2 juntos. O Tensorflow criará um nó para conectar a operação. Em nosso exemplo, é chamado de multiplicação. Quando o gráfico for determinado, os mecanismos computacionais do Tensorflow se multiplicarão juntos X_1 e X_2.
Exemplo do TensorFlow
Por fim, executaremos uma sessão do TensorFlow que executará o gráfico computacional com os valores de X_1 e X_2 e imprimirá o resultado da multiplicação.
Vamos definir os nós de entrada X_1 e X_2. Quando criamos um nó no Tensorflow, temos que escolher que tipo de nó criar. Os nós X1 e X2 serão um nó de espaço reservado. O marcador atribui um novo valor cada vez que fazemos um cálculo. Iremos criá-los como um nó de espaço reservado para pontos TF.
Etapa 1: definir a variável
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
Quando criamos um nó de espaço reservado, temos que passar o tipo de dados que adicionaremos números aqui para que possamos usar um tipo de dados de ponto flutuante, vamos usar tf.float32. Também precisamos dar um nome a esse nó. Este nome aparecerá quando olharmos para as visualizações gráficas de nosso modelo. Vamos nomear este nó X_1 passando um parâmetro chamado nome com um valor de X_1 e agora vamos definir X_2 da mesma maneira. X_2.
Etapa 2: definir o cálculo
multiply = tf.multiply(X_1, X_2, name = "multiply")
Agora podemos definir o nó que faz a operação de multiplicação. No Tensorflow, podemos fazer isso criando um nó tf.multiply.
Vamos passar os nós X_1 e X_2 para o nó de multiplicação. Ele diz ao tensorflow para vincular esses nós no gráfico computacional, portanto, estamos pedindo a ele para extrair os valores de xey e multiplicar o resultado. Vamos também dar ao nó de multiplicação o nome multiplicação. É a definição completa de nosso gráfico computacional simples.
Etapa 3: execute a operação
Para executar operações no gráfico, temos que criar uma sessão. No Tensorflow, isso é feito por tf.Session (). Agora que temos uma sessão, podemos pedir que ela execute operações em nosso gráfico computacional, chamando a sessão. Para executar o cálculo, precisamos usar run.
Quando a operação de adição for executada, ele verá que precisa obter os valores dos nós X_1 e X_2, portanto, também precisamos alimentar os valores de X_1 e X_2. Podemos fazer isso fornecendo um parâmetro chamado feed_dict. Passamos o valor 1,2,3 para X_1 e 4,5,6 para X_2.
Imprimimos os resultados com impressão (resultado). Devemos ver 4, 10 e 18 para 1x4, 2x5 e 3x6
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")multiply = tf.multiply(X_1, X_2, name = "multiply")with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
[ 4. 10. 18.]
Opções para carregar dados no TensorFlow
A primeira etapa antes de treinar um algoritmo de aprendizado de máquina é carregar os dados. Existem duas maneiras comuns de carregar dados:
1. Carregar dados na memória: é o método mais simples. Você carrega todos os seus dados na memória como um único array. Você pode escrever um código Python. Essas linhas de código não estão relacionadas ao Tensorflow.
2. Pipeline de dados do Tensorflow. O Tensorflow tem API integrada que ajuda você a carregar os dados, realizar a operação e alimentar o algoritmo de aprendizado de máquina com facilidade. Este método funciona muito bem, especialmente quando você tem um grande conjunto de dados. Por exemplo, os registros de imagens são conhecidos por serem enormes e não cabem na memória. O pipeline de dados gerencia a memória sozinho
Qual solução usar?
Carregar dados na memória
Se o seu conjunto de dados não for muito grande, ou seja, menos de 10 gigabytes, você pode usar o primeiro método. Os dados podem caber na memória. Você pode usar uma famosa biblioteca chamada Pandas para importar arquivos CSV. Você aprenderá mais sobre pandas no próximo tutorial.
Carregar dados com o pipeline do Tensorflow
O segundo método funciona melhor se você tiver um grande conjunto de dados. Por exemplo, se você tiver um conjunto de dados de 50 gigabytes e seu computador tiver apenas 16 gigabytes de memória, a máquina irá travar.
Nessa situação, você precisa construir um pipeline do Tensorflow. O pipeline carregará os dados em lote ou em um pequeno pedaço. Cada lote será enviado para o pipeline e estará pronto para o treinamento. Construir um pipeline é uma solução excelente porque permite usar a computação paralela. Isso significa que o Tensorflow treinará o modelo em várias CPUs. Ele promove a computação e permite o treinamento de uma rede neural poderosa.
Você verá nos próximos tutoriais como construir um pipeline significativo para alimentar sua rede neural.
Em poucas palavras, se você tiver um pequeno conjunto de dados, você pode carregar os dados na memória com a biblioteca Pandas.
Se você tiver um grande conjunto de dados e quiser usar várias CPUs, ficará mais confortável para trabalhar com o pipeline do Tensorflow.
Criar pipeline do Tensorflow
No exemplo anterior, adicionamos manualmente três valores para X_1 e X_2. Agora veremos como carregar dados no Tensorflow.
Etapa 1) Crie os dados
Em primeiro lugar, vamos usar a biblioteca numpy para gerar dois valores aleatórios.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0,8835775 0,23766977]]
Etapa 2) Crie o espaço reservado
Como no exemplo anterior, criamos um espaço reservado com o nome X. Precisamos especificar a forma do tensor explicitamente. Nesse caso, carregaremos um array com apenas dois valores. Podemos escrever a forma como forma = [1,2]
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Etapa 3) Definir o método do conjunto de dados
em seguida, precisamos definir o Dataset onde podemos preencher o valor do espaço reservado x. Precisamos usar o método tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Etapa 4) Crie o pipeline
Na etapa quatro, precisamos inicializar o pipeline por onde os dados fluirão. Precisamos criar um iterador com make_initializable_iterator. Nós o chamamos de iterador. Em seguida, precisamos chamar esse iterador para alimentar o próximo lote de dados, get_next. Chamamos essa etapa de get_next. Observe que em nosso exemplo, há apenas um lote de dados com apenas dois valores.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
Etapa 5) Execute a operação
A última etapa é semelhante ao exemplo anterior. Iniciamos uma sessão e executamos o iterador de operação. Alimentamos o feed_dict com o valor gerado por numpy. Esses dois valores preencherão o espaço reservado x. Em seguida, executamos get_next para imprimir o resultado.
with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
Resumo
Significado do TensorFlow: TensorFlow é a biblioteca de aprendizado profundo mais famosa dos últimos anos. Um praticante que usa o TensorFlow pode construir qualquer estrutura de aprendizado profundo, como CNN, RNN ou rede neural artificial simples.
O TensorFlow é usado principalmente por acadêmicos, startups e grandes empresas. O Google usa o TensorFlow em quase todos os produtos diários do Google, incluindo Gmail, Foto e Google Search Engine.
A equipe do Google Brain desenvolveu o TensorFlow para preencher a lacuna entre pesquisadores e desenvolvedores de produtos. Em 2015, eles tornaram o TensorFlow público; está crescendo rapidamente em popularidade. Atualmente, o TensorFlow é a biblioteca de aprendizado profundo com mais repositórios no GitHub.
Os profissionais usam o Tensorflow porque é fácil de implantar em escala. Ele foi desenvolvido para funcionar na nuvem ou em dispositivos móveis como iOs e Android.
O Tensorflow funciona em uma sessão. Cada sessão é definida por um gráfico com cálculos diferentes. Um exemplo simples pode ser multiplicar em número. No Tensorflow, três etapas são necessárias:
- Defina a variável
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
- Defina o cálculo
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Execute a operação
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
Uma prática comum no Tensorflow é criar um pipeline para carregar os dados. Se você seguir essas cinco etapas, poderá carregar dados no TensorFLow
- Crie os dados
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Crie o espaço reservado
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Defina o método do conjunto de dados
dataset = tf.data.Dataset.from_tensor_slices(x)
- Crie o pipeline
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Execute o programa
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))