Tutorial do TensorFlow: Tutorial para iniciantes do TensorFlow de 10 minutos [Tradução]

Olá Habr! Apresento a você a tradução do artigo "Tutorial do TensorFlow: 10 minutos Lição prática do TensorFlow para aprendizes rápidos", de Ankit Sachan.


Este tutorial do TensorFlow é para quem tem um conhecimento básico de aprendizado de máquina e está tentando começar o TensorFlow.


Primeiro de tudo, você deve ter o TensorFlow instalado. Você pode instalá-lo neste guia. Esta lição está dividida em duas partes: na primeira parte, explicamos o básico com um exemplo de trabalho, na segunda parte, construímos um modelo de regressão linear.


Parte 1. Noções básicas do TensorFlow


TensorFlow é uma biblioteca numérica na qual os dados passam por um gráfico. Os dados no TensorFlow são representados por matrizes n-dimensionais - tensores. O gráfico é composto de dados (tensores) e operações matemáticas.


Nos nós do gráfico são operações matemáticas.


As arestas do gráfico representam tensores que "fluem" entre as operações.


Há outro aspecto em que o TensorFlow é muito diferente de qualquer outra linguagem de programação. No TensorFlow, você primeiro precisa criar um projeto do que deseja criar. Inicialmente, ao criar um gráfico, as variáveis ​​não têm significado. Posteriormente, quando você criou um gráfico completo, você o executa em uma sessão e somente então as variáveis ​​assumem quaisquer valores.


Vamos começar a aprender fazendo. Execute python e importe o TensorFlow:


~$ python Python 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>>import tensorflow as tf 

Um gráfico é usado para definir operações e todas as operações são executadas em uma sessão. Gráficos e sessões são criados independentemente um do outro. Trate o gráfico como um projeto de construção e a sessão como um canteiro de obras.


1.1 Gráficos no TensorFlow


Um gráfico é a base do TensorFlow, todos os cálculos (operações) e variáveis ​​estão no gráfico. Tudo o que acontece no código está no gráfico padrão fornecido pelo TensorFlow. Você pode acessar este gráfico da seguinte maneira:


 graph = tf.get_default_graph() 

E assim você pode obter uma lista de todas as operações nesta coluna:


 graph.get_operations() 

Seu gráfico agora está vazio. Se você precisar imprimir o nome de cada operação, execute o seguinte código:


 for op in graph.get_operations(): print(op.name) 

A saída ficará novamente em branco. No futuro, após adicionar operações ao gráfico, usaremos esse código para exibir seus nomes.


1.2 Sessões no TensorFlow


O gráfico define apenas os cálculos (cria o projeto), mas não possui nenhuma variável, nenhum valor, a menos que executemos o gráfico ou parte do gráfico na sessão.


Você pode criar uma sessão como esta:


 sess=tf.Session() ... your code ... ... your code ... sess.close() 

Não se esqueça de que, para iniciar uma sessão, é necessário encerrá-la ou usar o bloco with ... como , por exemplo:


 with tf.Session() as sess: sess.run(f) 

A vantagem de usar essa abordagem é que a sessão será fechada automaticamente no final do bloco with


1.3 Tensores em TensorFlow


O TensorFlow armazena dados em tensores - matrizes multidimensionais muito semelhantes às matrizes numPy.


a) Constantes são valores que não podem ser alterados. Eles são definidos da seguinte maneira:


 a=tf.constant(1.0) 

no entanto, ao tentar produzir, você obtém o seguinte:


 print(a) <tf.Tensor'Const:0' shape=() dtype=float32> print(a) Tensor("Const:0", shape=(), dtype=float32) 

Como você pode ver, isso é diferente de outras linguagens de programação, como python. Você não pode imprimir ou acessar a constante até iniciar a sessão. Vamos fazer o seguinte:


 with tf.Session() as sess: print(sess.run(a)) 

Este código produzirá 1.0


b) Variáveis também são tensores que são como variáveis ​​em outras linguagens de programação:


 >>>b = tf.Variable(2.0,name="test_var") >>>b <tensorflow.python.ops.variables.Variable object at 0x7f37ebda1990> 

Diferentemente das constantes, as variáveis ​​podem alterar seu conteúdo. No entanto, as variáveis ​​no TensorFlow devem ser inicializadas em uma operação de inicialização separada. Pode demorar bastante para inicializar todas as variáveis, mas o TensorFlow fornece um mecanismo para inicializar todas as variáveis ​​de uma vez:


 init_op = tf.global_variables_initializer() 

Agora você precisa iniciar a operação de inicialização antes de tentar acessar a variável:


 with tf.Session() as sess: sess.run(init_op) print(sess.run(b)) 

Este código produzirá 2.0
Se você agora tentar imprimir operações no gráfico


 graph = tf.get_default_graph() for op in graph.get_operations(): print(op.name) 

você obterá a seguinte saída:


 Const test_var/initial_value test_var test_var/Assign test_var/read init 

Como você pode ver, declaramos "a" como Const e foi adicionado ao gráfico. Da mesma forma, para a variável b, muitos estados test_var foram adicionados ao gráfico TensorFlow, como test_var / inicial_value, test_var / read, etc. Você pode visualizar toda a rede usando o TensorBoard, que é uma ferramenta para visualizar o gráfico TensorFlow e o processo de aprendizado .


c) Os espaços reservados são tensores esperando para serem inicializados com dados. Eles são usados ​​para dados que serão fornecidos somente quando o código for realmente executado na sessão. O que é transferido para o espaço reservado é um dicionário que contém os nomes dos espaços reservados e seus significados:


 a = tf.placeholder("float") b = tf.placeholder("float") y = tf.multiply(a, b) fd = {a: 2, b: 3} with tf.Session() as sess: print(sess.run(y, fd)) 

Este código produzirá 6.0


1.4 Dispositivos no TensorFlow


O TensorFlow possui recursos internos muito poderosos para executar seu código em GPU, CPU ou clusters. Dá a você a oportunidade de escolher o dispositivo no qual deseja executar seu código. No entanto, isso não é algo para se pensar quando você está apenas começando com o TF.
Então, aqui está uma imagem completa de como os cálculos no TensorFlow funcionam:
imagem


Parte 2. Tutorial do TensorFlow com um exemplo simples


Nesta parte, veremos o código para executar a regressão linear. Antes disso, vejamos algumas das funções básicas do TensorFlow que usaremos no código.


Criando uma distribuição normal aleatória:


Use random_normal para criar valores aleatórios a partir da distribuição normal. Neste exemplo, w é uma variável da dimensão 784 * 10 com valores aleatórios com um desvio padrão de 0,01.


 w=tf.Variable(tf.random_normal([784, 10], stddev=0.01)) 

Reduce_mean - Calcula o valor médio de uma matriz


 b = tf.Variable([10,20,30,40,50,60],name='t') with tf.Session() as sess: sess.run(tf.initialize_all_variables()) sess.run(tf.reduce_mean(b)) 

Este código produzirá 35


argmax - muito semelhante ao argmax em Python. Obtém o valor máximo do tensor ao longo do eixo especificado.


 a=[ [0.1, 0.2, 0.3 ], [20, 2, 3 ] ] b = tf.Variable(a,name='b') with tf.Session() as sess: sess.run(tf.initialize_all_variables()) sess.run(tf.argmax(b,1)) 

Imprima uma matriz ([2, 0]) que mostre o índice do valor máximo em cada uma das linhas a.


Problema de regressão linear


Declaração do problema: há um grande número de pontos de dados, tentando combinar uma linha reta com eles. Neste exemplo, criaremos 100 pontos de dados e tentaremos combinar a linha com eles.


2.1 Crie um conjunto de dados de treinamento


trainX contém valores entre -1 e 1 e trainY contém 3 vezes o valor de trainX mais alguma variável aleatória:


 import tensorflow as tf import numpy as np trainX = np.linspace(-1, 1, 101) trainY = 3 * trainX + np.random.randn(*trainX.shape) * 0.33 

2.2 Espaços reservados


 X = tf.placeholder("float") Y = tf.placeholder("float") 

2.3 Modelagem


O modelo de regressão linear tem a forma

Ymodel=wx


- devemos calcular o valor de w. Vamos inicializar w para zero e criar um modelo para resolver esse problema. Definimos a função de custo como

(Modelo Y-y__) ^ 2


O TensorFlow vem com muitos otimizadores que calculam e atualizam gradientes após cada iteração, tentando minimizar a função de custo especificada. Vamos definir uma operação de aprendizado usando o GradientDescentOptimizer para minimizar nossa função de custo a uma velocidade de aprendizado de 0,01. Em seguida, executamos essa operação de aprendizado em um loop.
 w = tf.Variable(0.0, name="weights") y_model = tf.multiply(X, w) cost = (tf.pow(Y-y_model, 2)) train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost) 

2.4 Treinamento


Até este ponto, definimos apenas um gráfico. Nenhum cálculo ocorreu, nenhuma das variáveis ​​do TensorFlow é importante. Para executar este gráfico, precisamos criar uma sessão e executá-la. Antes disso, precisamos criar uma operação de inicialização para todas as variáveis:


 init = tf.initialize_all_variables() with tf.Session() as sess: sess.run(init) for i in range(100): for (x, y) in zip(trainX, trainY): sess.run(train_op, feed_dict={X: x, Y: y}) print(sess.run(w)) 

Observe que a primeira coisa que foi feita foi inicializar as variáveis ​​chamando init dentro de session.run () . Mais tarde, rodamos train_op , alimentando seu feed_dict . Finalmente, imprimimos o valor de w (novamente dentro de sess.run ()), que deve ser em torno de 3.


Exercício:


Se você criar uma nova sessão após esse código e tentar imprimir w, o que será produzido?


 with tf.Session() as sess: sess.run(init) print(sess.run(w)) 

Sim, você entendeu corretamente, 0,0 será exibido. Assim que saímos da sessão criada anteriormente, todas as operações deixam de existir.


Espero que este tutorial lhe dê um começo rápido com o TensorFlow. Por favor, sinta-se livre para fazer suas perguntas nos comentários. O código completo pode ser baixado aqui .

Source: https://habr.com/ru/post/pt465745/


All Articles