for i in range(epochs):
params_grad = evaluate_gradient(lossfunction, data, params)
params = params - learning_rate * params_grad
for i in range(epoch):
np.random.shuffle(data)
for example in data:
params_grad = evaluate_gradient(lossfunction, example, params)
params = params - learning_rate *params_grad
for i in range(epoch):
np.random.shuffle(data)
for batch in get_batches(data, batch_size=50):
params_grad = evaluate_gradient(lossfunction, batch, params)
params = params - learning_rate *params_grad