代码之家  ›  专栏  ›  技术社区  ›  Austin

fastai学习者需求和批量预测

  •  5
  • Austin  · 技术社区  · 7 年前

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

    此外,Im目前正在循环通过每个测试图像并使用 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]))
    

    2 回复  |  直到 7 年前
        1
  •  5
  •   Statistic Dean    7 年前

    在fastai中,您现在可以导出并加载学习者在测试集上进行预测,而无需加载非空的培训和验证集。要做到这一点,您应该使用 export load_learner 功能(两者均在基本列车中定义)。

    加载学习器

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

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

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

        2
  •  4
  •   Sunhwan Jo    7 年前
    data = ImageClassifierData.from_paths(PATH, tfms=tfms, bs=64)
    learn = ConvLearner.pretrained(arch, data, precompute=False)
    learn.unfreeze()
    learn.load('224_all')
    
    preds = learn.predict(is_test=True)