Как мне пройти обратно через множество слоев в нейронной сети? - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в нейронных сетях и тому подобном, и, возможно, я выбрал для этого трудный первый проект (в Python). Я пытался написать код, который мог бы использовать в будущем и для других целей. Я понял, как я буду распространяться через последний набор весов и смещений, используя правило производной цепочки, чтобы найти ошибку между этими весами и стоимостью (еще не реализовал это в коде), но я не совсем понимаю, как Я бы продвинулся дальше назад.

Могу ли я использовать правило цепочки, чтобы найти связь между весами дальше в сети, или я бы сделал что-то еще.


  def __init__(self, structure):
    weight_shapes = [(a,b) for a,b in zip(structure[1:],structure[:-1])]
    self.weights = [np.random.standard_normal(s)/s[1]**.5 for s in weight_shapes]
    self.biases = [np.zeros((s,1)) for s in structure[1:]]
    self.structure = structure
    self.hiddenNeuronOutputs = []
    self.errors = []

  @staticmethod
  def sigmoid(x):
    return 1 / (1 + (np.exp(-x)))
  @staticmethod
  def sigmoidDerivative(x):
    return 1 - (1 / (1 + (np.exp(-x))))

  @staticmethod  
  def cost(expectedOutputs,recievedOutputs,numberOfPiecesOfData):
    total = 0
    for i in range(numberOfPiecesOfData):
      squared_error = ((expectedOutputs[i] - recievedOutputs[i]) ** 2)/numberOfPiecesOfData
      total += squared_error
    return total

  def forwardPropergate(self, a):
    for w,b in zip(self.weights,self.biases):
      a = self.sigmoid(np.matmul(w,a) + b)
      self.hiddenNeuronOutputs.append(a)
    return a

  def backPropergate(self,expectedOutputs,recievedOutputs,dataPerChunk):
    pass

Это мой код, если вам интересно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...