Я пытаюсь настроить обратное распространение для моей нейронной сети, используя numpy, но по какой-то причине, когда я устанавливаю уравнение приличия градиента для матрицы, которая содержит мои выходные веса, две из матрицы (2,5)(5,1) в градиентном приличном уравнении не вещают вместе.Я делаю это неправильно?
Я пытался разбить уравнение на разные части, чтобы увидеть, есть ли что-то еще, что может быть причиной этого, но до сих пор я указал его конкретно на всематрица в числителе и вся матрица в знаменателе (градиентное порядочное уравнение является дробной).Я также подумал, что это может происходить между исходными весами вывода и уравнением достойного градиента, но это также неверно, потому что матрица для выходных весов равна (5,2), а не (2,5).Я также пробовал функции, отличные от numpy.divide, например, используя numpy.dot для умножения первого уравнения на второе до степени -1.
рассеченный код
self.outputWeights = self.outputWeights - l *
#numarator
( -numpy.divide((2 * (numpy.dot(y.reshape(self.outputs, 1), (1+numpy.power(e, -n-b))).reshape(self.neurons, self.outputs)-w)).reshape(self.outputs, self.neurons),
#denominator
(numpy.power(1+ numpy.power(e, -n-b), 2)).reshape(self.neurons, 1)))
фактическийcode
n = self.HIDDEN[self.layers]
b = self.bias[self.layers]
w = self.outputWeights
self.outputWeights = self.outputWeights - l * ( -numpy.divide((2 * (numpy.dot(y.reshape(self.outputs, 1), (1+numpy.power(e, -n-b))).reshape(self.neurons, self.outputs)-w)).reshape(self.outputs, self.neurons), (numpy.power(1+ numpy.power(e, -n-b), 2)).reshape(self.neurons, 1)))
Я ожидал, что из-за того, что столбцы первой матрицы и строки второй матрицы имеют одинаковый размер, у него не будет проблем.