Как добавить, создать набор данных и разделить с помощью split_from_df на обучающий, действительный и тестовый набор?

#machine-learning #deep-learning #fast-ai #dataloader

Вопрос:

Я работаю над медицинскими изображениями, на которых я диагностирую болезнь. Я создаю базу данных, используя какой-то пользовательский загрузчик данных с помощью fastai. Код, который я использую, приведен ниже: Но этот код создает только поезд и допустимое разделение. Допустимое разделение включает в себя набор тестов, поскольку я не знаю, как отдельно загрузить набор тестов. Мои наборы уже определены в фрейме данных на 80%, 10%, 10%, обучаются, действительны и тестируются соответственно.

Мой код загрузчика данных:

 def get_chestxray8(path:PathOrStr, bs:int, img_sz:int, valid_only_bbx:bool=False, tfms:bool=True, convert_mode:str='RGB',
                   normalize:bool=True, norm_stats:Tuple[Floats, Floats]=imagenet_stats, processor:Optional[Callable]=None,
                   **kwargs:Any)->DataBunch:
    '''
    TODO
    '''
    path = Path(path)
    df = pd.read_pickle(path / 'full_ds_bbx.pkl')
    df['is_valid'] = df.set!='Train'
    if valid_only_bbx: df = df[(df.set=='Train') | df.bbx]

    if processor is not None: df = processor(df)

    lbl_dict = df[['file','label']].set_index('file')['label'].to_dict()
    def bbox_label_func(fn:str)->list: return lbl_dict[Path(fn).name]
    lbls = ['No finding', 'Atelectasis', 'Cardiomegaly', 'Consolidation', 'Infiltration', 
    'Lung Opacity', 'Mass', 'Pleural effusion', 'Pleural thickening', 'Pneumothorax', 'Pulmonary fibrosis']


    src = (CustomObjectItemList.from_df(df, path / 'images', cols='file', convert_mode=convert_mode)
                               .split_from_df('is_valid')
                               .label_from_func(bbox_label_func, classes=lbls))

    if tfms: src = src.transform(get_transforms(**kwargs), size=img_sz, tfm_y=True)

    data =  src.databunch(bs=bs, collate_fn=multiclass_bb_pad_collate)
    if normalize: data = data.normalize(stats=norm_stats)

    return data