learnables / learn2learn

A PyTorch Library for Meta-learning Research
http://learn2learn.net
MIT License
2.61k stars 350 forks source link

TypeError: 'function' object is not iterable #345

Closed farzam-khodajoo closed 2 years ago

farzam-khodajoo commented 2 years ago

Hi, so .. not sure what went wrong

from learn2learn.data.transforms import NWays, KShots, LoadData

def meta_transforms_factory(dataset):
    return [
        NWays(dataset, n=LEARNING_WAYS),
        KShots(dataset, k=LEARNING_SHOTS),
        LoadData(dataset)
    ]

train_meta_transforms = meta_transforms_factory(speech_train_dataset)
validation_meta_transforms = meta_transforms_factory(speech_validation_dataset)

speech_train_task = TaskDataset(
    meta_train_dataset, train_meta_transforms, num_tasks=20000)
speech_validation_task = TaskDataset(
    meta_validation_dataset, validation_meta_transforms, num_task=200)

ouput:

File learn2learn/data/transforms.pyx:238, in learn2learn.data.transforms.NWays.__init__()

File learn2learn/data/transforms.pyx:250, in learn2learn.data.transforms.CythonNWays.__init__()

TypeError: 'function' object is not iterable

image

farzam-khodajoo commented 2 years ago

problem case: https://github.com/learnables/learn2learn/blob/f099ddc9ce0c10cff901ecb1acee2838d171272e/learn2learn/data/transforms.pyx#L250

converts to dictionary, which is not my dataset definition of indices_to_labels:

image

can you give me an example of what should be returned?

farzam-khodajoo commented 2 years ago

my bad, dataset should be first converted into MetaDataset. now it works just fine.