<jupyter_start><jupyter_text>Gradiente Descendente - <NAME>.O gradiente descendente é um algoritmo de otimização que usa as derivadas da função objetivopara encontrar o ponto com maior inclinação. No processo, as variáveis a otimizar são deslocadasem uma direção negativa o qual reduzirá o valor da função objetivo.Algoritmo geral para atualizar os pesos com gradiente descendente:  Vamos implementar o algoritmo do Gradiente Descendente! Importando a biblioteca<jupyter_code>import numpy as np<jupyter_output><empty_output><jupyter_text>Função do cáculo da sigmóide<jupyter_code>def sigmoid(x):
  return 1/(1+np.exp(-x))<jupyter_output><empty_output><jupyter_text>Derivada da função sigmóide<jupyter_code>def sigmoid_prime(x):
    return sigmoid(x) * (1 - sigmoid(x))<jupyter_output><empty_output><jupyter_text>Vetor dos valores de entrada e saídas<jupyter_code>x = np.array([1, 2, 3, 4])
y = np.array(0.5)
b = 0.5<jupyter_output><empty_output><jupyter_text>Pesos iniciais das ligações sinápticas Nota: Inicializados aleatóriamente<jupyter_code>w = np.random.randn(4)/10
w<jupyter_output><empty_output><jupyter_text>Taxa de Aprendizagem<jupyter_code>taxaAp = 0.8<jupyter_output><empty_output><jupyter_text>Calcule um degrau de descida gradiente para cada peso<jupyter_code># TODO: Calcule a combinação linear de entradas e pesos sinápticos
h = np.dot(x, w)+b
# TODO: Calcule a saída da Rede Neural
saida = sigmoid(h)
saida
# TODO: Calcule o erro da Rede Neural
erro = erro = y - saida
erro

# TODO: Calcule o termo de erro
erro_termo = erro * sigmoid_prime(h)
erro_termo
# TODO: Calcule a variação do peso
del_w = taxaAp * erro_termo * x
del_w<jupyter_output><empty_output>
StarcoderdataJupyterStructuredCleanDedup