Я попытался реализовать простую нейронную сеть, используя функции sigmoid и relu.с сигмовидной функцией я получил несколько хороших результатов.но при использовании relu я получил либо массив 0, либо 1.(Мне нужна функция relu, потому что я хочу использовать код для некоторых выходов> 1).
def relu(x):
return np.maximum(0,x)
def reluDerivative(x):
x[x<=0] = 0
x[x>0] = 1
return x
training_inputs = np.array([[9, 0 , 1],
[7, 1, 1],
[8, 0, 1],
[5, 1, 1]
])
training_outputs = np.array([[9, 7, 8, 5]]).T
np.random.seed(1)
synaptic_weights = 2 * np.random.random((3,1)) - 1
for iteration in range(100000):
outputs = relu(np.dot(training_inputs, synaptic_weights))
error = training_outputs - outputs
adjustments = error * reluDerivative(outputs)
synaptic_weights += np.dot(training_inputs.T, adjustments )
print("output after training: \n" , outputs)