Работа с алгоритмом обратного распространения с использованием функции softmax в нейронной сети - PullRequest
1 голос
/ 18 апреля 2020

Я создаю нейронную сеть с нуля для данных MNIST, поэтому у меня есть 10 классов в выходном слое. Мне нужно выполнить обратное распространение, и для этого мне нужно вычислить dA*dZ для последнего слоя, где dA является производной от функции потерь L относительно функции активации softmax A и dZ является производной от функция активации softmax A относительно z, где z=wx+b. Размер, полученный для dA, равен 10*1, тогда как размер, полученный для dZ, равен 10*10.

Это правильно? Если да, то кого я умножу dA*dZ, поскольку они имеют разное измерение.

1 Ответ

2 голосов
/ 18 апреля 2020

Вы почти у цели. Однако вам нужно транспонировать dA, например, с numpy.transpose(dA). Тогда у вас будут правильные размеры dA и dZ для выполнения умножения матриц.

...