RUCAIBox / RecBole

A unified, comprehensive and efficient recommendation library
https://recbole.io/
MIT License
3.35k stars 603 forks source link

[🐛BUG] Switching eval_args mode to 'full' from 'uni100' creates error #1658

Closed bhuebner3 closed 1 year ago

bhuebner3 commented 1 year ago

When using 'full' instead of 'uni100', the program gives the following error. No other settings are changed.

Traceback (most recent call last): File "C:\Users\Blake\OneDrive\Documents\From_Old_Comp\Vienna\Classes\Thesis\Code\RecBole-FairRec-master - Colab\run_recbole.py", line 30, in run_recbole(model=args.model, dataset=args.dataset, config_file_list=config_file_list) File "C:\Users\Blake\OneDrive\Documents\From_Old_Comp\Vienna\Classes\Thesis\Code\RecBole-FairRec-master - Colab\recbole\quick_start\quick_start.py", line 56, in run_recbole best_valid_score, best_valid_result = trainer.fit( File "C:\Users\Blake\OneDrive\Documents\From_Old_Comp\Vienna\Classes\Thesis\Code\RecBole-FairRec-master - Colab\recbole\trainer\trainer.py", line 377, in fit valid_score, valid_result = self._valid_epoch(valid_data, show_progress=show_progress) File "C:\Users\Blake\OneDrive\Documents\From_Old_Comp\Vienna\Classes\Thesis\Code\RecBole-FairRec-master - Colab\recbole\trainer\trainer.py", line 217, in _valid_epoch valid_result = self.evaluate(valid_data, load_best_model=False, show_progress=show_progress) File "C:\Users\Blake\anaconda3\envs\Run_algos\lib\site-packages\torch\autograd\grad_mode.py", line 27, in decorate_context return func(*args, *kwargs) File "C:\Users\Blake\OneDrive\Documents\From_Old_Comp\Vienna\Classes\Thesis\Code\RecBole-FairRec-master - Colab\recbole\trainer\trainer.py", line 510, in evaluate self.eval_collector.eval_batch_collect(scores, interaction, positive_u, positive_i) File "C:\Users\Blake\OneDrive\Documents\From_Old_Comp\Vienna\Classes\Thesis\Code\RecBole-FairRec-master - Colab\recbole\evaluator\collector.py", line 186, in eval_batch_collect neg_items = interaction[self.config['ITEM_ID_FIELD']][pos_len: pos_len2] File "C:\Users\Blake\OneDrive\Documents\From_Old_Comp\Vienna\Classes\Thesis\Code\RecBole-FairRec-master - Colab\recbole\data\interaction.py", line 131, in getitem return self.interaction[index] KeyError: 'item_id'

The config file I'm using is:

ITEM_ID_FIELD: item_id RATING_FIELD: rating TIME_FIELD: timestamp USER_ID_FIELD: user_id checkpoint_dir: saved epochs: 400 eval_args: group_by: user mode: full order: RO split: RS:

peteryang1031 commented 1 year ago

Thank you for pointing out this problem. We have tested your mentioned bug and this is always occured. We have figured out the reason is that there is no specific designed code for full-sort paradigm in FairRec. We have fixed this bug and updated it in the latest version. Welcome to download it and use!