Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Criando uma Camada de Rede Neural | Fundamentos do TensorFlow
Introdução ao TensorFlow

Criando uma Camada de Rede Neural

Camada Única de Rede Neural

Em uma rede neural feed-forward básica, a saída de um neurônio em uma camada é calculada usando a soma ponderada de suas entradas, passada por uma função de ativação. Isso pode ser representado como:

y=σ(Wx+b)y=\sigma(W \cdot x + b)

Onde:

  • yy: saída do neurônio;
  • WW: matriz que representa os pesos associados às conexões do neurônio;
  • xx: matriz coluna (ou vetor) que representa os valores de entrada do neurônio;
  • bb: valor escalar;
  • σ\sigma: função de ativação, como a função sigmoide, ReLU ou softmax.

Para obter o melhor desempenho, todos os cálculos são realizados utilizando matrizes. Vamos lidar com essa tarefa da mesma forma.

carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 1
single

single

Criando uma Camada de Rede Neural

Deslize para mostrar o menu

Camada Única de Rede Neural

Em uma rede neural feed-forward básica, a saída de um neurônio em uma camada é calculada usando a soma ponderada de suas entradas, passada por uma função de ativação. Isso pode ser representado como:

y=σ(Wx+b)y=\sigma(W \cdot x + b)

Onde:

  • yy: saída do neurônio;
  • WW: matriz que representa os pesos associados às conexões do neurônio;
  • xx: matriz coluna (ou vetor) que representa os valores de entrada do neurônio;
  • bb: valor escalar;
  • σ\sigma: função de ativação, como a função sigmoide, ReLU ou softmax.

Para obter o melhor desempenho, todos os cálculos são realizados utilizando matrizes. Vamos lidar com essa tarefa da mesma forma.

carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img
Tarefa

Deslize para começar a programar

Dadas as matrizes de pesos, entradas e viés para uma camada de um único neurônio, calcule sua saída utilizando multiplicação de matrizes e a função de ativação sigmoide. Considere uma camada com 3 entradas e 2 neurônios, recebendo um único lote contendo apenas uma amostra.

  1. Determinando as Dimensões:

    • A matriz de entrada I deve ter sua primeira dimensão representando o número de amostras no lote. Dada uma amostra com 3 entradas, seu tamanho será 1x3;
    • A matriz de pesos W deve ter suas colunas representando os pesos das entradas para cada neurônio. Portanto, para 2 neurônios com 3 entradas, a forma esperada é 3x2. Caso não esteja assim, é necessário transpor a matriz de pesos para obter a forma requerida.
  2. Multiplicação de Matrizes:

    • Com as matrizes nas dimensões corretas, realize a multiplicação de matrizes;
    • Lembre-se de que, na multiplicação de matrizes, a saída é derivada do produto escalar de cada linha da primeira matriz com cada coluna da segunda matriz. Certifique-se de multiplicar na ordem correta.
  3. Adição do Viés:

    • Realize uma adição elemento a elemento do resultado da multiplicação de matrizes com o viés.
  4. Aplicação da Ativação:

    • Utilize a função de ativação sigmoide no resultado da adição do viés para obter a saída do neurônio;
    • O TensorFlow fornece a função sigmoide como tf.sigmoid().

Nota

Ao final do curso, abordaremos a implementação de uma rede feed-forward completa utilizando TensorFlow. Este exercício serve como base para isso.

Solução

Descrição do Código
expand arrow

Definindo pesos da camada, entradas da camada e viés da camada

Aqui, estamos definindo os pesos, entradas e viés para a camada. Utilizamos tf.Variable() para pesos e viés, pois são parâmetros treináveis em redes neurais, e tf.constant() para a entrada, pois ela permanece inalterada durante o treinamento. O parâmetro dtype=tf.float64 é definido para obter a melhor precisão.

W = tf.Variable([[0.5, 0.4, 0.7], [0.1, 0.9, 0.5]], dtype=tf.float64)

Esta é a matriz de pesos da camada neural. Cada linha representa os pesos de um neurônio em relação a cada entrada.

I = tf.constant([[0.5, 0.6, 0.1]], dtype=tf.float64)

Esta é a matriz de entrada, representando uma única amostra com 3 características.

b = tf.Variable(0.1, dtype=tf.float64)

Este é o valor do viés. É um escalar adicionado à soma ponderada antes de passar pela função de ativação.

W = tf.transpose(W)

Os pesos estão organizados em linhas, mas para a multiplicação de matrizes, eles devem estar em colunas. Portanto, transpomos a matriz. Após isso, a primeira coluna corresponde aos pesos do primeiro neurônio e a segunda coluna aos do segundo neurônio.

weighted_sum = tf.matmul(I, W)

Aqui, calculamos a multiplicação de matrizes entre a entrada e a matriz de pesos transposta. Isso nos dá a soma ponderada das entradas.

Vamos detalhar essa multiplicação de matrizes passo a passo:

Determinar a Forma da Matriz Resultante:

A matriz resultante terá o número de linhas da primeira matriz (matriz I com forma 1x3) e o número de colunas da segunda matriz (matriz W com forma 3x2). Assim, a matriz resultante terá forma 1x2.

Processo de Multiplicação de Matrizes:

Para o primeiro elemento da matriz resultante (vamos chamá-lo de S[0][0] para "soma ponderada"):

  • Multiplicar o primeiro elemento da primeira linha da matriz I pelo primeiro elemento da primeira coluna da matriz W: 0.5 * 0.5 = 0.25;
  • Multiplicar o segundo elemento da primeira linha da matriz I pelo segundo elemento da primeira coluna da matriz W: 0.6 * 0.4 = 0.24;
  • Multiplicar o terceiro elemento da primeira linha da matriz I pelo terceiro elemento da primeira coluna da matriz W: 0.1 * 0.7 = 0.07;
  • Somar esses produtos: 0.25 + 0.24 + 0.07 = 0.56.

Portanto, S[0][0] é 0.56.

Para o segundo elemento da matriz resultante (S[0][1]):

  • Multiplicar o primeiro elemento da primeira linha da matriz I pelo primeiro elemento da segunda coluna da matriz W: 0.5 * 0.1 = 0.05;
  • Multiplicar o segundo elemento da primeira linha da matriz I pelo segundo elemento da segunda coluna da matriz W: 0.6 * 0.9 = 0.54;
  • Multiplicar o terceiro elemento da primeira linha da matriz I pelo terceiro elemento da segunda coluna da matriz W: 0.1 * 0.5 = 0.05;
  • Somar esses produtos: 0.05 + 0.54 + 0.05 = 0.64.

Portanto, S[0][1] é 0.64.

Assim, a matriz resultante S da multiplicação das matrizes I e W é:

[ [0.56, 0.64] ]
biased_sum = weighted_sum + b

O viés é adicionado à soma ponderada. Isso é uma forma de transformação afim que desloca o resultado para obter melhor ajuste durante o treinamento.

neuron_output = tf.sigmoid(biased_sum)

A função sigmoide comprime o valor entre 0 e 1, garantindo que nossa saída esteja em um intervalo normalizado. É comumente utilizada em problemas de classificação binária.

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 1
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