save only non-zero to the model and add shuffle in training