{"id":13936448,"url":"https://github.com/NVIDIA/DeepRecommender","last_synced_at":"2025-07-19T22:30:27.135Z","repository":{"id":44930802,"uuid":"102903284","full_name":"NVIDIA/DeepRecommender","owner":"NVIDIA","description":"Deep learning for recommender systems","archived":true,"fork":false,"pushed_at":"2021-05-17T23:38:49.000Z","size":1397,"stargazers_count":1687,"open_issues_count":11,"forks_count":340,"subscribers_count":75,"default_branch":"master","last_synced_at":"2024-08-08T23:23:40.466Z","etag":null,"topics":["collaborative-filtering","deep-autoencoders","deep-learning","gpu","recommendation-engine"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NVIDIA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-08T20:48:44.000Z","updated_at":"2024-08-05T16:48:29.000Z","dependencies_parsed_at":"2022-09-08T03:20:33.885Z","dependency_job_id":null,"html_url":"https://github.com/NVIDIA/DeepRecommender","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NVIDIA%2FDeepRecommender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NVIDIA%2FDeepRecommender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NVIDIA%2FDeepRecommender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NVIDIA%2FDeepRecommender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NVIDIA","download_url":"https://codeload.github.com/NVIDIA/DeepRecommender/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226686720,"owners_count":17666928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collaborative-filtering","deep-autoencoders","deep-learning","gpu","recommendation-engine"],"created_at":"2024-08-07T23:02:40.888Z","updated_at":"2024-11-27T04:31:02.635Z","avatar_url":"https://github.com/NVIDIA.png","language":"Python","readme":"# Deep AutoEncoders for Collaborative Filtering\nThis is not an official NVIDIA product. It is a research project described in: \"Training Deep AutoEncoders for Collaborative Filtering\"(https://arxiv.org/abs/1708.01715)\n\n### The model\nThe model is based on deep AutoEncoders.\n\n![AutEncoderPic](./AutoEncoder.png)\n\n## Requirements\n* Python 3.6\n* [Pytorch](http://pytorch.org/): `pipenv install`\n* CUDA (recommended version \u003e= 8.0)\n\n\n## Training using mixed precision with Tensor Cores\n* You would need NVIDIA Volta-based GPU\n* Checkout [mixed precision branch](https://github.com/NVIDIA/DeepRecommender/tree/mp_branch)\n* For theory on mixed precision training see [Mixed Precision Training paper](https://arxiv.org/abs/1710.03740)\n\n## Getting Started\n\n### Run unittests first\nThe code is intended to run on GPU. Last test can take a minute or two.\n```\n$ python -m unittest test/data_layer_tests.py\n$ python -m unittest test/test_model.py\n```\n\n### Tutorial\nCheckout [this tutorial](https://github.com/miguelgfierro/sciblog_support/blob/master/Intro_to_Recommendation_Systems/Intro_Recommender.ipynb) by [miguelgfierro](https://github.com/miguelgfierro).\n\n### Get the data\n\n**Note: Run all these commands within your `DeepRecommender` folder**\n\n[Netflix prize](http://netflixprize.com/)\n\n* Download from [here](http://academictorrents.com/details/9b13183dc4d60676b773c9e2cd6de5e5542cee9a) into your ```DeepRecommender``` folder\n```\n$ tar -xvf nf_prize_dataset.tar.gz\n$ tar -xf download/training_set.tar\n$ python ./data_utils/netflix_data_convert.py training_set Netflix\n```\n\n#### Data stats\n| Dataset  | Netflix 3 months | Netflix 6 months | Netflix 1 year | Netflix full |\n| -------- | ---------------- | ---------------- | ----------- |  ------------ |\n| Ratings train | 13,675,402 | 29,179,009 | 41,451,832 | 98,074,901 |\n| Users train | 311,315 |390,795  | 345,855 | 477,412 |\n| Items train | 17,736 |17,757  | 16,907 | 17,768 |\n| Time range train | 2005-09-01 to 2005-11-31 | 2005-06-01 to 2005-11-31 | 2004-06-01 to 2005-05-31 | 1999-12-01 to 2005-11-31\n| -------- | ---------------- | ----------- |  ------------ |\n| Ratings test | 2,082,559 | 2,175,535  | 3,888,684| 2,250,481 |\n| Users test | 160,906 | 169,541  | 197,951| 173,482 |\n| Items test | 17,261 | 17,290  | 16,506| 17,305 |\n| Time range test | 2005-12-01 to 2005-12-31 | 2005-12-01 to 2005-12-31 | 2005-06-01 to 2005-06-31 | 2005-12-01 to 2005-12-31\n\n### Train the model\nIn this example, the model will be trained for 12 epochs. In paper we train for 102.\n```\npython run.py --gpu_ids 0 \\\n--path_to_train_data Netflix/NF_TRAIN \\\n--path_to_eval_data Netflix/NF_VALID \\\n--hidden_layers 512,512,1024 \\\n--non_linearity_type selu \\\n--batch_size 128 \\\n--logdir model_save \\\n--drop_prob 0.8 \\\n--optimizer momentum \\\n--lr 0.005 \\\n--weight_decay 0 \\\n--aug_step 1 \\\n--noise_prob 0 \\\n--num_epochs 12 \\\n--summary_frequency 1000\n```\n\nNote that you can run Tensorboard in parallel\n```\n$ tensorboard --logdir=model_save\n```\n\n### Run inference on the Test set\n```\npython infer.py \\\n--path_to_train_data Netflix/NF_TRAIN \\\n--path_to_eval_data Netflix/NF_TEST \\\n--hidden_layers 512,512,1024 \\\n--non_linearity_type selu \\\n--save_path model_save/model.epoch_11 \\\n--drop_prob 0.8 \\\n--predictions_path preds.txt\n```\n\n### Compute Test RMSE\n```\npython compute_RMSE.py --path_to_predictions=preds.txt\n```\nAfter 12 epochs you should get RMSE around 0.927. Train longer to get below 0.92\n\n# Results\nIt should be possible to achieve the following results. Iterative output re-feeding should be applied\nonce during each iteration.\n\n(exact numbers will vary due to randomization)\n\n| DataSet | RMSE | Model Architecture |\n| -------- | ---------------- | ---------------- |\n| Netflix 3 months | 0.9373 | n,128,256,256,dp(0.65),256,128,n |\n| Netflix 6 months | 0.9207 | n,256,256,512,dp(0.8),256,256,n |\n| Netflix 1 year | 0.9225 | n,256,256,512,dp(0.8),256,256,n |\n| Netflix full | 0.9099 | n,512,512,1024,dp(0.8),512,512,n |\n","funding_links":[],"categories":["Python","deep-learning","Recommendation","Deep Learning Projects"],"sub_categories":["Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNVIDIA%2FDeepRecommender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNVIDIA%2FDeepRecommender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNVIDIA%2FDeepRecommender/lists"}