Как рассчитать производные обратного распространения для 2 скрытых слоев? - PullRequest
0 голосов
/ 29 апреля 2020

Я застрял на обратном распространении второго скрытого слоя. Это мой код:

    def sigmoid(self, x):
            return 1/(1+np.exp(-x))

        def sigmoid_der(self, x):
            return self.sigmoid(x) *(1-self.sigmoid(x))

        def __init__(self):
          self.inputsize = 1
          self.hiddenlayorsize1 = 6
          self.hiddenlayorsize2 = 6
          self.outputlayoursize = 1

          self.W1 = np.random.randn(self.inputsize, self.hiddenlayorsize1)
          self.W2 = np.random.randn(self.hiddenlayorsize1, self.hiddenlayorsize2)
          self.w3 = np.random.randn(self.hiddenlayorsize2, self.outputlayoursize)

        def feedforward(self, X):
            self.z = np.dot(X, self.W1)
            self.z2 = self.sigmoid(self.z)

            self.z3 = np.dot(self.z2, self.W2)
            self.z4 = self.sigmoid(self.z3)

            self.z5 = np.dot(self.z4, self.w3)
            output = self.sigmoid(self.z5)

            return output
        def backward(self, X, y, output):
            self.output_error = y - output
            self.output_delta = self.output_error * self.sigmoid_der(output)

            print(self.output_error.sum())

            self.z2_error = X.T.dot(self.W2.T)
            self.z2_delta = self.z2_error * self.sigmoid_der(self.z2)
            # Here we need to add the error for the second hidden layer
            # self.z4_error = ... 
        def train(self, X, y):
            output = self.feedforward(X)
            self.backward(X, y, output)

Знаете ли вы, как рассчитать ошибку для второго скрытого слоя, и если да, можете ли вы добавить какое-нибудь объяснение? Спасибо!

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