Это из библиотеки fastai .Итак, вызов этой функции:
md = ColumnarModelData(PATH, ColumnarDataset.from_data_frame(trn_df, cat_flds=cat_vars, y=trn_y),
ColumnarDataset.from_data_frame(val_df, cat_flds=cat_vars, y=val_y), bs=128, test_ds=test_ds)
vars(md)
Дает этот результат:
{'path': 'data/rossmann/',
'test_dl': <fastai.dataloader.DataLoader at 0x112c93d68>,
'trn_dl': <fastai.dataloader.DataLoader at 0x112c93e80>,
'val_dl': <fastai.dataloader.DataLoader at 0x112c93a20>}
Но я могу получить тот же результат, выполнив:
md = {'path':PATH,
'test_dl':DataLoader(test_ds, batch_size=128, shuffle=False, num_workers=1),
'trn_dl':DataLoader(trn_df, batch_size=128, shuffle=False, num_workers=1),
'val_dl':DataLoader(val_df, batch_size=128*2, shuffle=False, num_workers=1)}
md
, который дает:
{'path': 'data/rossmann/',
'test_dl': <fastai.dataloader.DataLoader at 0x1c20e9cc88>,
'trn_dl': <fastai.dataloader.DataLoader at 0x1c20d5f8d0>,
'val_dl': <fastai.dataloader.DataLoader at 0x1c20d5f320>}
Однако они ведут себя очень по-разному, когда пытаются использовать их в других функциях.Как в:
m = StructuredLearner(md, StructuredModel(to_gpu(model)), opt_fn=optim.Adam)
Это нормально работает, когда я использую начальный метод md = ColumnarModelData()
, но не работает, когда я строю его самостоятельно, выдает эту ошибку:
AttributeError: у объекта 'dict' нет атрибута 'path'
Что именно здесь не так?