I’m not sure how you’ve created the Dataset, but I assume you are using a custom implementation.
If that’s the case, note that the __len__ method of the Dataset returns the number of samples, which can be drawn from this dataset.
If you expect the train_dataset to have a length of 3716, while only 2112 samples are returned, could you check the return value of print(len(train_dataset)) and see, how what the __len__ method is returning (i.e. how the length is calculated)?