Я тренировал модель с fastai.tabular
.Теперь у меня есть подходящий ученик.В конечном счете, модели нужно применять к новым данным, а не просто устанавливать на тренировочном наборе и оценивать на тестовом наборе и т. Д. Я пробовал разные вещи, которые приводили к ошибкам или какой-то странности.Есть ли способ применить модель, обученную с помощью fastai, к ранее недоступным данным?Или мне нужно снова и снова обучать модель и вводить новые данные испытаний?Это маловероятно.
df_test = pd.read_parquet('generated_test.parquet').head(100)
test_data = TabularList.from_df(df_test, cat_names=cat_names, cont_names=cont_names)
prediction = learn.predict(test_data)
KeyError: 'atomic_distance'
atomic_distance
- это имя столбца, присутствующего как в данных обучения, так и в тесте, итакже содержится в cont_names
.
prediction = learn.get_preds(kaggle_test_data)
Это что-то делает, но возвращает что-то странное:
[tensor([[136.0840],
[ -2.0286],
[ -2.0944],
...,
[135.6165],
[ 2.7626],
[ 8.0316]]),
tensor([ 84.8076, -11.2570, -11.2548, ..., 81.0491, 0.8874, 4.1235])]
Документация гласит:
Строка документа:Вернуть прогнозы и цели на ds_type
наборе данных.
Это новые, немаркированные данные.Я не знаю, почему возвращаемый объект должен иметь метки.Откуда они?Также размер не имеет смысла.Я ожидаю чего-то с 100 значениями.
Я нашел очень быстрый путь, передавая строку данных за строкой:
prediction = [float(learn.predict(df_test.loc[i])[0].data) for i in df_test.index]
Также существует метод predict_batch
, но он делаеткажется, принимают datafames.Есть ли лучшие способы сделать это?