He estado trabajando en un código recientemente para un proyecto en Python y estoy confundido por el resultado que obtengo de este código.

def sigmoid(input_matrix):
    rows = input_matrix.shape[0]
    columns = input_matrix.shape[1]
    for i in range(0,rows):
        for j in range(0,columns):
            input_matrix[i,j] = (1 / (1 + math.exp(-(input_matrix[i,j]))))
    return input_matrix

def feed_forward(W_L_1 , A_L_0 , B_L_1):
    weighted_sum = np.add(np.dot(W_L_1,A_L_0), B_L_1)
    activation = sigmoid(weighted_sum)
    return [weighted_sum,activation]

a = np.zeros((1,1))
b = feed_forward(a,a,a)
print(b[0])
print(b[1])

Cuando imprimo tanto b [0] como b [1] dan valores de .5 aunque b [0] debería ser igual a 0. Además de esto, cuando coloco el '' 'weighted_sum = np.add (np.dot ( W_L_1, A_L_0), B_L_1) '' 'nuevamente después de la línea de' activación 'proporciona el resultado correcto. Es como si la línea de 'activación' hubiera cambiado el valor de la suma ponderada. Me preguntaba si alguien podría difundir algo de luz sobre esto. Puedo solucionar esto, pero estoy interesado en saber por qué está sucediendo esto. ¡¡Gracias!!

1
Joth 22 ene. 2021 a las 19:11

1 respuesta

La mejor respuesta

Dentro de sigmoid, estás cambiando el valor de la matriz pasada como parámetro, en esta línea:

input_matrix[i,j] = ...

Si desea evitar que esto suceda, cree una copia de la matriz antes de llamar a sigmoid y llámelo así: sigmoid(copy_of_weighted_sum).

1
Óscar López 22 ene. 2021 a las 16:16