параметры нейронной сети не обновляются внутри forloop для спуска mini_batch_gradient - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть нейронная сеть в наборе данных mnist, и я пытаюсь реализовать спуск mini_batch_gradient.Я запустил свой код, используя пакетный градиентный спуск, и, хотя он длился вечно, он работал.Но сейчас я пытаюсь спускаться по градиенту mini_batch, и по каким-то причинам мои параметры не обновляются внутри моего цикла.Я не уверен, что с моим кодом что-то не так, но любая помощь приветствуется.

alpha = 0.01
epochs = 10
mini_batch_size = 32
for i in range(epochs):
   mini_batches_x = [x_train[k:k+mini_batch_size] for k in range(0,m,mini_batch_size)]
   mini_batches_y = [y_train_encoded[k:k+mini_batch_size] for k in range(0,m,mini_batch_size)]
   for i in range(len(mini_batches_x)):
     x = mini_batches_x[i].T
     y = mini_batches_y[i].T

     z1, a1, z2, a2 = feed_forward(x,w1,w2,b1,b2)

     dw2, dw1, db2, db1 = backprop(x, y, a2, z2, a1, z1, w1, w2, b1, b2)


     w1 = w1 - alpha*dw1
     w2 = w2 - alpha*dw2
     b1 = b1 - alpha*db1
     b2 = b2 - alpha*db2

Я выполнил некоторую отладку, а все остальное, например dw1 и dw2, обновляется после цикла forно w1, w2, b1 и b2 не меняются вообще.Я знаю, что это ошибка кодирования, но просто не могу понять, почему так что любое объяснение и решение будут высоко оценены.Спасибо!

...