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=σ(W⋅x+b)
Onde:
- y: saída do neurônio;
- W: matriz que representa os pesos associados às conexões do neurônio;
- x: matriz coluna (ou vetor) que representa os valores de entrada do neurônio;
- b: valor escalar;
- σ: 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.





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.
-
Determinando as Dimensões:
- A matriz de entrada
Ideve 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
Wdeve 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.
- A matriz de entrada
-
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.
-
Adição do Viés:
- Realize uma adição elemento a elemento do resultado da multiplicação de matrizes com o viés.
-
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
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
Ipelo primeiro elemento da primeira coluna da matrizW:0.5 * 0.5 = 0.25; - Multiplicar o segundo elemento da primeira linha da matriz
Ipelo segundo elemento da primeira coluna da matrizW:0.6 * 0.4 = 0.24; - Multiplicar o terceiro elemento da primeira linha da matriz
Ipelo terceiro elemento da primeira coluna da matrizW: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
Ipelo primeiro elemento da segunda coluna da matrizW:0.5 * 0.1 = 0.05; - Multiplicar o segundo elemento da primeira linha da matriz
Ipelo segundo elemento da segunda coluna da matrizW:0.6 * 0.9 = 0.54; - Multiplicar o terceiro elemento da primeira linha da matriz
Ipelo terceiro elemento da segunda coluna da matrizW: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.
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo