Gluoncv fcn: should replace trainval with train?

    BASE_DIR = 'VOC2012'
    NUM_CLASS = 21
    def __init__(self, root=os.path.expanduser('~/.mxnet/datasets/voc'),
                 split='train', mode=None, transform=None):
        super(VOCSegmentation, self).__init__(root, split, mode, transform)
        _voc_root = os.path.join(root, self.BASE_DIR)
        _mask_dir = os.path.join(_voc_root, 'SegmentationClass')
        _image_dir = os.path.join(_voc_root, 'JPEGImages')
        # train/val/test splits are pre-cut
        _splits_dir = os.path.join(_voc_root, 'ImageSets/Segmentation')
        if split == 'train':
            _split_f = os.path.join(_splits_dir, 'trainval.txt')
        elif split == 'val':
            _split_f = os.path.join(_splits_dir, 'val.txt')
        elif split == 'test':
            _split_f = os.path.join(_splits_dir, 'test.txt')
        else:
            raise RuntimeError('Unknown dataset split.')

this codes are from gluoncv.data.pascal_voc.segmentation.py. here using “trainval” for train and “val” for val is correct? i think “val” is just subset of 'trainval"

No, train and val are different sets. And by convention, if you are not doing competition, you probably want to group them into a larger training set.

according to the codes, training with “trainval” and validation with “val”. and “val” is just subset of “trainval”.

should the set used for training be differenet with one used for validation?

i think following codes make more sense

    if split == 'train':
        _split_f = os.path.join(_voc_root, 'train.txt')
    elif split == 'val':
        _split_f = os.path.join(_voc_root, 'val.txt')

or

    if split == 'train':
       _split_f = os.path.join(_voc_root, 'trainval.txt')
   elif split == 'val':
      _split_f = os.path.join(_voc_root, 'test.txt')