У меня проблемы с реализацией обратного распространения для мультиклассовой классификации набора данных 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