By the way, Im using decay as the parameter in keras , so im passing 1e-6 to the decay.
print("Starting training...")
training_start_time = time.clock()
total_train_batches = 0
for epoch in range(0, max_epochs):
# In each epoch, do a full pass over the training data:
train_err = 0
train_batches = 0
start_time = time.time()
for batch in self.minibatch_iterator(X, Y, self.batch_size):
inputs, targets = batch
train_err += self.train_fn(inputs, targets)
train_batches += 1
total_train_batches = total_train_batches + train_batches
# And a full pass over the validation data:
val_err = 0
val_acc = 0
val_batches = 0
for batch in self.minibatch_iterator(X_val, Y_val, self.batch_size):
inputs, targets = batch
err, acc = self.val_fn(inputs, targets)
val_err += err
val_acc += acc
val_batches += 1
# Calculate Results
trainingLoss = (train_err / train_batches)
validationLoss = (val_err / val_batches)
validationAccuracy = (val_acc / val_batches * 100)
# Then print the results for this epoch:
print("Epoch {} of {} took {:.3f}s".format(epoch + 1, max_epochs, time.time() - start_time))
print(" Training Loss:\t\t{:.6f}".format(trainingLoss))
print(" Validation Loss:\t\t{:.6f}".format(validationLoss))
print(" Validation Accuracy:\t\t{:.4f} %".format(validationAccuracy))
if decay > 0:
lr = shared_learning_rate.get_value() * (1. / (1. + decay * total_train_batches))
shared_learning_rate.set_value(np.float32(lr))
print "...Current Learning Rate : ", np.float32(shared_learning_rate.get_value())