Dataloader not returning paths variable from hdf5 dataset


I have an issue returning the paths of files from a hdf5 dataset using the dataloader.

I get the following error:
TypeError: default_collate: batch must contain tensors, numpy arrays, numbers, dicts or lists; found object

It works fine, for dataum and label, which are tensors, however, it does not work for “path”.

An example path stored in the hdf5 dataset:

Below is the code on the features_dataset class:

import h5py
from torch.utils import data
from torchvision import transforms as T

class Features_Dataset(data.Dataset):
    def __init__(self, archive, phase):
        self.archive = h5py.File(archive, 'r')
        self.labels = self.archive[str(phase) + '_labels'] = self.archive[str(phase) + '_all_arrays']
        self.img_paths = self.archive[str(phase) + '_img_paths']

    def __getitem__(self, index):
        datum =[index]
        label = int(self.labels[index])
        path = self.img_paths[index]
        return datum, label, path

    def __len__(self):
        return len(

    def close(self):

if __name__ == '__main__':
    train_dataset = Features_Dataset(archive= "featuresdata/train.hdf5", phase= 'train')
    trainloader = data.DataLoader(train_dataset, num_workers=1, batch_size=1)
    for i, (data, label, path) in enumerate(trainloader):

Here is an small script of what I did to store the particular paths in the hdf5 dataset:

if sys.version_info >= (3, 0):
        string_type = h5py.special_dtype(vlen=str)
        string_type = h5py.special_dtype(vlen=unicode)  # noqa

labels_shape = (dataset_length, args.batch_size)
path = args.HDF5_dataset + f'{phase}.hdf5'

with h5py.File(path, mode='a') as hdf5_file:
     array_paths = hdf5_file.create_dataset(
                    f'{phase}_img_paths', labels_shape, maxshape=(None, args.batch_size), dtype=string_type)

I’m not really sure what to do as paths are returned fine with alternative dataloaders when reading from. a directory of images…