[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-ZiyaoGeng--RecLearn":3,"tool-ZiyaoGeng--RecLearn":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":82,"owner_url":83,"languages":84,"stars":89,"forks":90,"last_commit_at":91,"license":92,"difficulty_score":23,"env_os":93,"env_gpu":94,"env_ram":93,"env_deps":95,"category_tags":103,"github_topics":104,"view_count":23,"oss_zip_url":82,"oss_zip_packed_at":82,"status":16,"created_at":124,"updated_at":125,"faqs":126,"releases":167},3918,"ZiyaoGeng\u002FRecLearn","RecLearn","Recommender Learning with Tensorflow2.x","RecLearn 是一个基于 Python 和 TensorFlow 2.x 构建的推荐系统学习框架，专为帮助学生和初学者入门推荐算法而设计。它系统地梳理了工业界推荐系统的两大核心阶段：匹配阶段（Top-k 推荐）与排序阶段（点击率预测），将复杂的算法流程标准化、模块化。\n\n针对初学者在复现经典论文模型时面临的环境配置难、代码结构混乱等痛点，RecLearn 提供了从数据预处理、负采样、模型构建到训练评估的一站式解决方案。用户只需几行代码即可加载 MovieLens 或 Amazon 等标准数据集，快速搭建如 BPR 等经典模型并进行实验。其独特的亮点在于清晰的代码架构，不仅支持直接调用封装好的算法示例，还允许开发者灵活修改模型层级与参数，非常适合用于教学演示或算法验证。\n\n无论是刚接触推荐系统的高校学生、希望快速原型验证的研究人员，还是想要深入理解 TensorFlow 2.x 在推荐领域应用的开发者，都能通过 RecLearn 轻松上手。它摒弃了繁琐的工程细节，让使用者能更专注于算法原理本身，是探索推荐系统技术的理想起点。","\u003Cdiv>\n  \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZiyaoGeng_RecLearn_readme_fdb951f48a5f.jpg' width='36%'\u002F>\n\u003C\u002Fdiv>\n\n## RecLearn\n\n\u003Cp align=\"left\">\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.8+-blue'>\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTensorflow-2.5+-blue'>\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue'>\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNumPy-1.17-brightgreen'>\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpandas-1.0.5-brightgreen'>\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fsklearn-0.23.2-brightgreen'>\n\u003C\u002Fp> \n\n[简体中文](https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecommender-System-with-TF2.0\u002Fblob\u002Freclearn\u002FREADME_CN.md) | [English](https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecommender-System-with-TF2.0\u002Ftree\u002Freclearn)\n\nRecLearn (Recommender Learning)  which summarizes the contents of the [master](https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecLearn\u002Ftree\u002Fmaster) branch in  `Recommender System with TF2.0 `  is a recommended learning framework based on Python and TensorFlow2.x for students and beginners. **Of course, if you are more comfortable with the master branch, you can clone the entire package, run some algorithms in example, and also update and modify the content of model and layer**. The implemented recommendation algorithms are classified according to two application stages in the industry:\n\n- matching recommendation stage (Top-k Recmmendation)\n- ranking  recommendeation stage (CTR predict model)\n\n\n\n## Update\n\n**04\u002F23\u002F2022**: update all matching model.\n\n\n\n## Installation\n\n### Package\n\nRecLearn is on PyPI, so you can use pip to install it.\n\n```\npip install reclearn\n```\n\ndependent environment：\n\n- python3.8+\n- Tensorflow2.5-GPU+\u002FTensorflow2.5-CPU+\n- sklearn0.23+\n\n### Local\n\nClone Reclearn to local:\n\n```shell\ngit clone -b reclearn git@github.com:ZiyaoGeng\u002FRecLearn.git\n```\n\n\n\n## Quick Start\n\nIn [example](https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecommender-System-with-TF2.0\u002Ftree\u002Freclearn\u002Fexample), we have given a demo of each of the recommended models.\n\n### Matching\n\n**1. Divide the dataset.**\n\nSet the path of the raw dataset:\n\n```python\nfile_path = 'data\u002Fml-1m\u002Fratings.dat'\n```\n\nPlease divide the current dataset into training dataset, validation dataset and test dataset. If you use `movielens-1m`, `Amazon-Beauty`, `Amazon-Games` and `STEAM`, you can call method `data\u002Fdatasets\u002F*` of RecLearn directly:\n\n```python\ntrain_path, val_path, test_path, meta_path = ml.split_seq_data(file_path=file_path)\n```\n\n`meta_path` indicates the path of the metafile, which stores the maximum number of user and item indexes.\n\n**2. Load the dataset.**\n\nComplete the loading of training dataset, validation dataset and test dataset, and generate several negative samples (random sampling) for each positive sample. The format of data is dictionary:\n\n```python\ndata = {'pos_item':, 'neg_item': , ['user': , 'click_seq': ,...]}\n```\n\nIf you're building a sequential recommendation model, you need to introduce click sequences. Reclearn provides methods for loading the data for the above four datasets:\n\n```python\n# general recommendation model\ntrain_data = ml.load_data(train_path, neg_num, max_item_num)\n# sequence recommendation model, and use the user feature.\ntrain_data = ml.load_seq_data(train_path, \"train\", seq_len, neg_num, max_item_num, contain_user=True)\n```\n\n**3. Set hyper-parameters.**\n\nThe model needs to specify the required hyperparameters. Now, we take `BPR` model as an example:\n\n```python\nmodel_params = {\n        'user_num': max_user_num + 1,\n        'item_num': max_item_num + 1,\n        'embed_dim': FLAGS.embed_dim,\n        'use_l2norm': FLAGS.use_l2norm,\n        'embed_reg': FLAGS.embed_reg\n    }\n```\n\n**4. Build and compile the model.**\n\nSelect or build the model you need and compile it. Take 'BPR' as an example:\n\n```python\nmodel = BPR(**model_params)\nmodel.compile(optimizer=Adam(learning_rate=FLAGS.learning_rate))\n```\n\nIf you have problems with the structure of the model, you can call the summary method after compilation to print it out:\n\n```python\nmodel.summary()\n```\n\n**5. Learn the model and predict test dataset.**\n\n```python\nfor epoch in range(1, epochs + 1):\n    t1 = time()\n    model.fit(\n        x=train_data,\n        epochs=1,\n        validation_data=val_data,\n        batch_size=batch_size\n    )\n    t2 = time()\n    eval_dict = eval_pos_neg(model, test_data, ['hr', 'mrr', 'ndcg'], k, batch_size)\n    print('Iteration %d Fit [%.1f s], Evaluate [%.1f s]: HR = %.4f, MRR = %.4f, NDCG = %.4f'\n          % (epoch, t2 - t1, time() - t2, eval_dict['hr'], eval_dict['mrr'], eval_dict['ndcg']))\n```\n\n### Ranking\n\nWaiting......\n\n\n\n## Results\n\nThe experimental environment designed by Reclearn is different from that of some papers, so there may be some deviation in the results. Please refer to [Experiement](.\u002Fdocs\u002Fexperiment.md) for details.\n\n### Matching\n\n\u003Ctable style=\"text-align:center;margin:auto\">\n  \u003Ctr>\u003C\u002Ftr>\n  \u003Ctr>\n    \u003Cth rowspan=\"2\">Model\u003C\u002Fth>\n    \u003Cth colspan=\"3\">ml-1m\u003C\u002Fth>\n    \u003Cth colspan=\"3\">Beauty\u003C\u002Fth>\n    \u003Cth colspan=\"3\">STEAM\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Cth>HR@10\u003C\u002Fth>\u003Cth>MRR@10\u003C\u002Fth>\u003Cth>NDCG@10\u003C\u002Fth>\n    \u003Cth>HR@10\u003C\u002Fth>\u003Cth>MRR@10\u003C\u002Fth>\u003Cth>NDCG@10\u003C\u002Fth>\n    \u003Cth>HR@10\u003C\u002Fth>\u003Cth>MRR@10\u003C\u002Fth>\u003Cth>NDCG@10\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>BPR\u003C\u002Ftd>\u003Ctd>0.5768\u003C\u002Ftd>\u003Ctd>0.2392\u003C\u002Ftd>\u003Ctd>0.3016\u003C\u002Ftd>\u003Ctd>0.3708\u003C\u002Ftd>\u003Ctd>0.2108\u003C\u002Ftd>\u003Ctd>0.2485\u003C\u002Ftd>\u003Ctd>0.7728\u003C\u002Ftd>\u003Ctd>0.4220\u003C\u002Ftd>\u003Ctd>0.5054\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>NCF\u003C\u002Ftd>\u003Ctd>0.5834\u003C\u002Ftd>\u003Ctd>0.2219\u003C\u002Ftd>\u003Ctd>0.3060\u003C\u002Ftd>\u003Ctd>0.5448\u003C\u002Ftd>\u003Ctd>0.2831\u003C\u002Ftd>\u003Ctd>0.3451\u003C\u002Ftd>\u003Ctd>0.7768\u003C\u002Ftd>\u003Ctd>0.4273\u003C\u002Ftd>\u003Ctd>0.5103\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>DSSM\u003C\u002Ftd>\u003Ctd>0.5498\u003C\u002Ftd>\u003Ctd>0.2148\u003C\u002Ftd>\u003Ctd>0.2929\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>YoutubeDNN\u003C\u002Ftd>\u003Ctd>0.6737\u003C\u002Ftd>\u003Ctd>0.3414\u003C\u002Ftd>\u003Ctd>0.4201\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>MIND(Error)\u003C\u002Ftd>\u003Ctd>0.6366\u003C\u002Ftd>\u003Ctd>0.2597\u003C\u002Ftd>\u003Ctd>0.3483\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>GRU4Rec\u003C\u002Ftd>\u003Ctd>0.7969\u003C\u002Ftd>\u003Ctd>0.4698\u003C\u002Ftd>\u003Ctd>0.5483\u003C\u002Ftd>\u003Ctd>0.5211\u003C\u002Ftd>\u003Ctd>0.2724\u003C\u002Ftd>\u003Ctd>0.3312\u003C\u002Ftd>\u003Ctd>0.8501\u003C\u002Ftd>\u003Ctd>0.5486\u003C\u002Ftd>\u003Ctd>0.6209\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>Caser\u003C\u002Ftd>\u003Ctd>0.7916\u003C\u002Ftd>\u003Ctd>0.4450\u003C\u002Ftd>\u003Ctd>0.5280\u003C\u002Ftd>\u003Ctd>0.5487\u003C\u002Ftd>\u003Ctd>0.2884\u003C\u002Ftd>\u003Ctd>0.3501\u003C\u002Ftd>\u003Ctd>0.8275\u003C\u002Ftd>\u003Ctd>0.5064\u003C\u002Ftd>\u003Ctd>0.5832\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>SASRec\u003C\u002Ftd>\u003Ctd>0.8103\u003C\u002Ftd>\u003Ctd>0.4812\u003C\u002Ftd>\u003Ctd>0.5605\u003C\u002Ftd>\u003Ctd>0.5230\u003C\u002Ftd>\u003Ctd>0.2781\u003C\u002Ftd>\u003Ctd>0.3355\u003C\u002Ftd>\u003Ctd>0.8606\u003C\u002Ftd>\u003Ctd>0.5669\u003C\u002Ftd>\u003Ctd>0.6374\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>AttRec\u003C\u002Ftd>\u003Ctd>0.7873\u003C\u002Ftd>\u003Ctd>0.4578\u003C\u002Ftd>\u003Ctd>0.5363\u003C\u002Ftd>\u003Ctd>0.4995\u003C\u002Ftd>\u003Ctd>0.2695\u003C\u002Ftd>\u003Ctd>0.3229\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>FISSA\u003C\u002Ftd>\u003Ctd>0.8106\u003C\u002Ftd>\u003Ctd>0.4953\u003C\u002Ftd>\u003Ctd>0.5713\u003C\u002Ftd>\u003Ctd>0.5431\u003C\u002Ftd>\u003Ctd>0.2851\u003C\u002Ftd>\u003Ctd>0.3462\u003C\u002Ftd>\u003Ctd>0.8635\u003C\u002Ftd>\u003Ctd>0.5682\u003C\u002Ftd>\u003Ctd>0.6391\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\n\n### Ranking\n\n\u003Ctable style=\"text-align:center;margin:auto\">\n  \u003Ctr>\u003C\u002Ftr>\n  \u003Ctr>\n    \u003Cth rowspan=\"2\">Model\u003C\u002Fth>\n    \u003Cth colspan=\"2\">500w(Criteo)\u003C\u002Fth>\n    \u003Cth colspan=\"2\">Criteo\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Cth>Log Loss\u003C\u002Fth>\n    \u003Cth>AUC\u003C\u002Fth>\n    \u003Cth>Log Loss\u003C\u002Fth>\n    \u003Cth>AUC\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>FM\u003C\u002Ftd>\u003Ctd>0.4765\u003C\u002Ftd>\u003Ctd>0.7783\u003C\u002Ftd>\u003Ctd>0.4762\u003C\u002Ftd>\u003Ctd>0.7875\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>FFM\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>WDL\u003C\u002Ftd>\u003Ctd>0.4684\u003C\u002Ftd>\u003Ctd>0.7822\u003C\u002Ftd>\u003Ctd>0.4692\u003C\u002Ftd>\u003Ctd>0.7930\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>Deep Crossing\u003C\u002Ftd>\u003Ctd>0.4670\u003C\u002Ftd>\u003Ctd>0.7826\u003C\u002Ftd>\u003Ctd>0.4693\u003C\u002Ftd>\u003Ctd>0.7935\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>PNN\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>0.7847\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>DCN\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>0.7823\u003C\u002Ftd>\u003Ctd>0.4691\u003C\u002Ftd>\u003Ctd>0.7929\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>NFM\u003C\u002Ftd>\u003Ctd>0.4773\u003C\u002Ftd>\u003Ctd>0.7762\u003C\u002Ftd>\u003Ctd>0.4723\u003C\u002Ftd>\u003Ctd>0.7889\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>AFM\u003C\u002Ftd>\u003Ctd>0.4819\u003C\u002Ftd>\u003Ctd>0.7808\u003C\u002Ftd>\u003Ctd>0.4692\u003C\u002Ftd>\u003Ctd>0.7871\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>DeepFM\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>0.7828\u003C\u002Ftd>\u003Ctd>0.4650\u003C\u002Ftd>\u003Ctd>0.8007\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>xDeepFM\u003C\u002Ftd>\u003Ctd>0.4690\u003C\u002Ftd>\u003Ctd>0.7839\u003C\u002Ftd>\u003Ctd>0.4696\u003C\u002Ftd>\u003Ctd>0.7919\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\n## Model List\n\n### 1. Matching Stage\n\n|                         Paper\\|Model                         |  Published   |     Author     |\n| :----------------------------------------------------------: | :----------: | :------------: |\n| BPR: Bayesian Personalized Ranking from Implicit Feedback\\|**MF-BPR** |  UAI, 2009   | Steﬀen Rendle  |\n|    Neural network-based Collaborative Filtering\\|**NCF**     |  WWW, 2017   |  Xiangnan He   |\n| Learning Deep Structured Semantic Models for Web Search using Clickthrough Data\\|**DSSM** |  CIKM, 2013  |  Po-Sen Huang  |\n| Deep Neural Networks for YouTube Recommendations\\| **YoutubeDNN** | RecSys, 2016 | Paul Covington |\n| Session-based Recommendations with Recurrent Neural Networks\\|**GUR4Rec** |  ICLR, 2016  | Balázs Hidasi  |\n|     Self-Attentive Sequential Recommendation\\|**SASRec**     |  ICDM, 2018  |      UCSD      |\n| Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding\\|**Caser** |  WSDM, 2018  |   Jiaxi Tang   |\n| Next Item Recommendation with Self-Attentive Metric Learning\\|**AttRec** | AAAAI, 2019  |  Shuai Zhang   |\n| FISSA: Fusing Item Similarity Models with Self-Attention Networks for Sequential Recommendation\\|**FISSA** | RecSys, 2020 |    Jing Lin    |\n\n### 2. Ranking Stage\n\n|                         Paper｜Model                         |  Published   |                            Author                            |\n| :----------------------------------------------------------: | :----------: | :----------------------------------------------------------: |\n|                Factorization Machines\\|**FM**                |  ICDM, 2010  |                        Steffen Rendle                        |\n| Field-aware Factorization Machines for CTR Prediction｜**FFM** | RecSys, 2016 |                       Criteo Research                        |\n|    Wide & Deep Learning for Recommender Systems｜**WDL**     |  DLRS, 2016  |                         Google Inc.                          |\n| Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features\\|**Deep Crossing** |  KDD, 2016   |                      Microsoft Research                      |\n| Product-based Neural Networks for User Response Prediction\\|**PNN** |  ICDM, 2016  |                Shanghai Jiao Tong University                 |\n|    Deep & Cross Network for Ad Click Predictions｜**DCN**    | ADKDD, 2017  |               Stanford University｜Google Inc.               |\n| Neural Factorization Machines for Sparse Predictive Analytics\\|**NFM** | SIGIR, 2017  |                         Xiangnan He                          |\n| Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks\\|**AFM** | IJCAI, 2017  |    Zhejiang University\\|National University of Singapore     |\n| DeepFM: A Factorization-Machine based Neural Network for CTR Prediction\\|**DeepFM** | IJCAI, 2017  | Harbin Institute of Technology\\|Noah’s Ark Research Lab, Huawei |\n| xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems\\|**xDeepFM** |  KDD, 2018   |        University of Science and Technology of China         |\n| Deep Interest Network for Click-Through Rate Prediction\\|**DIN** |  KDD, 2018   |                        Alibaba Group                         |\n\n## Discussion\n\n1. If you have any suggestions or questions about the project, you can leave a comment on `Issue`.\n2. wechat：\n\n\u003Cdiv align=center>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZiyaoGeng_RecLearn_readme_d654f2040f24.jpg\" width=\"20%\"\u002F>\u003C\u002Fdiv>\n\n","\u003Cdiv>\n  \u003Cimg src='https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZiyaoGeng_RecLearn_readme_fdb951f48a5f.jpg' width='36%'\u002F>\n\u003C\u002Fdiv>\n\n## RecLearn\n\n\u003Cp align=\"left\">\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.8+-blue'>\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTensorflow-2.5+-blue'>\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue'>\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNumPy-1.17-brightgreen'>\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpandas-1.0.5-brightgreen'>\n  \u003Cimg src='https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fsklearn-0.23.2-brightgreen'>\n\u003C\u002Fp> \n\n[简体中文](https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecommender-System-with-TF2.0\u002Fblob\u002Freclearn\u002FREADME_CN.md) | [English](https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecommender-System-with-TF2.0\u002Ftree\u002Freclearn)\n\nRecLearn（推荐学习）总结了`Recommender System with TF2.0`中[master](https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecLearn\u002Ftree\u002Fmaster)分支的内容，是一个基于Python和TensorFlow2.x的推荐学习框架，专为学生和初学者设计。**当然，如果你更熟悉master分支，也可以克隆整个项目，在示例中运行一些算法，并对模型和层的内容进行更新和修改**。实现的推荐算法根据工业界的两个应用阶段进行分类：\n\n- 匹配推荐阶段（Top-k推荐）\n- 排序推荐阶段（CTR预测模型）\n\n\n\n## 更新\n\n**2022年4月23日**：更新所有匹配模型。\n\n\n\n## 安装\n\n### 包管理器\n\nRecLearn已发布在PyPI上，因此你可以使用pip进行安装。\n\n```\npip install reclearn\n```\n\n依赖环境：\n\n- python3.8+\n- Tensorflow2.5-GPU+\u002FTensorflow2.5-CPU+\n- sklearn0.23+\n\n### 本地安装\n\n将RecLearn克隆到本地：\n\n```shell\ngit clone -b reclearn git@github.com:ZiyaoGeng\u002FRecLearn.git\n```\n\n\n\n## 快速入门\n\n在[example](https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecommender-System-with-TF2.0\u002Ftree\u002Freclearn\u002Fexample)中，我们为每种推荐模型都提供了一个示例。\n\n### 匹配\n\n**1. 划分数据集。**\n\n设置原始数据集的路径：\n\n```python\nfile_path = 'data\u002Fml-1m\u002Fratings.dat'\n```\n\n请将当前数据集划分为训练集、验证集和测试集。如果你使用的是`movielens-1m`、`Amazon-Beauty`、`Amazon-Games`和`STEAM`数据集，可以直接调用RecLearn中的`data\u002Fdatasets\u002F*`方法：\n\n```python\ntrain_path, val_path, test_path, meta_path = ml.split_seq_data(file_path=file_path)\n```\n\n`meta_path`表示元文件的路径，其中存储了用户和物品的最大索引数。\n\n**2. 加载数据集。**\n\n完成训练集、验证集和测试集的加载，并为每个正样本生成若干负样本（随机采样）。数据格式为字典：\n\n```python\ndata = {'pos_item':, 'neg_item': , ['user': , 'click_seq': ,...]}\n```\n\n如果你正在构建序列推荐模型，需要引入点击序列。Reclearn提供了针对上述四种数据集的数据加载方法：\n\n```python\n# 通用推荐模型\ntrain_data = ml.load_data(train_path, neg_num, max_item_num)\n# 序列推荐模型，并使用用户特征。\ntrain_data = ml.load_seq_data(train_path, \"train\", seq_len, neg_num, max_item_num, contain_user=True)\n```\n\n**3. 设置超参数。**\n\n模型需要指定所需的超参数。现在以`BPR`模型为例：\n\n```python\nmodel_params = {\n        'user_num': max_user_num + 1,\n        'item_num': max_item_num + 1,\n        'embed_dim': FLAGS.embed_dim,\n        'use_l2norm': FLAGS.use_l2norm,\n        'embed_reg': FLAGS.embed_reg\n    }\n```\n\n**4. 构建并编译模型。**\n\n选择或构建你需要的模型，并对其进行编译。以`BPR`为例：\n\n```python\nmodel = BPR(**model_params)\nmodel.compile(optimizer=Adam(learning_rate=FLAGS.learning_rate))\n```\n\n如果对模型结构有疑问，可以在编译后调用summary方法打印出来：\n\n```python\nmodel.summary()\n```\n\n**5. 训练模型并预测测试集。**\n\n```python\nfor epoch in range(1, epochs + 1):\n    t1 = time()\n    model.fit(\n        x=train_data,\n        epochs=1,\n        validation_data=val_data,\n        batch_size=batch_size\n    )\n    t2 = time()\n    eval_dict = eval_pos_neg(model, test_data, ['hr', 'mrr', 'ndcg'], k, batch_size)\n    print('Iteration %d Fit [%.1f s], Evaluate [%.1f s]: HR = %.4f, MRR = %.4f, NDCG = %.4f'\n          % (epoch, t2 - t1, time() - t2, eval_dict['hr'], eval_dict['mrr'], eval_dict['ndcg']))\n```\n\n### 排序\n\n敬请期待……\n\n\n\n## 结果\n\nRecLearn设计的实验环境与某些论文中的实验环境不同，因此结果可能会存在一定的偏差。详细信息请参阅[实验](.\u002Fdocs\u002Fexperiment.md)。\n\n### 匹配\n\n\u003Ctable style=\"text-align:center;margin:auto\">\n  \u003Ctr>\u003C\u002Ftr>\n  \u003Ctr>\n    \u003Cth rowspan=\"2\">模型\u003C\u002Fth>\n    \u003Cth colspan=\"3\">ml-1m\u003C\u002Fth>\n    \u003Cth colspan=\"3\">Beauty\u003C\u002Fth>\n    \u003Cth colspan=\"3\">STEAM\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Cth>HR@10\u003C\u002Fth>\u003Cth>MRR@10\u003C\u002Fth>\u003Cth>NDCG@10\u003C\u002Fth>\n    \u003Cth>HR@10\u003C\u002Fth>\u003Cth>MRR@10\u003C\u002Fth>\u003Cth>NDCG@10\u003C\u002Fth>\n    \u003Cth>HR@10\u003C\u002Fth>\u003Cth>MRR@10\u003C\u002Fth>\u003Cth>NDCG@10\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>BPR\u003C\u002Ftd>\u003Ctd>0.5768\u003C\u002Ftd>\u003Ctd>0.2392\u003C\u002Ftd>\u003Ctd>0.3016\u003C\u002Ftd>\u003Ctd>0.3708\u003C\u002Ftd>\u003Ctd>0.2108\u003C\u002Ftd>\u003Ctd>0.2485\u003C\u002Ftd>\u003Ctd>0.7728\u003C\u002Ftd>\u003Ctd>0.4220\u003C\u002Ftd>\u003Ctd>0.5054\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>NCF\u003C\u002Ftd>\u003Ctd>0.5834\u003C\u002Ftd>\u003Ctd>0.2219\u003C\u002Ftd>\u003Ctd>0.3060\u003C\u002Ftd>\u003Ctd>0.5448\u003C\u002Ftd>\u003Ctd>0.2831\u003C\u002Ftd>\u003Ctd>0.3451\u003C\u002Ftd>\u003Ctd>0.7768\u003C\u002Ftd>\u003Ctd>0.4273\u003C\u002Ftd>\u003Ctd>0.5103\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>DSSM\u003C\u002Ftd>\u003Ctd>0.5498\u003C\u002Ftd>\u003Ctd>0.2148\u003C\u002Ftd>\u003Ctd>0.2929\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>YoutubeDNN\u003C\u002Ftd>\u003Ctd>0.6737\u003C\u002Ftd>\u003Ctd>0.3414\u003C\u002Ftd>\u003Ctd>0.4201\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>MIND(Error)\u003C\u002Ftd>\u003Ctd>0.6366\u003C\u002Ftd>\u003Ctd>0.2597\u003C\u002Ftd>\u003Ctd>0.3483\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>GRU4Rec\u003C\u002Ftd>\u003Ctd>0.7969\u003C\u002Ftd>\u003Ctd>0.4698\u003C\u002Ftd>\u003Ctd>0.5483\u003C\u002Ftd>\u003Ctd>0.5211\u003C\u002Ftd>\u003Ctd>0.2724\u003C\u002Ftd>\u003Ctd>0.3312\u003C\u002Ftd>\u003Ctd>0.8501\u003C\u002Ftd>\u003Ctd>0.5486\u003C\u002Ftd>\u003Ctd>0.6209\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>Caser\u003C\u002Ftd>\u003Ctd>0.7916\u003C\u002Ftd>\u003Ctd>0.4450\u003C\u002Ftd>\u003Ctd>0.5280\u003C\u002Ftd>\u003Ctd>0.5487\u003C\u002Ftd>\u003Ctd>0.2884\u003C\u002Ftd>\u003Ctd>0.3501\u003C\u002Ftd>\u003Ctd>0.8275\u003C\u002Ftd>\u003Ctd>0.5064\u003C\u002Ftd>\u003Ctd>0.5832\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>SASRec\u003C\u002Ftd>\u003Ctd>0.8103\u003C\u002Ftd>\u003Ctd>0.4812\u003C\u002Ftd>\u003Ctd>0.5605\u003C\u002Ftd>\u003Ctd>0.5230\u003C\u002Ftd>\u003Ctd>0.2781\u003C\u002Ftd>\u003Ctd>0.3355\u003C\u002Ftd>\u003Ctd>0.8606\u003C\u002Ftd>\u003Ctd>0.5669\u003C\u002Ftd>\u003Ctd>0.6374\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>AttRec\u003C\u002Ftd>\u003Ctd>0.7873\u003C\u002Ftd>\u003Ctd>0.4578\u003C\u002Ftd>\u003Ctd>0.5363\u003C\u002Ftd>\u003Ctd>0.4995\u003C\u002Ftd>\u003Ctd>0.2695\u003C\u002Ftd>\u003Ctd>0.3229\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>FISSA\u003C\u002Ftd>\u003Ctd>0.8106\u003C\u002Ftd>\u003Ctd>0.4953\u003C\u002Ftd>\u003Ctd>0.5713\u003C\u002Ftd>\u003Ctd>0.5431\u003C\u002Ftd>\u003Ctd>0.2851\u003C\u002Ftd>\u003Ctd>0.3462\u003C\u002Ftd>\u003Ctd>0.8635\u003C\u002Ftd>\u003Ctd>0.5682\u003C\u002Ftd>\u003Ctd>0.6391\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### 排行榜\n\n\u003Ctable style=\"text-align:center;margin:auto\">\n  \u003Ctr>\u003C\u002Ftr>\n  \u003Ctr>\n    \u003Cth rowspan=\"2\">模型\u003C\u002Fth>\n    \u003Cth colspan=\"2\">500w(Criteo)\u003C\u002Fth>\n    \u003Cth colspan=\"2\">Criteo\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Cth>Log Loss\u003C\u002Fth>\n    \u003Cth>AUC\u003C\u002Fth>\n    \u003Cth>Log Loss\u003C\u002Fth>\n    \u003Cth>AUC\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>FM\u003C\u002Ftd>\u003Ctd>0.4765\u003C\u002Ftd>\u003Ctd>0.7783\u003C\u002Ftd>\u003Ctd>0.4762\u003C\u002Ftd>\u003Ctd>0.7875\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>FFM\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>WDL\u003C\u002Ftd>\u003Ctd>0.4684\u003C\u002Ftd>\u003Ctd>0.7822\u003C\u002Ftd>\u003Ctd>0.4692\u003C\u002Ftd>\u003Ctd>0.7930\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>Deep Crossing\u003C\u002Ftd>\u003Ctd>0.4670\u003C\u002Ftd>\u003Ctd>0.7826\u003C\u002Ftd>\u003Ctd>0.4693\u003C\u002Ftd>\u003Ctd>0.7935\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>PNN\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>0.7847\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>DCN\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>0.7823\u003C\u002Ftd>\u003Ctd>0.4691\u003C\u002Ftd>\u003Ctd>0.7929\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>NFM\u003C\u002Ftd>\u003Ctd>0.4773\u003C\u002Ftd>\u003Ctd>0.7762\u003C\u002Ftd>\u003Ctd>0.4723\u003C\u002Ftd>\u003Ctd>0.7889\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>AFM\u003C\u002Ftd>\u003Ctd>0.4819\u003C\u002Ftd>\u003Ctd>0.7808\u003C\u002Ftd>\u003Ctd>0.4692\u003C\u002Ftd>\u003Ctd>0.7871\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>DeepFM\u003C\u002Ftd>\u003Ctd>-\u003C\u002Ftd>\u003Ctd>0.7828\u003C\u002Ftd>\u003Ctd>0.4650\u003C\u002Ftd>\u003Ctd>0.8007\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003Ctr>\u003Ctd>xDeepFM\u003C\u002Ftd>\u003Ctd>0.4690\u003C\u002Ftd>\u003Ctd>0.7839\u003C\u002Ftd>\u003Ctd>0.4696\u003C\u002Ftd>\u003Ctd>0.7919\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\n## 模型列表\n\n### 1. 匹配阶段\n\n|                         论文｜模型                         |  发表时间   |     作者     |\n| :----------------------------------------------------------: | :----------: | :------------: |\n| BPR: 基于隐式反馈的贝叶斯个性化排序｜**MF-BPR** |  UAI, 2009   | Steﬀen Rendle  |\n|    基于神经网络的协同过滤｜**NCF**     |  WWW, 2017   |  Xiangnan He   |\n| 使用点击数据学习用于网络搜索的深度结构化语义模型｜**DSSM** |  CIKM, 2013  |  Po-Sen Huang  |\n| 用于YouTube推荐的深度神经网络｜ **YoutubeDNN** | RecSys, 2016 | Paul Covington |\n| 基于会话的推荐与循环神经网络｜**GUR4Rec** |  ICLR, 2016  | Balázs Hidasi  |\n|     自注意力序列推荐｜**SASRec**     |  ICDM, 2018  |      UCSD      |\n| 基于卷积序列嵌入的个性化Top-N序列推荐｜**Caser** |  WSDM, 2018  |   Jiaxi Tang   |\n| 基于自注意力度量学习的下一个物品推荐｜**AttRec** | AAAAI, 2019  |  Shuai Zhang   |\n| FISSA：融合物品相似度模型与自注意力网络的序列推荐｜**FISSA** | RecSys, 2020 |    Jing Lin    |\n\n### 2. 排序阶段\n\n|                         论文｜模型                         |  发表时间   |                            作者                            |\n| :----------------------------------------------------------: | :----------: | :----------------------------------------------------------: |\n|                因子分解机｜**FM**                |  ICDM, 2010  |                        Steffen Rendle                        |\n| 面向CTR预测的领域感知因子分解机｜**FFM** | RecSys, 2016 |                       Criteo Research                        |\n|    宽&深学习用于推荐系统｜**WDL**     |  DLRS, 2016  |                         Google Inc.                          |\n| Deep Crossing：无需手工特征组合的Web规模建模｜**Deep Crossing** |  KDD, 2016   |                      Microsoft Research                      |\n| 基于产品的神经网络用于用户响应预测｜**PNN** |  ICDM, 2016  |                上海交通大学                 |\n|    广告点击预测的深度交叉网络｜**DCN**    | ADKDD, 2017  |               斯坦福大学｜Google Inc.               |\n| 用于稀疏预测分析的神经因子分解机｜**NFM** | SIGIR, 2017  |                         Xiangnan He                          |\n| 注意力因子分解机：通过注意力网络学习特征交互权重｜**AFM** | IJCAI, 2017  |    浙江大学｜新加坡国立大学     |\n| DeepFM：基于因子分解机的CTR预测神经网络｜**DeepFM** | IJCAI, 2017  | 哈尔滨工业大学｜华为诺亚方舟实验室 |\n| xDeepFM：结合显式和隐式特征交互的推荐系统｜**xDeepFM** |  KDD, 2018   |        中国科学技术大学         |\n| 用于点击率预测的深度兴趣网络｜**DIN** |  KDD, 2018   |                        阿里巴巴集团                         |\n\n## 讨论\n\n1. 如果您对该项目有任何建议或问题，可以在`Issue`中留言。\n2. 微信：\n\n\u003Cdiv align=center>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZiyaoGeng_RecLearn_readme_d654f2040f24.jpg\" width=\"20%\"\u002F>\u003C\u002Fdiv>","# RecLearn 快速上手指南\n\nRecLearn 是一个基于 Python 和 TensorFlow 2.x 的推荐系统学习框架，专为初学者和学生设计。它涵盖了工业界推荐的两个核心阶段：**召回（Matching）**与**排序（Ranking）**。\n\n## 1. 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux \u002F macOS \u002F Windows\n*   **Python 版本**：3.8 或更高版本\n*   **核心依赖**：\n    *   TensorFlow 2.5+ (支持 GPU 或 CPU)\n    *   scikit-learn 0.23+\n    *   NumPy 1.17+\n    *   pandas 1.0.5+\n\n> **提示**：建议使用虚拟环境（如 `venv` 或 `conda`）进行隔离安装。\n\n## 2. 安装步骤\n\n您可以通过 PyPI 直接安装，也可以从源码克隆以获取最新示例代码。\n\n### 方式一：通过 pip 安装（推荐）\n\n```bash\npip install reclearn\n```\n\n### 方式二：本地源码安装\n\n如果您需要运行官方示例或修改模型底层代码，建议克隆仓库：\n\n```shell\ngit clone -b reclearn git@github.com:ZiyaoGeng\u002FRecLearn.git\ncd RecLearn\n```\n\n## 3. 基本使用\n\n以下以**召回阶段（Matching）**的经典模型 **BPR** 为例，展示从数据加载到模型训练的最简流程。\n\n### 第一步：划分数据集\n\n设置原始数据路径，并调用内置方法将数据划分为训练集、验证集和测试集。此处以 `ml-1m` 数据集为例：\n\n```python\nfrom reclearn.data import ml\n\nfile_path = 'data\u002Fml-1m\u002Fratings.dat'\n\n# 自动划分数据集，meta_path 包含用户和物品的最大索引信息\ntrain_path, val_path, test_path, meta_path = ml.split_seq_data(file_path=file_path)\n```\n\n### 第二步：加载数据\n\n加载处理后的数据，并为每个正样本生成指定数量的负样本（用于 BPR 损失计算）。\n\n```python\nneg_num = 4  # 负采样数量\nmax_item_num = ... # 从 meta_path 解析获取的最大物品数\n\n# 加载通用推荐模型数据\ntrain_data = ml.load_data(train_path, neg_num, max_item_num)\nval_data = ml.load_data(val_path, neg_num, max_item_num)\ntest_data = ml.load_data(test_path, neg_num, max_item_num)\n```\n\n### 第三步：配置超参数\n\n定义模型所需的参数字典：\n\n```python\nmodel_params = {\n    'user_num': max_user_num + 1,\n    'item_num': max_item_num + 1,\n    'embed_dim': 64,          # 嵌入维度\n    'use_l2norm': True,       # 是否使用 L2 正则\n    'embed_reg': 1e-4         # 正则化系数\n}\n```\n\n### 第四步：构建与编译模型\n\n实例化模型并使用 Adam 优化器进行编译：\n\n```python\nfrom reclearn.models.matching import BPR\nfrom tensorflow.keras.optimizers import Adam\n\nmodel = BPR(**model_params)\nmodel.compile(optimizer=Adam(learning_rate=0.001))\n\n# 可选：查看模型结构\n# model.summary()\n```\n\n### 第五步：训练与评估\n\n执行训练循环，并在每个 epoch 结束后在测试集上评估指标（HR, MRR, NDCG）：\n\n```python\nimport time\nfrom reclearn.evaluation import eval_pos_neg\n\nepochs = 10\nbatch_size = 256\nk = 10 # Top-K\n\nfor epoch in range(1, epochs + 1):\n    t1 = time.time()\n    \n    # 训练\n    model.fit(\n        x=train_data,\n        epochs=1,\n        validation_data=val_data,\n        batch_size=batch_size\n    )\n    \n    t2 = time.time()\n    \n    # 评估\n    eval_dict = eval_pos_neg(model, test_data, ['hr', 'mrr', 'ndcg'], k, batch_size)\n    \n    print('Iteration %d Fit [%.1f s], Evaluate [%.1f s]: HR = %.4f, MRR = %.4f, NDCG = %.4f'\n          % (epoch, t2 - t1, time.time() - t2, eval_dict['hr'], eval_dict['mrr'], eval_dict['ndcg']))\n```\n\n> **注意**：排序阶段（Ranking）的使用逻辑类似，主要区别在于数据加载格式和评估指标（如 Log Loss, AUC），具体可参考仓库中的 `example` 目录。","某电商初创公司的算法实习生需要在两周内搭建一个包含“召回”和“排序”两阶段的推荐系统原型，以验证新上线的服装类目数据价值。\n\n### 没有 RecLearn 时\n- **重复造轮子耗时久**：需从零编写数据加载、负采样及序列处理代码，仅数据预处理就耗费了大部分开发时间。\n- **模型复现门槛高**：面对 BPR、DIN 等经典算法，需自行查阅论文并逐层构建 TensorFlow 网络，极易因维度对齐错误导致调试失败。\n- **流程割裂难统一**：召回（Top-K）与排序（CTR 预估）阶段的数据格式和接口不兼容，拼接全流程时频繁报错。\n- **缺乏标准基线**：难以快速建立性能基准，无法判断是自己代码写错了还是模型本身不适合当前数据。\n\n### 使用 RecLearn 后\n- **开箱即用提效率**：直接调用 `ml.load_seq_data` 一键完成 MovieLens 风格数据的划分、加载与负采样，将数据准备时间从 3 天缩短至 2 小时。\n- **模块化构建模型**：通过传入参数字典实例化 `BPR` 或序列模型，自动处理 Embedding 层与正则化，无需关注底层网络细节即可运行 SOTA 算法。\n- **全链路无缝衔接**：利用统一的字典数据格式，顺畅连接召回阶段的粗筛与排序阶段的精排，快速打通端到端训练流程。\n- **快速迭代验证**：内置多种工业界主流模型作为基线，可立即对比实验结果，迅速定位业务数据特征与模型适配度。\n\nRecLearn 让初学者和开发者能跳过繁琐的工程基建，专注于推荐策略本身的创新与业务效果验证。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZiyaoGeng_RecLearn_fdb951f4.jpg","ZiyaoGeng","潜心","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FZiyaoGeng_733263f6.jpg","\r\n\r\n","MeiTuan","Shanghai","zggzy1996@163.com",null,"https:\u002F\u002Fgithub.com\u002FZiyaoGeng",[85],{"name":86,"color":87,"percentage":88},"Python","#3572A5",100,1987,497,"2026-04-04T02:11:46","MIT","未说明","可选。支持 TensorFlow 2.5+ GPU 版本或 CPU 版本，未指定具体显卡型号、显存大小或 CUDA 版本。",{"notes":96,"python":97,"dependencies":98},"该工具是一个基于 Python 和 TensorFlow 2.x 的推荐系统学习框架。安装时可选择通过 pip 安装或直接克隆仓库。实验环境可能与部分论文设定不同，导致结果存在偏差。","3.8+",[99,100,101,102],"tensorflow>=2.5","numpy>=1.17","pandas>=1.0.5","scikit-learn>=0.23.2",[13],[105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123],"recommender-system","python3","ctr-prediction","criteo","neural-network","factorization-machine","tensorflow2","deepfm","afm","xdeepfm","pnn","widedeep","nfm","ncf","dcn","deepcross","fm","ffm","matrix-factorization","2026-03-27T02:49:30.150509","2026-04-06T08:17:44.400880",[127,132,137,142,147,152,157,162],{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},17893,"AttRec 模型在预测时是否使用了真实的下一个正样本（Next positive item），导致数据泄露？如何正确计算 pos_scores 和 neg_scores？","训练代码中确实使用了正负样本嵌入来计算损失函数，这是为了优化模型参数。在实际预测（推理）阶段，不应也无法获取真实的下一个正样本。预测时通常的做法是：将用户历史序列输入模型得到兴趣表示，然后计算该兴趣表示与候选物品集中所有物品嵌入的得分，按得分排序推荐 Top-K 物品，而不是像训练那样区分特定的 pos\u002Fneg 对。","https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecLearn\u002Fissues\u002F17",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},17894,"DIN 模型中 seq_inputs 的正确形状（shape）是什么？","seq_inputs 的形状应当是 [batch_size, seq_length, field_num]。如果测试发现形状不符（例如变成 [batch_size, 40, 2] 等异常情况），可能是数据预处理或输入管道构建有误，需检查数据生成逻辑以确保维度对齐。维护者已确认并更正了相关代码。","https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecLearn\u002Fissues\u002F12",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},17895,"AFM 模型代码中是否缺少一次项（w0 + wx）？如何实现？","原始实现可能未显式包含一次项。添加一次项需要处理 One-Hot 编码并进行逻辑回归，可以参考 FM 模型的实现方式。具体做法是增加 dense embedding 和 linear part。有用户反馈加入 dense embedding + linear part 后，测试集 AUC 提升至 0.77。此外，需注意若模式为'max'，应使用 reduce_max 而非 reduce_sum，且特征交叉部分可参考 PNN 方法进行优化以提高效率。","https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecLearn\u002Fissues\u002F20",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},17896,"FM 和 Wide&Deep 模型中，为什么要在 inputs 上加上 index_mapping？它的作用是什么？","因为所有特征共用同一个 Embedding Table 或 Linear 权重表，为了避免不同特征的索引冲突，需要通过 index_mapping 将每个特征的局部索引映射到全局唯一索引。例如：年龄特征有 6 个值（0-5），性别有 2 个值（0-1），若某用户年龄为 4、性别为 1，在全局线性回归层中，它们的索引应分别映射为 4 和 7（假设年龄在前）。这样确保了 One-Hot 向量在整体空间中的正确位置。","https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecLearn\u002Fissues\u002F51",{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},17897,"运行 Wide&Deep 模型时报错 ValueError: \"input_length\" is 1, but received input has shape (None,)，如何解决？","该错误通常由输入数据形状不匹配引起，特别是在 Keras Embedding 层中。请检查输入数据是否被正确 reshape 为二维数组 [batch_size, seq_length]。如果是 Criteo 等数据集，确保预处理后的数据没有丢失维度，且在传入 Embedding 层前符合预期的 input_length 要求。维护者线下测试代码无误，问题多出在用户端的数据输入格式上。","https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecLearn\u002Fissues\u002F3",{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},17898,"DIN 模型中 BatchNormalization 层的 training 参数是否需要手动指定？","在 TensorFlow 2.x 的较新版本中，BatchNormalization 层在 call 方法中通常不需要手动指定 training 参数，框架会自动根据当前是训练模式还是推理模式进行处理。如果遇到相关问题，建议查阅官方文档或更新 TF 版本。维护者已重写 DIN 模型并确认无需显式传递 training=True\u002FFalse。","https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecLearn\u002Fissues\u002F4",{"id":158,"question_zh":159,"answer_zh":160,"source_url":161},17899,"FM 模型中 first_order 部分的代码 `tf.nn.embedding_lookup(self.w, inputs)` 是如何等价于论文中的 w*x 的？","因为所有输入特征都被划分为类别型特征（Categorical Features），每个特征值对应一个唯一的索引。在这种情况下，权重向量 w 与输入 x 的点积（w*x）等价于通过 embedding_lookup 查找对应索引的权重值并求和。即：对于 One-Hot 编码的输入，只有激活位的权重会被选中并累加，这与矩阵乘法的效果一致。","https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecLearn\u002Fissues\u002F42",{"id":163,"question_zh":164,"answer_zh":165,"source_url":166},17900,"项目目前使用 CSV\u002FTXT\u002FPKL 加载数据，工业界如何使用？是否有 TFRecords 支持？","当前代码主要为了学习和复现论文，因此使用了简单的 CSV\u002FTXT\u002FPKL 格式。在工业界大规模训练中，推荐使用 TFRecords 格式以提高 I\u002FO 效率。虽然项目暂未内置 TFRecords 加载器，但用户可以自行编写 tf.data.TFRecordDataset 管道来替换现有的数据读取部分，以适配生产环境的大数据量需求。","https:\u002F\u002Fgithub.com\u002FZiyaoGeng\u002FRecLearn\u002Fissues\u002F28",[168,173],{"id":169,"version":170,"summary_zh":171,"released_at":172},108199,"1.0.16","https:\u002F\u002Fpypi.org\u002Fproject\u002Freclearn\u002F1.0.16\u002F","2022-04-23T12:14:24",{"id":174,"version":175,"summary_zh":176,"released_at":177},108200,"v1.0","为了有效保存每个版本的内容，我开始着手构建它。\n这是初始版本1.0，如有需要，您可以下载。","2020-12-20T07:05:54"]