Не в состоянии предсказать выход в Фастай - PullRequest
1 голос
/ 27 мая 2019

Нуб здесь.

Вот набор данных, над которым я работаю https://www.kaggle.com/arpitjain007/game-of-deep-learning-ship-datasets

и я использую fastai, я успешно построил модель, но не знаю, как проверить ее с помощью файла 'test.csv'.

Вот мой код

from fastai import *
from fastai.vision import *

path = '../input/train'
path = Path(path)
path.ls()
df = pd.read_csv(path/'train.csv')
data = ImageDataBunch.from_df('../input/train/images', df, ds_tfms=get_transforms(), size=224, bs=64 ).normalize(imagenet_stats)
learn = cnn_learner(data, models.resnet50, metrics=accuracy,  model_dir='/kaggle/working/models')
learn.fit_one_cycle(5)
df_test = pd.read_csv('../input/test_ApKoW4T.csv')

Я не знаю, как использовать тестовый фрейм данных для прогнозирования.

Ответы [ 3 ]

2 голосов
/ 30 мая 2019

Все, что мне нужно было сделать, это создать список изображений

train = ImageList.from_df(df,'../input/train/images')
test = ImageList.from_df(df_test, '../input/train/images')

затем создайте ImageDataBunch

data = ImageDataBunch.from_df('../input/train/images', df, 
ds_tfms=get_transforms(), size=224, bs=64 ).normalize(imagenet_stats)

затем добавьте тест

data.add_test(test)

, а затем прогнозировать, используя

predictions, *_ = learn.get_preds(DatasetType.Test)
labels = np.argmax(predictions, 1)
df_test['category'] = labels
1 голос
/ 28 мая 2019

Проверьте это ядро https://www.kaggle.com/matejthetree/digit-recognizer-fast-ai-customimagelist?scriptVersionId=14597759

при инициализации данных вы добавляете в него тестовую группу

data = (CustomImageList.from_csv_custom(path=path, csv_name='train.csv', imgIdx=1)
                .split_by_rand_pct(.2)
                .label_from_df(cols='label')
                .add_test(test, label=0)
                .transform(tfms)
                .databunch(bs=128, num_workers=0)
                .normalize(imagenet_stats))

позже вы получите прогнозы

predictions, *_ = learn.get_preds(DatasetType.Test)
labels = np.argmax(predictions, 1)
# output to a file
submission_df = pd.DataFrame({'ImageId': list(range(1,len(labels)+1)), 'Label': labels})
submission_df.to_csv(f'submission.csv', index=False)
0 голосов
/ 25 июня 2019

Хитрость в том, чтобы использовать ImageList вместо ImageDataBunch.

...