in the source code for the function as shown below:
def benchmark_from_datasets(**dataset_streams: Sequence[TCLDataset]) -> CLScenario:
"""Creates a benchmark given a list of datasets for each stream.
Each dataset will be considered as a separate experience.
Contents of the datasets must already be set, including task labels.
Transformations will be applied if defined.
Avalanche benchmarks usually provide at least a train and test stream,
but this generator is fully generic.
To use this generator, you must convert your data into an Avalanche Dataset.
:param dataset_streams: A dictionary with stream-name as key and
list-of-datasets as values, where stream-name is the name of the stream,
while list-of-datasets is a list of Avalanche datasets, where
list-of-datasets[i] contains the data for experience i.
"""
exps_streams = []
for stream_name, data_s in dataset_streams.items():
for dd in data_s:
if not isinstance(dd, AvalancheDataset):
raise ValueError("datasets must be AvalancheDatasets")
des = [
DatasetExperience(dataset=dd, current_experience=eid)
for eid, dd in enumerate(data_s)
]
s = EagerCLStream(stream_name, des)
exps_streams.append(s)
return CLScenario(exps_streams)
the parameter dataset_streams is given as a kwarg and it gives error as it doesn't accept the dict rpovided by the user instead uses this dataset_streams as the inbuilt dict, thus always raise the Value error as the variable dd in above code is always a string. I removed the ** and now it works fine for me.
in the source code for the function as shown below:
the parameter dataset_streams is given as a kwarg and it gives error as it doesn't accept the dict rpovided by the user instead uses this dataset_streams as the inbuilt dict, thus always raise the Value error as the variable dd in above code is always a string. I removed the ** and now it works fine for me.