By using a single numpy array at train time, the user is currently limited to building models on dataset sizes that fit in RAM. Instead, we should allow the user to train on a generator (akin to fit_generator in keras), which can read data as needed from disk. Perhaps the user can pass a pytorch.Dataset instead of a numpy array.