I guess features is still attached to the computation graph, thus all intermediate tensors (which would be needed for a backward call), are still on the device.
If you don’t need to backpropagate using the features stored in list_a, you could just detach the tensors before appending to the list via:
list_a.append(features.detach().cpu())