fastai学习器需求和批量预测

我之前使用fastai库训练了一个resnet34模型,并保存了weights.h5文件。使用fastai的最新版本时,我还需要保留非空的训练和验证文件夹来导入我的学习器并在测试集上进行预测吗?

另外,我目前正在遍历每个测试图像并使用learn.predict_array,有没有一种方法可以在测试文件夹上进行批量预测?

这是我目前用于加载/预测的示例代码:

PATH = '/path/to/model/'sz = 224arch=resnet34tfms = 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]))

现在应该有更简洁的方法来做这件事,对吗?


回答:

在fastai中,你现在可以导出并加载一个学习器来在测试集上进行预测,而无需加载非空的训练和验证集。要做到这一点,你应该使用export方法和load_learner函数(这两个都在basic_train中定义)。

在你当前的情况下,你可能需要以旧的方式加载你的学习器(使用训练/验证数据集),然后导出它,这样你就可以使用load_learner在你的测试集上进行预测了。

我会留下一个文档链接:

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注