You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was using the metrics below
metrics: ["Recall", "Hit", 'ShannonEntropy', 'GiniIndex']
topk: [20, 50, 100]
But got this error in collector.py:
line 227, in get_data_struct
self.data_struct._data_dict[key] = self.data_struct._data_dict[key].cpu()
AttributeError: 'int' object has no attribute 'cpu'
I found that it was caused when key=data.num_items, yielding that an int cannot be executed by .cpu()
so I changed the following codes:
def get_data_struct(self):
"""Get all the evaluation resource that been collected.
And reset some of outdated resource.
"""
for key in self.data_struct._data_dict:
self.data_struct._data_dict[key] = self.data_struct._data_dict[key].cpu()
returned_struct = copy.deepcopy(self.data_struct)
for key in ["rec.topk", "rec.meanrank", "rec.score", "rec.items", "data.label"]:
if key in self.data_struct:
del self.data_struct[key]
return returned_struct
into:
def get_data_struct(self):
"""Get all the evaluation resource that been collected.
And reset some of outdated resource.
"""
for key in self.data_struct._data_dict:
try:
self.data_struct._data_dict[key] = self.data_struct._data_dict[key].cpu()
except AttributeError:
pass
returned_struct = copy.deepcopy(self.data_struct)
for key in ["rec.topk", "rec.meanrank", "rec.score", "rec.items", "data.label"]:
if key in self.data_struct:
del self.data_struct[key]
return returned_struct
Is this a correct fix? Thankyou for the attention!
The text was updated successfully, but these errors were encountered:
I was using the metrics below
metrics: ["Recall", "Hit", 'ShannonEntropy', 'GiniIndex']
topk: [20, 50, 100]
But got this error in collector.py:
line 227, in get_data_struct
self.data_struct._data_dict[key] = self.data_struct._data_dict[key].cpu()
AttributeError: 'int' object has no attribute 'cpu'
I found that it was caused when key=data.num_items, yielding that an int cannot be executed by .cpu()
so I changed the following codes:
def get_data_struct(self):
"""Get all the evaluation resource that been collected.
And reset some of outdated resource.
"""
for key in self.data_struct._data_dict:
self.data_struct._data_dict[key] = self.data_struct._data_dict[key].cpu()
returned_struct = copy.deepcopy(self.data_struct)
for key in ["rec.topk", "rec.meanrank", "rec.score", "rec.items", "data.label"]:
if key in self.data_struct:
del self.data_struct[key]
return returned_struct
into:
def get_data_struct(self):
"""Get all the evaluation resource that been collected.
And reset some of outdated resource.
"""
for key in self.data_struct._data_dict:
try:
self.data_struct._data_dict[key] = self.data_struct._data_dict[key].cpu()
except AttributeError:
pass
returned_struct = copy.deepcopy(self.data_struct)
for key in ["rec.topk", "rec.meanrank", "rec.score", "rec.items", "data.label"]:
if key in self.data_struct:
del self.data_struct[key]
return returned_struct
Is this a correct fix? Thankyou for the attention!
The text was updated successfully, but these errors were encountered: