无法在fastai中预测输出。

3

新手上路。

这是我正在处理的数据集: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')

我不知道如何使用测试数据框来进行预测。

你尝试过将测试数据传递到学习器中吗?然后稍后,你可以使用学习器进行预测。 - Tree
3个回答

9

我只需要创建一个图像列表即可。

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

请查看这个内核 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)

这个 CustomImageList 是基于 ImageList 的,对吗? - prosti

0

诀窍是使用ImageList而不是ImageDataBunch


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接