Advertisement
Guest User

Neural network base

a guest
Jul 12th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.21 KB | None | 0 0
  1. class NeuralNetwork:
  2.    
  3.     # инициализация
  4.     def __init__(self, inputNodes, hiddenNodes, outputNodes, learningRate): # кол-во входных узлов, скрытых и выходных; коэффициент обучения
  5.        
  6.         self.iNodes = inputNodes
  7.         self.hNodes = hiddenNodes
  8.         self.oNodes = outputNodes
  9.        
  10.         self.wih = numpy.random.rand(self.hNodes, self.iNodes) - 0.5
  11.         self.who = numpy.random.rand(self.oNodes, self.hNodes) - 0.5
  12.        
  13.         self.lr = learningRate
  14.        
  15.         self.activation = lambda x: scipy.special.expit(x)
  16.        
  17.        
  18.     # тренировка
  19.     def train(self, inputs_list, targets_list):
  20.         # преобразование списка входных значений в двумерный массив
  21.         inputs = numpy.array(inputs_list, ndmin = 2).T
  22.         targets = numpy.array(targets_list, ndmin = 2).T
  23.        
  24.         # вычисления
  25.         hidden_inputs = numpy.dot(self.wih, inputs)
  26.         hidden_outputs = self.activation(hidden_inputs)
  27.         final_inputs = numpy.dot(self.who, hidden_outputs)
  28.         final_outputs = self.activation(final_inputs)
  29.        
  30.         # вычисление ошибок
  31.         output_errors = targets - final_outputs
  32.         hidden_errors = numpy.dot(self.who.T, output_errors)
  33.        
  34.         # обновление весовых коэффициентов
  35.         self.who += self.lr * numpy.dot((output_errors * final_outputs * (1.0 - final_outputs)), hidden_outputs.T)
  36.         self.wih += self.lr * numpy.dot((hidden_errors * hidden_outputs * (1.0 - hidden_outputs)), inputs.T)
  37.        
  38.        
  39.     # запросы
  40.     def query(self, inputs_list):
  41.        
  42.         # преобразование списка входных значений в двумерный массив
  43.         inputs = numpy.array(inputs_list, ndmin = 2).T
  44.        
  45.         hidden_inputs = numpy.dot(self.wih, inputs)
  46.        
  47.         hidden_outputs = self.activation(hidden_inputs)
  48.        
  49.         final_inputs = numpy.dot(self.who, hidden_outputs)
  50.         final_outputs = self.activation(final_inputs)
  51.        
  52.         return final_outputs
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement