Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. class NeuralNetwork:
  2. def __init__(self):
  3. self.layers = []
  4. self.loss = None
  5. self.loss_prime = None
  6.  
  7. def add(self, layer):
  8. self.layers.append(layer)
  9. return self
  10.  
  11. def use(self, loss, loss_prime):
  12. self.loss = loss
  13. self.loss_prime = loss_prime
  14.  
  15. return self
  16.  
  17. def fit(self, x_train, y_train, epochs, learning_rate):
  18. samples = len(x_train)
  19.  
  20. for i in range(epochs): # each epoch represents one iteration over all samples
  21. err = 0
  22.  
  23. for j in range(samples): # our gradient descent logic from earlier in the article
  24. output = x_train[j]
  25. for layer in self.layers:
  26. output = layer.forward_propagation(output)
  27.  
  28. err += self.loss(y_train[j], output)
  29.  
  30. error = self.loss_prime(y_train[j], output)
  31. for layer in reversed(self.layers):
  32. error = layer.backward_propagation(error, learning_rate)
  33.  
  34. err /= samples
  35. print('epoch %d/%d error=%f' % (i+1, epochs, err))
  36.  
  37. return self
  38.  
  39. def predict(self, input_data):
  40. samples = len(input_data)
  41. result = []
  42.  
  43. for i in range(samples): # basically running the forward propagation of all layers to get the result
  44. output = input_data[i]
  45. for layer in self.layers:
  46. output = layer.forward_propagation(output)
  47. result.append(output)
  48.  
  49. return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement