Projetei este tutorial do TensorFlow para profissionais e entusiastas interessados em aplicar o Algoritmo de Aprendizado Profundo usando o TensorFlow para resolver vários problemas. O TensorFlow é uma biblioteca de aprendizado profundo de código aberto baseada no conceito de gráficos de fluxo de dados para a construção de modelos. Ele permite que você crie redes neurais em grande escala com muitas camadas.Aprender o uso desta biblioteca também é uma parte fundamental do .A seguir estão os tópicos que serão discutidos neste blog de tutorial do TensorFlow:
- O que é TensorFlow
- Noções básicas de código do TensorFlow
- TensorFlow UseCase
O que são tensores?
Neste tutorial do TensorFlow, antes de falar sobre o TensorFlow, vamos primeiro entender o que são tensores . Os tensores nada mais são do que um fato para representar os dados no aprendizado profundo.
Conforme mostrado na imagem acima, os tensores são apenas arrays multidimensionais, o que permite representar dados com dimensões maiores. Em geral, Deep Learning você lida com conjuntos de dados de alta dimensão, onde as dimensões se referem a diferentes recursos presentes no conjunto de dados. Na verdade, o nome “TensorFlow” é derivado das operações que as redes neurais executam em tensores. É literalmente um fluxo de tensores. Já que você entendeu o que são tensores, vamos prosseguir neste tutorial do TensorFlow e entender - o que é TensorFlow?
O que é TensorFlow?
TensorFlow é uma biblioteca baseada em Python que oferece diferentes tipos de funcionalidade para implementar modelos de aprendizado profundo. Conforme discutido anteriormente, o termo TensorFlow é composto de dois termos - Tensor e Fluxo:
No TensorFlow, o termo tensor se refere à representação de dados como uma matriz multidimensional, enquanto o termo fluxo se refere à série de operações que são executadas em tensores, conforme mostrado na imagem acima.
Agora cobrimos informações suficientes sobre o TensorFlow.
A seguir, neste tutorial do TensorFlow, discutiremos os fundamentos do código do TensorFlow.
Tutorial do TensorFlow: noções básicas de código
Basicamente, o processo geral de escrever um programa TensorFlow envolve duas etapas:
como reverter um número em java
- Construindo um Grafo Computacional
- Executando um Gráfico Computacional
Deixe-me explicar as duas etapas acima, uma por uma:
1. Construindo um Grafo Computacional
Assim, o que é um gráfico computacional? Bem, um gráfico computacional é uma série de operações do TensorFlow organizadas como nós no gráfico. Cada nó recebe 0 ou mais tensores como entrada e produz um tensor como saída. Deixe-me dar um exemplo de um gráfico computacional simples que consiste em três nós - para , b E c como mostrado abaixo:
Explicação do gráfico computacional acima:
Nós constantessão usados para armazenar valores constantes, uma vez que leva zero entrada, mas produz os valores armazenados como saída. No exemplo acima, aeb são nós constantes com valores 5 e 6, respectivamente.
- O nó c representa a operação de multiplicação do nó constante a por b. Portanto, a execução do nó c resultará na multiplicação do nó const a & b.
Basicamente, pode-se pensar em um gráfico computacional como uma forma alternativa de conceituar cálculos matemáticos que ocorrem em um programa TensorFlow. As operações atribuídas a diferentes nós de um Grafo Computacional podem ser realizadas em paralelo, proporcionando assim um melhor desempenho em termos de cálculos.
Aqui, apenas descrevemos o cálculo, ele não calcula nada, não contém nenhum valor, apenas define as operações especificadas em seu código.
2. Executando um gráfico computacional
Vamos pegar o exemplo anterior de gráfico computacional e entender como executá-lo. A seguir está o código do exemplo anterior:
Exemplo 1:
import tensorflow as tf # Construir um gráfico a = tf.constant (5.0) b = tf.constant (6.0) c = a * b
Agora, a fim de obter a saída do nó c, precisamos executar o gráfico computacional dentro de um sessão . A sessão coloca as operações de gráfico em dispositivos, como CPUs ou GPUs, e fornece métodos para executá-los.
Uma sessão encapsula o controle e o estado do tempo de execução do TensorFlow, ou seja, armazena as informações sobre a ordem em que todas as operações serão realizadas e passa o resultado da operação já calculada para a próxima operação no pipeline. Deixe-me mostrar como executar o gráfico computacional acima em uma sessão (a explicação de cada linha de código foi adicionada como um comentário):
# Crie o objeto de sessão sess = tf.Session () #Execute o gráfico em uma sessão e armazene a saída em uma variável output_c = sess.run (c) # Imprima a saída do nó c print (output_c) #Feche a sessão para liberar alguns recursos sess.close ()
Resultado: 30
Então, era tudo sobre sessão e execução de um gráfico computacional dentro dela. Agora, vamos falar sobre variáveis e marcadores de posição que usaremos extensivamente ao construir o modelo de aprendizado profundo usando o TensorFlow.
Constantes, espaço reservado e variáveis
No TensorFlow, constantes, marcadores e variáveis são usados para representar diferentes parâmetros de um modelo de aprendizado profundo. Uma vez que já discuti as constantes antes, começarei com os marcadores de posição.
Marcador de posição:
Uma constante do TensorFlow permite armazenar um valor, mas e se você quiser que seus nós recebam entradas durante a execução? Para esse tipo de funcionalidade, são usados marcadores de posição que permitem que seu gráfico tome entradas externas como parâmetros. Basicamente, um espaço reservado é uma promessa de fornecer um valor posteriormente ou durante o tempo de execução. Deixe-me dar um exemplo para tornar as coisas mais simples:
import tensorflow as tf # Criando espaços reservados a = tf. marcador de posição (tf.float32) b = tf. placeholder (tf.float32) # Atribuição de operação de multiplicação w.r.t. a & ampamp b para o nó mul mul = a * b # Criar objeto de sessão sess = tf.Session () # Executar mul passando os valores [1, 3] [2, 4] para aeb respectivamente output = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Multiplicando ab:', saída)
Resultado: [2. 12.]
Pontos a serem lembrados marcadores de posição:
- Os marcadores de posição não são inicializados e não contêm dados.
- Deve-se fornecer entradas ou feeds para o placeholder que são considerados durante o tempo de execução.
- Executar um espaço reservado sem entrada gera um erro.
Agora, vamos seguir em frente e entender - o que são variáveis?
Variáveis
No aprendizado profundo, os marcadores são usados para obter entradas arbitrárias em seu modelo ou gráfico. Além de obter dados de entrada, você também precisa modificar o gráfico de forma que ele possa produzir novos resultados w.r.t. mesmas entradas. Para isso, você usará variáveis. Em poucas palavras, uma variável permite que você adicione esses parâmetros ou nó ao gráfico que são treináveis, ou seja, o valor pode ser modificado ao longo do tempo. As variáveis são definidas fornecendo seu valor inicial e tipo conforme mostrado abaixo:
var = tf.Variable ([0.4], dtype = tf.float32)
Nota:
- Caso você não tenha fornecido o tipo de dados explicitamente, o TensorFlow inferirá o tipo de constante / variável a partir do valor inicializado.
- TensorFlow tem muitos de seus próprios tipos de dados, como tf.float32 , tf.int32 etc. Você pode se referir a todos eles ao longo Aqui .
Constantes são inicializadas quando você chama tf.constant , e seu valor nunca pode mudar. Pelo contrário, as variáveis não são inicializadas quando você chama tf.Variable . Para inicializar todas as variáveis em um programa TensorFlow, você devo chame explicitamente uma operação especial conforme mostrado abaixo:
init = tf.global_variables_initializer () sess.run (init)
Lembre-se sempre de que uma variável deve ser inicializada antes que um gráfico seja usado pela primeira vez.
Nota: As variáveis do TensorFlow são buffers na memória que contêm tensores, mas, ao contrário dos tensores normais que são instanciados apenas quando um gráfico é executado e são imediatamente excluídos depois, as variáveis sobrevivem em várias execuções de um gráfico.
Agora que cobrimos noções básicas suficientes do TensorFlow, vamos prosseguir e entender como implementar um modelo de regressão linear usando o TensorFlow.
Modelo de regressão linear usando TensorFlow
O modelo de regressão linear é usado para prever o valor desconhecido de uma variável (variável dependente) a partir do valor conhecido de outras variáveis (variável independente) usando a equação de regressão linear conforme mostrado abaixo:
Portanto, para criar um modelo linear, você precisa:
estrutura básica do programa java
- Dependente ou Variável de Saída (Y)
- Variável de inclinação (w)
- Y - Interceptação ou polarização (b)
- Variável Independente ou de Entrada (X)
Então, vamos começar a construir um modelo linear usando o TensorFlow:
Copie o código clicando no botão abaixo:
# Criação de variável para inclinação do parâmetro (W) com valor inicial de 0,4 W = tf.Variable ([. 4], tf.float32) # Variável de criação para viés de parâmetro (b) com valor inicial de -0,4 b = tf.Variable ( [-0.4], tf.float32) # Criação de marcadores para fornecer entrada ou variável independente, denotado por xx = tf.placeholder (tf.float32) # Equação de regressão linear linear_model = W * x + b # Inicializando todas as variáveis sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Executando o modelo de regressão para calcular a saída wrt para imprimir os valores x fornecidos (sess.run (linear_model {x: [1, 2, 3, 4]}))
Resultado:
[0. 0,40000001 0,80000007 1.20000005]
O código indicado acima apenas representa a ideia básica por trás da implementação do modelo de regressão, ou seja, como você segue a equação da linha de regressão para obter a saída w.r.t. um conjunto de valores de entrada. Mas, há mais duas coisas a serem adicionadas neste modelo para torná-lo um modelo de regressão completo:
- Primeiro, precisamos fornecer um mecanismo pelo qual nosso modelo possa se treinar automaticamente com base em um determinado conjunto de entradas e respectivas saídas.
- A segunda coisa que precisamos é validar nosso modelo treinado comparando sua saída com a saída desejada ou de destino com base em um determinado conjunto de valores x.
Agora vamos entender como posso incorporar as funcionalidades mencionadas acima em meu código para o modelo de regressão.
Função de perda - validação do modelo
Uma função de perda mede a distância entre a saída atual do modelo e a saída desejada ou de destino. Usarei uma função de perda mais comumente usada para meu modelo de regressão linear, chamada de Soma do Erro Quadrado ou SSE. SSE calculado w.r.t. saída do modelo (representada por linear_model) e saída desejada ou alvo (y) como:
y = tf.placeholder (tf.float32) erro = linear_model - y squared_errors = tf.square (erro) loss = tf.reduce_sum (squared_errors) print (sess.run (loss, {x: [1,2,3,4 ], y: [2, 4, 6, 8]})
Resultado: 90,24
Como você pode ver, estamos obtendo um alto valor de perda. Portanto, precisamos ajustar nossos pesos (W) e bias (b) de forma a reduzir o erro que estamos recebendo.
tAPI f.train - Treinamento do modelo
TensorFlow fornece otimizadores que mudam lentamente cada variável para minimizar a função de perda ou erro. O otimizador mais simples é Gradiente descendente . Ele modifica cada variável de acordo com a magnitude da derivada de perda com relação a essa variável.
#Criando uma instância do otimizador de descida gradiente otimizador = tf.train.GradientDescentOptimizer (0,01) train = optimizer.minimize (loss) para i no intervalo (1000): sess.run (train, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) print (sess.run ([W, b]))
Resultado: [array ([1.99999964], dtype = float32), array ([9.86305167e-07], dtype = float32)]
Então, é assim que você cria um modelo linear usando o TensorFlow e o treina para obter a saída desejada.
Agora que você sabe sobre o Deep Learning, confira o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso Edureka Deep Learning with TensorFlow Certification Training ajuda os alunos a se tornarem especialistas em treinamento e otimização de redes neurais básicas e convolucionais usando projetos e atribuições em tempo real, juntamente com conceitos como função SoftMax, Redes Neurais de Codificador Automático, Máquina Boltzmann Restrita (RBM).
Tem alguma questão para nós? Mencione isso na seção de comentários e entraremos em contato com você.