Advertisement
Guest User

neuralnet

a guest
Apr 27th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. import matplotlib.pyplot
  2. import numpy
  3. # scipy.special for the sigmoid function expit()
  4. import scipy.special
  5.  
  6. def normalize_columns(weights):
  7. #takes a weight matrix as input, returns the same matrix with each column normalized so that it adds to 1
  8. weights = weights.T
  9. return ((1/sum(weights))*weights).T
  10. class neuralNetwork:
  11. # initialise the neural network
  12. def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate):
  13. # set number of nodes in each input, hidden, output layer
  14. self.inodes = inputnodes
  15. self.onodes = outputnodes
  16. self.hnodes = hiddennodes
  17. # set learning rate
  18. self.lr = learningrate
  19. # set initiral random weights
  20. self.wih = numpy.random.normal(0.0, pow(self.hnodes, -0.5), (self.hnodes, self.inodes))
  21. self.who = numpy.random.normal(0.0, pow(self.onodes, -0.5), (self.onodes, self.hnodes))
  22. self.activation_function = lambda x : scipy.special.expit(x)
  23.  
  24. def query(self, inputs_list):
  25. #make inputs_list into an array
  26. inputs = numpy.array(inputs_list, ndmin=2).T
  27. #calculate hidden inputs via matrix multiplcation
  28. hidden_inputs = numpy.dot(self.wih, inputs)
  29. #activate hidden_inputs
  30. hidden_outputs = self.activation_function(hidden_inputs)
  31. #calculate final inputs
  32. final_inputs = numpy.dot(self.who, hidden_outputs)
  33. #activate final_inputs to get final_outputs
  34. final_outputs = self.activation_function(final_inputs)
  35. return final_outputs
  36.  
  37. def train(self, input_list, target_list):
  38. #calculate outputs of the network given input_list as input:
  39. #make inputs_list into an array, see query for comments
  40. inputs = numpy.array(input_list, ndmin=2).T
  41. hidden_inputs = numpy.dot(self.wih, inputs)
  42. hidden_outputs = self.activation_function(hidden_inputs)
  43. final_inputs = numpy.dot(self.who, hidden_outputs)
  44. final_outputs = self.activation_function(final_inputs)
  45.  
  46. #make targets_list into an array as well
  47. targets = numpy.array(target_list, ndmin = 2).T
  48.  
  49. #calculate error
  50. output_errors = targets - final_outputs
  51. hidden_errors = numpy.dot(normalize_columns(self.who).T, output_errors)
  52. self.who += self.lr*numpy.dot(output_errors*(final_outputs)*(1-final_outputs), hidden_outputs.T)
  53. self.wih += self.lr*numpy.dot(hidden_errors*(hidden_outputs)*(1-hidden_outputs), inputs.T)
  54.  
  55.  
  56.  
  57. # number of input, hidden and output nodes
  58. input_nodes = 3
  59. hidden_nodes = 3
  60. output_nodes = 3
  61. # learning rate is 0.3
  62. learning_rate = 0.3
  63. # create instance of neural network
  64. n = neuralNetwork(input_nodes,hidden_nodes,output_nodes, learning_rate)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement