gpt4 book ai didi

python - 如何在 fast ai 中获得给定测试集的预测和计算准确度?

转载 作者:行者123 更新时间:2023-12-03 19:08:56 24 4
gpt4 key购买 nike

我正在尝试加载由 learn.export() 导出的学习器我想针对测试集运行它。我希望我的测试集有标签,以便我可以测量其准确性。
这是我的代码:

test_src = (TextList.from_df(df, path, cols='texts')
.split_by_rand_pct(0.1, seed=42)
.label_from_df(cols='recommend'))

learn_fwd = load_learner(path + '/fwd_learn_c',
test=test_src) #, tfm_y=False)


pred_fwd,lbl_fwd = learn_fwd.get_preds(ds_type=DatasetType.Test,ordered=True)
accuracy(pred_fwd, lbl_fwd)
我得到了以下错误,它显然不接受带标签的数据集!!
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-22-7f52f2136d8e> in <module>
6
7 learn_fwd = load_learner(path + '/fwd_learn_c',
----> 8 test=test_src) #, tfm_y=False)
9 learn_bwd = load_learner(path + '/bwd_learn_c',
10 test=test_src) #, tfm_y=test_src)

~/miniconda3/lib/python3.7/site-packages/fastai/basic_train.py in load_learner(path, file, test, tfm_y, **db_kwargs)
622 model = state.pop('model')
623 src = LabelLists.load_state(path, state.pop('data'))
--> 624 if test is not None: src.add_test(test, tfm_y=tfm_y)
625 data = src.databunch(**db_kwargs)
626 cb_state = state.pop('cb_state')

~/miniconda3/lib/python3.7/site-packages/fastai/data_block.py in add_test(self, items, label, tfms, tfm_y)
562 "Add test set containing `items` with an arbitrary `label`."
563 # if no label passed, use label of first training item
--> 564 if label is None: labels = EmptyLabelList([0] * len(items))
565 else: labels = self.valid.y.new([label] * len(items)).process()
566 if isinstance(items, MixedItemList): items = self.valid.x.new(items.item_lists, inner_df=items.inner_df).process()

TypeError: object of type 'LabelLists' has no len()

最佳答案

似乎对于测试集,它只接受一个 ItemList (没有标签)。在上面的例子中,我将一个 LabelList 传递给它,这是错误的来源。无论如何,为了获得测试集的准确性,我找到了以下解决方案:

# Create your test set:
data_test = (TextList.from_df(df, path, cols='texts')
.split_by_rand_pct(0.1, seed=42)
.label_from_df(cols='recommend'))

data_test.valid = data_test.train
data_test=data_test.databunch()

# Set the validation set of the learner by the test data you created
learn.data.valid_dl = data_test.valid_dl

# Now y refers to the actual labels in the data set
preds, y = learn.get_preds(ds_type=DatasetType.Valid)
acc = accuracy(preds, y)

# Alternatively you can call validate if you don't want the predictions

acc = learn.validate()[1]

关于python - 如何在 fast ai 中获得给定测试集的预测和计算准确度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62871267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com