fastai学习者要求和批量预测

Aus*_*tin 8 machine-learning predict batch-processing python-3.x fast-ai

我之前使用fastai库训练了一个resnet34模型,并保存了weights.h5文件.使用最新版本的fastai,我是否还需要非空列车和有效文件夹才能导入我的学习者并在测试集上进行预测?

此外,我正在循环遍历每个测试图像并使用learn.predict_array,但是有没有办法在测试文件夹中批量预测?

我目前正在加载/预测的示例:

PATH = '/path/to/model/'
sz = 224
arch=resnet34
tfms = tfms_from_model(resnet34, sz, aug_tfms=transforms_side_on, max_zoom=1.1)
data = ImageClassifierData.from_paths(PATH, tfms=tfms, bs=64)
learn = ConvLearner.pretrained(arch, data, precompute=False)
learn.unfreeze()
learn.load('224_all')

imgs = sorted(glob(os.path.join(test_path, '*.jpg')))
preds = []
_,val_tfms = tfms_from_model(resnet34, 224)
for n, i in enumerate(imgs):
        im = val_tfms(open_image(i))[None]
        preds.append(1-np.argmax(learn.predict_array(im)[0]))
Run Code Online (Sandbox Code Playgroud)

现在必须有更清洁的方法来做到这一点,不是吗?

Sta*_*ean 5

在 fastai 中,您现在可以导出和加载学习器以对测试集进行预测,而无需加载非空的训练和验证集。为此,您应该使用export方法和load_learner函数(两者都在 basic_train 中定义)。

在您当前的情况下,您可能必须以旧方式加载您的学习器(使用训练/有效数据集),然后将其导出,您将能够使用它对load_learner您的测试集进行预测。

我将留下指向文档的链接:

- https://docs.fast.ai/basic_train.html#Deploying-your-model

这应该澄清任何后续问题。