An overview of gradient descent optimization algorithms