An Evaluation of Memory Optimization Methods for Training Neural Networks