Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. class NeuralNetwork(object):
  2. '''
  3. Compact 3 layer neural network
  4. (input -> hidden -> output)
  5. '''
  6.  
  7. def __init__(self, input_nodes, hidder_layers, output_nodes, learning_rate):
  8. self.i_nodes = input_nodes
  9. self.h_nodes = hidder_layers
  10. self.o_nodes = output_nodes
  11. self.alpha = learning_rate
  12.  
  13. # Weight matrix between input -> hidden -> output
  14. self.wih = np.random.normal(0.0, pow(self.i_nodes, -0.5), (self.h_nodes, self.i_nodes))
  15. self.who = np.random.normal(0.0, pow(self.h_nodes, -0.5), (self.o_nodes, self.h_nodes))
  16.  
  17. # Activation function expit - sigmoid
  18. self.activation_func = lambda x: sigmoid(x)
  19.  
  20. def train(self, input_list, target_list):
  21. inputs = np.array(input_list, ndmin=2).T
  22. targets = np.array(target_list, ndmin=2).T
  23.  
  24. # signals into hidden layer
  25. hidden_inputs = np.dot(self.wih, inputs)
  26. # signals from hidden layer
  27. hidden_outputs = self.activation_func(hidden_inputs)
  28. # signals into output
  29. final_inputs = np.dot(self.who, hidden_outputs)
  30. # signals from output
  31. outputs = self.activation_func(final_inputs)
  32.  
  33. # Error between hidden and output
  34. output_errors = targets - outputs
  35. # error between input and hiddent
  36. hidden_errors = np.dot(self.who.T, output_errors)
  37.  
  38. # Updating weight between hidden and output layers
  39. self.who += self.alpha * np.dot((output_errors * outputs * (1.0 - outputs)),
  40. np.transpose(hidden_outputs))
  41. # Updating weight between input and hidden
  42. self.wih += self.alpha * np.dot((hidden_errors * hidden_outputs * (1.0 - hidden_outputs)),
  43. np.transpose(inputs))
  44.  
  45. def query(self, input_list):
  46. inputs = np.array(input_list, ndmin=2).T
  47.  
  48. # signals into hidden input
  49. hidden_inputs = np.dot(self.wih, inputs)
  50. # signals from hidden input
  51. hidden_outputs = self.activation_func(hidden_inputs)
  52.  
  53. # signals into output layer
  54. final_inputs = np.dot(self.who, hidden_outputs)
  55. # signals from output layer
  56. outputs = self.activation_func(final_inputs)
  57.  
  58. return outputs
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement