Перцептрон

← разместить еще код

Расшаренный код:

import numpy as np


def sigmoid(x):
    return 1 / (1 + np.exp(-x))


def sigmoid_derivative(x):
    return x * (1 - x)


training_inputs = np.array([[0,0,1],
                            [1,1,1],
                            [1,0,1],
                            [0,1,1]])

training_outputs = np.array([0,1,1,0]).T

np.random.seed(1)

synaptic_weights = 2 * np.random.random((3, 1)) - 1

print('Случайные инициализирующие веса:')
print(synaptic_weights)

for i in range(2000):
    input_layer = training_inputs
    outputs = sigmoid(np.dot(input_layer, synaptic_weights))

    err = training_outputs - outputs

    adjustments = err * sigmoid_derivative(outputs)

    synaptic_weights += np.dot(input_layer.T, adjustments)

print('Веса после обучения:')
print(synaptic_weights)

print('Результат после обучения:')
print(outputs)

# #Тест
# new_input = np.array([1, 1, 0])
# output = sigmoid(np.dot(new_input, synaptic_weights))
#
# print('Новая ситуация:')
# print(output)