import numpy as np

def sigmoid(x):
  return 1 / (1 + np.exp(-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)
print()

# Ետ տարածման մեթոդ
for i in range(200000):
  input_layer = training_inputs
  outputs = sigmoid( np.dot( input_layer, synaptic_weights ))

  err = training_outputs - outputs
  adjustments = np.dot( input_layer.T, err * ( outputs * ( 1-outputs )) )

  synaptic_weights += adjustments

print( "Կշիռները սովորեցնելուց հետո ։" )
print(synaptic_weights)
print()

print( "Արդյունքը սովորեցնելուց հետո ։" )
print(outputs)

new_inputs = np.array([1, 1, 0])
output = sigmoid( np.dot( new_inputs, synaptic_weights ))
print()

print("Նոր իրադարձություն ։")
print(new_inputs, " ==> ", output)