Did you verify that all the contents within fit(…) are being called correctly? Like, is n_epochs set > 0 ?
Perhaps add to:

for _ in range(n_batch):
# get the inputs
x, y = X_train[start:end], Y_train[start:end]
print(_) # <-- add here, verify inner loop is being called