Как мне найти производную softmax в Python - PullRequest
0 голосов
/ 21 сентября 2018

У меня проблемы с реализацией обратного распространения для мультиклассовой классификации набора данных CIFAR10

В моей нейронной сети 2 слоя

прямое распространение

X -> L1 -> L2

весовые коэффициенты w2 инициализируются как случайные

np.random.randn(L1.shape[0], X.shape[0]) * 0.01

X - ввод размера (no_features * количество примеров)

Z1 = (w1 * x) + b1

A1 = relu(Z1)

L1 имеет ReLuактивация

Z2 = (w2 * A1) + b2

A2 = softmax(Z1)

L2 имеет softmax активацию

стоимость рассчитывается с использованием этого уравнения

cost = -(1/m)*np.sum((Y * np.log(A2) ) + ((1 - Y)*np.log(1-A2)))

обратное распространение

вычисляется производная стоимости

dA2 = -(1/m)*(np.divide(Y, A2) - np.divide(1 - Y, 1 - A2))

dA2 = производная от A2

Y = одно горячее закодированное значение True

теперь, как мне перейти отсюда

как мне найти dZ2 (производная Z2) с использованием dA2

...