Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Fita de Gradiente | Fundamentos do TensorFlow
Introdução ao TensorFlow
Seção 3. Capítulo 2
single

single

Fita de Gradiente

Deslize para mostrar o menu

Fita de Gradiente

A compreensão das operações fundamentais com tensores permite avançar para a otimização e aceleração desses processos utilizando recursos integrados do TensorFlow. A primeira dessas ferramentas avançadas a ser explorada é a Fita de Gradiente.

O que é a Fita de Gradiente?

Este capítulo aborda um dos conceitos fundamentais do TensorFlow, a Fita de Gradiente. Esse recurso é essencial para a compreensão e implementação de técnicas de otimização baseada em gradientes, especialmente em aprendizado profundo.

A Fita de Gradiente no TensorFlow é uma ferramenta que registra operações para diferenciação automática. Quando operações são realizadas dentro de um bloco de Fita de Gradiente, o TensorFlow acompanha todos os cálculos realizados. Isso é particularmente útil no treinamento de modelos de aprendizado de máquina, onde os gradientes são necessários para otimizar os parâmetros do modelo.

Note
Nota

Essencialmente, um gradiente é um conjunto de derivadas parciais.

Uso do Gradient Tape

Para utilizar o Gradient Tape, siga estes passos:

  • Criar um bloco Gradient Tape: utilize with tf.GradientTape() as tape:. Dentro deste bloco, todos os cálculos são rastreados;
  • Definir os cálculos: realize operações com tensores dentro do bloco (por exemplo, definir o passo de propagação direta de uma rede neural);
  • Calcular os gradientes: utilize tape.gradient(target, sources) para calcular os gradientes do alvo em relação às fontes.

Cálculo Simples de Gradiente

Um exemplo simples para compreender melhor.

123456789101112131415
import tensorflow as tf # Define input variables x = tf.Variable(3.0) # Start recording the operations with tf.GradientTape() as tape: # Define the calculations y = x * x # Extract the gradient for the specific input (`x`) grad = tape.gradient(y, x) print(f'Result of y: {y}') print(f'The gradient of y with respect to x is: {grad.numpy()}')

Este código calcula o gradiente de y = x^2 em x = 3. Isso é o mesmo que a derivada parcial de y em relação a x.

simple_derivative

Várias Derivadas Parciais

Quando a saída é influenciada por múltiplas entradas, uma derivada parcial pode ser calculada em relação a cada uma dessas entradas (ou apenas algumas selecionadas). Isso é feito fornecendo uma lista de variáveis como parâmetro sources.

A saída dessa operação será uma lista correspondente de tensores, onde cada tensor representa a derivada parcial em relação a cada uma das variáveis especificadas em sources.

1234567891011121314151617
import tensorflow as tf # Define input variables x = tf.Variable(tf.fill((2, 3), 3.0)) z = tf.Variable(5.0) # Start recording the operations with tf.GradientTape() as tape: # Define the calculations y = tf.reduce_sum(x * x + 2 * z) # Extract the gradient for the specific inputs (`x` and `z`) grad = tape.gradient(y, [x, z]) print(f'Result of y: {y}') print(f"The gradient of y with respect to x is:\n{grad[0].numpy()}") print(f"The gradient of y with respect to z is: {grad[1].numpy()}")

Este código calcula o gradiente da função y = sum(x^2 + 2*z) para valores dados de x e z. Neste exemplo, o gradiente de x é apresentado como um tensor 2D, onde cada elemento corresponde à derivada parcial do respectivo valor na matriz original x.

derivadas_parciais
Descrição do Exemplo
expand arrow

Calculando o Gradiente em Relação a x

Ao calcular a derivada de y em relação a x, estamos essencialmente perguntando: "Se alterarmos o valor de x um pouco, quanto y muda?" A operação sobre x é a elevação ao quadrado (x^2), então a derivada nos diz que, para cada aumento unitário em x, y aumentará em 2*x.

Como todos os elementos de x são 3.0:

  • O gradiente de cada elemento é 2*3.0 = 6.0;
  • A matriz gradiente em relação a x possui o mesmo formato de x (2x3), onde cada elemento é 6.0. Isso indica que aumentar qualquer elemento de x em 1 aumentaria y em 6 unidades.

Calculando o Gradiente em Relação a z

Para z, estamos considerando como mudanças em z afetam y. Como z é somado a cada elemento ao quadrado de x (após ser duplicado), estamos perguntando: "Se z aumentar em 1, quanto y aumenta?" Pelas regras de broadcasting, 2*z é somado a cada elemento de x^2, como se tivéssemos uma matriz do mesmo tamanho de x, preenchida com 2*z.

  • A operação de 2*z em relação a z é direta: sua derivada é 2, pois 2*z muda 2 unidades para cada unidade de mudança em z;
  • No entanto, como essa operação afeta cada elemento da matriz x, a mudança total em y para uma unidade de mudança em z é 2 vezes o número de elementos em x (que é 6, da matriz 2x3). Assim, o gradiente total em relação a z é 2*6 = 12. Isso significa que aumentar z em 1 unidade aumenta y em 12 unidades, refletindo o efeito combinado da mudança em todos os elementos de x.

Resumo

  • O gradiente em relação a x é uma matriz que mostra como um aumento unitário em qualquer elemento de x leva a um aumento de 6 unidades em y, refletindo a relação direta entre mudanças em x e mudanças em y;
  • O gradiente em relação a z é um escalar (12), mostrando o efeito total de um aumento unitário em z sobre y, levando em conta o impacto em toda a matriz x.
Note
Nota

Para mais informações sobre as capacidades do Gradient Tape, incluindo derivadas de ordem superior e extração da matriz Jacobiana, consulte a TensorFlow documentation.

Tarefa

Deslize para começar a programar

Seu objetivo é calcular o gradiente (derivada) de uma função matemática fornecida em um ponto específico utilizando o Gradient Tape do TensorFlow. A função e o ponto serão fornecidos, e você verá como usar o TensorFlow para encontrar o gradiente nesse ponto.

Considere uma função quadrática de uma única variável x, definida como:

f(x) = x^2 + 2x - 1

Sua tarefa é calcular a derivada dessa função em x = 2.

Etapas

  1. Definir a variável x no ponto em que deseja calcular a derivada.
  2. Utilizar o Gradient Tape para registrar o cálculo da função f(x).
  3. Calcular o gradiente de f(x) no ponto especificado.

Observação

O gradiente só pode ser calculado para valores do tipo ponto flutuante.

Derivative of a Function at a Point

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 2
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

some-alt