[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Thinklab-SJTU--Crossformer":3,"tool-Thinklab-SJTU--Crossformer":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},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,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},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 真正成长为懂上",160784,2,"2026-04-19T11:32:54",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":76,"owner_twitter":76,"owner_website":77,"owner_url":78,"languages":79,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":10,"env_os":92,"env_gpu":93,"env_ram":92,"env_deps":94,"category_tags":102,"github_topics":103,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":107,"updated_at":108,"faqs":109,"releases":145},9756,"Thinklab-SJTU\u002FCrossformer","Crossformer","Official implementation of our ICLR 2023 paper \"Crossformer: Transformer Utilizing Cross-Dimension Dependency for Multivariate Time Series Forecasting\"","Crossformer 是一款专为多变量时间序列预测设计的深度学习模型，其核心成果曾发表于顶级会议 ICLR 2023。它主要解决了传统 Transformer 模型在处理多维数据时，难以有效捕捉不同维度间复杂依赖关系以及长序列计算成本过高的问题。\n\n与以往将同一时刻所有维度数据混合嵌入的方法不同，Crossformer 创新性地提出了“维段嵌入”（DSW）机制，先在每个维度内部对相邻时间点进行分段处理，再结合独特的“两阶段注意力”（TSA）层。该机制通过引入路由策略，巧妙地降低了跨维度计算的复杂度，使其能高效地同时捕捉时间维度与特征维度上的深层关联。此外，其分层编码器 - 解码器架构能够从不同尺度提取特征并融合预测，显著提升了预报精度。\n\n这款工具非常适合从事时序数据分析的研究人员、算法工程师及开发者使用，尤其适用于气象预测、交通流量分析、能源消耗预估等需要处理高维相关数据的场景。虽然 Crossformer 提供了完整的训练与评估代码，但使用者需具备一定的 Python 和 PyTorch 基础，以便配置环境并根据具体业务数据调整参数。","# Crossformer: Transformer Utilizing Cross-Dimension Dependency for Multivariate Time Series Forecasting (ICLR 2023)\n\nThis is the origin Pytorch implementation of [Crossformer: Transformer Utilizing Cross-Dimension Dependency for Multivariate Time Series Forecasting](https:\u002F\u002Fopenreview.net\u002Fforum?id=vSVLM2j9eie).\n\n## Key Points of Crossformer\n**1. Dimension-Segment-Wise (DSW) Embedding**\n\u003Cp align=\"center\">\n\u003Cimg src=\".\\pic\\DSW.PNG\" height = \"200\" alt=\"\" align=center \u002F>\n\n\u003Cb>Figure 1.\u003C\u002Fb> DSW embedding. \u003Cb>Left\u003C\u002Fb>: Embedding method of previous Transformer-based model: data points in different dimensions at the same step are embedded into a vector; \u003Cb>Right\u003C\u002Fb>: DSW embedding  of Crossformer: in each dimension, nearby points over time form a segment for embedding.\n\u003C\u002Fp>\n\n**2. Two-Stage Attention (TSA) Layer**\n\u003Cp align=\"center\">\n\u003Cimg src=\".\\pic\\TSA.PNG\" height = \"200\" alt=\"\" align=center \u002F>\n\n\u003Cb>Figure 2.\u003C\u002Fb> TSA layer. \u003Cb>Left\u003C\u002Fb>: Overall structure: the 2D vector array goes through the Cross-Time Stage and Cross-Dimension Stage to get corresponding dependency; \u003Cb>Middle\u003C\u002Fb>: Directly using MSA in Cross-Dimension Stage to build the $D$-to-$D$ \nconnection results in $O(D^2)$ complexity.  \u003Cb>Right\u003C\u002Fb>: Router mechanism for Cross-Dimension Stage: a small fixed number ($c$) of ``routers'' gather and distribute the information among dimensions. The complexity is reduced to $O(2cD) = O(D)$.\n\u003C\u002Fp>\n\n**3. Hierarchical Encoder-Decoder (HED)**\n\u003Cp align=\"center\">\n\u003Cimg src=\".\\pic\\HED.PNG\" height = \"200\" alt=\"\" align=center \u002F>\n\n\u003Cb>Figure 3.\u003C\u002Fb> HED. The encoder (left) uses TSA layer and segment merging to capture dependency at different scales; the decoder (right) makes the final prediction by forecasting at each scale and adding them up.\n\u003C\u002Fp>\n\n\n## Requirements\n\n- Python 3.7.10\n- numpy==1.20.3\n- pandas==1.3.2\n- torch==1.8.1\n- einops==0.4.1\n\n## Reproducibility\n1. Put datasets to conduct experiments into folder `datasets\u002F`. We have already put `ETTh1` and `ETTm1` into it. `WTH` and `ECL` can be downloaded from \nhttps:\u002F\u002Fgithub.com\u002Fzhouhaoyi\u002FInformer2020. `ILI` and `Traffic` can be downloaded from https:\u002F\u002Fgithub.com\u002Fthuml\u002FAutoformer. Note that the `WTH` we used in the paper is the one with 12 dimensions from Informer, not the one with 21 dimensions from Autoformer.\n\n2. To get results of Crossformer with $T=168, \\tau = 24, L_{seg} = 6$ on ETTh1 dataset, run:\n```\npython main_crossformer.py --data ETTh1 --in_len 168 --out_len 24 --seg_len 6 --itr 1\n```\nThe model will be automatically trained and tested. The trained model will be saved in folder `checkpoints\u002F` and evaluated metrics will be saved in folder `results\u002F`.\n\n3. You can also evaluate a trained model by running:\n```\npython eval_crossformer.py --checkpoint_root .\u002Fcheckpoints --setting_name Crossformer_ETTh1_il168_ol24_sl6_win2_fa10_dm256_nh4_el3_itr0\n```\n\n4. To reproduce all results in the paper, run following scripts to get corresponding results:\n```\nbash scripts\u002FETTh1.sh\nbash scripts\u002FETTm1.sh\nbash scripts\u002FWTH.sh\nbash scripts\u002FECL.sh\nbash scripts\u002FILI.sh\nbash scripts\u002FTraffic.sh\n```\n\n\n## Custom Usage\nWe use the [AirQuality](https:\u002F\u002Farchive.ics.uci.edu\u002Fml\u002Fmachine-learning-databases\u002F00360\u002FAirQualityUCI.zip) dataset to show how to train and evaluate Crossformer with your own data. \n\n1. Modify the `AirQualityUCI.csv` dataset into the following format, where the first column is date (or you can just leave the first column blank) and the other 13 columns are multivariate time series to forecast. And put the modified file into folder `datasets\u002F`\n\u003Cp align=\"center\">\n\u003Cimg src=\".\\pic\\Data_format.PNG\" height = \"120\" alt=\"\" align=center \u002F>\n\u003Cbr>\n\u003Cb>Figure 4.\u003C\u002Fb> An example of the custom dataset.\n\u003C\u002Fp>\n\n2. This is an hourly-sampled dataset with 13 dimensions. And we are going to use the past week (168 hours) to forecast the next day (24 hour) and the segment length is set to 6. Therefore, we need to run:\n```\npython main_crossformer.py --data AirQuality --data_path AirQualityUCI.csv --data_dim 13 --in_len 168 --out_len 24 --seg_len 6\n```\n\n3. We can evaluate the trained model by running:\n```\npython eval_crossformer.py --setting_name Crossformer_AirQuality_il168_ol24_sl6_win2_fa10_dm256_nh4_el3_itr0 --save_pred\n```\nThe model will be evaluated, predicted and ground truth series will be saved in `results\u002FCrossformer_AirQuality_il168_ol24_sl6_win2_fa10_dm256_nh4_el3_itr0`\n\n\n`main_crossformer` is the entry point of our model and there are other parameters that can be tuned. Here we describe them in detail:\n| Parameter name | Description of parameter |\n| --- | --- |\n| data           | The dataset name                                             |\n| root_path      | The root path of the data file (defaults to `.\u002Fdatasets\u002F`)    |\n| data_path      | The data file name (defaults to `ETTh1.csv`)                  |\n| data_split | Train\u002FVal\u002FTest split, can be ratio (e.g. `0.7,0.1,0.2`) or number (e.g. `16800,2880,2880`), (defaults to `0.7,0.1,0.2`) \n| checkpoints    | Location to store the trained model (defaults to `.\u002Fcheckpoints\u002F`)  |\n| in_len | Length of input\u002Fhistory sequence, i.e. $T$ in the paper (defaults to 96) |\n| out_len | Length of output\u002Ffuture sequence, i.e. $\\tau$ in the paper (defaults to 24) |\n| seg_len | Length of each segment in DSW embedding, i.e. $L_{seg}$ in the paper (defaults to 6) |\n| win_size | How many adjacent segments to be merged into one in segment merging of HED  (defaults to 2) |\n| factor | Number of routers in Cross-Dimension Stage of TSA, i.e. $c$ in the paper (defaults to 10) |\n| data_dim | Number of dimensions of the MTS data, i.e. $D$ in the paper (defaults to 7 for ETTh and ETTm) |\n| d_model | Dimension of hidden states, i.e. $d_{model}$ in the paper (defaults to 256) |\n| d_ff | Dimension of MLP in MSA (defaults to 512) |\n| n_heads | Num of heads in MSA (defaults to 4) |\n| e_layers | Num of encoder layers, i.e. $N$ in the paper (defaults to 3) |\n| dropout | The probability of dropout (defaults to 0.2) |\n| num_workers | The num_works of Data loader (defaults to 0) |\n| batch_size | The batch size for training and testing (defaults to 32) |\n| train_epochs | Train epochs (defaults to 20) |\n| patience | Early stopping patience (defaults to 3) |\n| learning_rate | The initial learning rate for the optimizer (defaults to 1e-4) |\n| lradj | Ways to adjust the learning rate (defaults to `type1`) |\n| itr | Experiments times (defaults to 1) |\n| save_pred | Whether to save the predicted results. If True, the predicted results will be saved in folder `results` in numpy array form. This will cost a lot time and memory for datasets with large $D$. (defaults to `False`). |\n| use_gpu | Whether to use gpu (defaults to `True`) |\n| gpu | The gpu no, used for training and inference (defaults to 0) |\n| use_multi_gpu | Whether to use multiple gpus (defaults to `False`) |\n| devices | Device ids of multile gpus (defaults to `0,1,2,3`) |\n\n## Citation\nIf you find this repository useful in your research, please cite:\n```\n@inproceedings{\nzhang2023crossformer,\ntitle={Crossformer: Transformer Utilizing Cross-Dimension Dependency for Multivariate Time Series Forecasting},\nauthor={Yunhao Zhang and Junchi Yan},\nbooktitle={International Conference on Learning Representations},\nyear={2023},\n}\n```\n\n\n## Acknowledgement\nWe appreciate the following works for their valuable code and data for time series forecasting:\n\nhttps:\u002F\u002Fgithub.com\u002Fzhouhaoyi\u002FInformer2020\n\nhttps:\u002F\u002Fgithub.com\u002Fthuml\u002FAutoformer\n\nhttps:\u002F\u002Fgithub.com\u002Falipay\u002FPyraformer\n\nhttps:\u002F\u002Fgithub.com\u002FMAZiqing\u002FFEDformer\n\nThe following two Vision Transformer works also inspire our DSW embedding and HED designs:\n\nhttps:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fvision_transformer\n\nhttps:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FSwin-Transformer\n","# Crossformer: 一种利用跨维度依赖的 Transformer 模型，用于多变量时间序列预测（ICLR 2023）\n\n这是 [Crossformer: 用于多变量时间序列预测的跨维度依赖 Transformer](https:\u002F\u002Fopenreview.net\u002Fforum?id=vSVLM2j9eie) 的原始 PyTorch 实现。\n\n## Crossformer 的关键点\n**1. 维度分段嵌入 (DSW)**\n\u003Cp align=\"center\">\n\u003Cimg src=\".\\pic\\DSW.PNG\" height = \"200\" alt=\"\" align=center \u002F>\n\n\u003Cb>图 1。\u003C\u002Fb> DSW 嵌入。 \u003Cb>左\u003C\u002Fb>: 早期基于 Transformer 的模型的嵌入方法：同一时刻不同维度的数据点被嵌入为一个向量；\u003Cb>右\u003C\u002Fb>: Crossformer 的 DSW 嵌入：在每个维度中，时间上相邻的点组成一段进行嵌入。\n\u003C\u002Fp>\n\n**2. 两阶段注意力 (TSA) 层**\n\u003Cp align=\"center\">\n\u003Cimg src=\".\\pic\\TSA.PNG\" height = \"200\" alt=\"\" align=center \u002F>\n\n\u003Cb>图 2。\u003C\u002Fb> TSA 层。 \u003Cb>左\u003C\u002Fb>: 整体结构：二维向量数组依次经过跨时间阶段和跨维度阶段，以获取相应的依赖关系；\u003Cb>中间\u003C\u002Fb>: 直接在跨维度阶段使用多头自注意力机制来建立 $D$ 到 $D$ 的连接会导致 $O(D^2)$ 的复杂度。\u003Cb>右\u003C\u002Fb>: 跨维度阶段的路由器机制：少量固定的 ``路由器'' 在各维度之间收集并分发信息。这样复杂度降低到 $O(2cD) = O(D)$。\n\u003C\u002Fp>\n\n**3. 分层编码器-解码器 (HED)**\n\u003Cp align=\"center\">\n\u003Cimg src=\".\\pic\\HED.PNG\" height = \"200\" alt=\"\" align=center \u002F>\n\n\u003Cb>图 3。\u003C\u002Fb> HED。编码器（左）使用 TSA 层和段合并来捕捉不同尺度的依赖关系；解码器（右）通过在每个尺度上进行预测并将它们相加，最终生成预测结果。\n\u003C\u002Fp>\n\n\n## 环境要求\n\n- Python 3.7.10\n- numpy==1.20.3\n- pandas==1.3.2\n- torch==1.8.1\n- einops==0.4.1\n\n## 可复现性\n1. 将用于实验的数据集放入 `datasets\u002F` 文件夹中。我们已经将 `ETTh1` 和 `ETTm1` 放入其中。`WTH` 和 `ECL` 可从 https:\u002F\u002Fgithub.com\u002Fzhouhaoyi\u002FInformer2020 下载。`ILI` 和 `Traffic` 可从 https:\u002F\u002Fgithub.com\u002Fthuml\u002FAutoformer 下载。请注意，我们在论文中使用的 `WTH` 是 Informer 提供的 12 维版本，而非 Autoformer 提供的 21 维版本。\n\n2. 若要在 ETTh1 数据集上获得 $T=168, \\tau = 24, L_{seg} = 6$ 的 Crossformer 结果，请运行：\n```\npython main_crossformer.py --data ETTh1 --in_len 168 --out_len 24 --seg_len 6 --itr 1\n```\n模型将自动训练和测试。训练好的模型将保存在 `checkpoints\u002F` 文件夹中，评估指标将保存在 `results\u002F` 文件夹中。\n\n3. 您也可以通过运行以下命令来评估已训练好的模型：\n```\npython eval_crossformer.py --checkpoint_root .\u002Fcheckpoints --setting_name Crossformer_ETTh1_il168_ol24_sl6_win2_fa10_dm256_nh4_el3_itr0\n```\n\n4. 若要复现论文中的所有结果，请运行以下脚本以获得相应结果：\n```\nbash scripts\u002FETTh1.sh\nbash scripts\u002FETTm1.sh\nbash scripts\u002FWTH.sh\nbash scripts\u002FECL.sh\nbash scripts\u002FILI.sh\nbash scripts\u002FTraffic.sh\n```\n\n\n## 自定义使用\n我们使用 [AirQuality](https:\u002F\u002Farchive.ics.uci.edu\u002Fml\u002Fmachine-learning-databases\u002F00360\u002FAirQualityUCI.zip) 数据集来展示如何使用您自己的数据训练和评估 Crossformer。\n\n1. 将 `AirQualityUCI.csv` 数据集修改为以下格式，其中第一列是日期（或者您可以将第一列留空），其余 13 列是需要预测的多变量时间序列。然后将修改后的文件放入 `datasets\u002F` 文件夹中。\n\u003Cp align=\"center\">\n\u003Cimg src=\".\\pic\\Data_format.PNG\" height = \"120\" alt=\"\" align=center \u002F>\n\u003Cbr>\n\u003Cb>图 4。\u003C\u002Fb> 自定义数据集示例。\n\u003C\u002Fp>\n\n2. 这是一个每小时采样的 13 维数据集。我们将使用过去一周（168 小时）来预测接下来的一天（24 小时），并且段长度设置为 6。因此，我们需要运行：\n```\npython main_crossformer.py --data AirQuality --data_path AirQualityUCI.csv --data_dim 13 --in_len 168 --out_len 24 --seg_len 6\n```\n\n3. 我们可以通过运行以下命令来评估训练好的模型：\n```\npython eval_crossformer.py --setting_name Crossformer_AirQuality_il168_ol24_sl6_win2_fa10_dm256_nh4_el3_itr0 --save_pred\n```\n模型将被评估，并且预测结果和真实值序列将被保存到 `results\u002FCrossformer_AirQuality_il168_ol24_sl6_win2_fa10_dm256_nh4_el3_itr0` 文件夹中。\n\n\n`main_crossformer` 是我们模型的入口点，还有其他可以调整的参数。以下是这些参数的详细说明：\n| 参数名称 | 参数描述 |\n| --- | --- |\n| data           | 数据集名称                                             |\n| root_path      | 数据文件的根路径（默认为 `.\u002Fdatasets\u002F`）    |\n| data_path      | 数据文件名（默认为 `ETTh1.csv`）                  |\n| data_split | 训练\u002F验证\u002F测试划分，可以是比例（如 `0.7,0.1,0.2`）或具体数量（如 `16800,2880,2880`），（默认为 `0.7,0.1,0.2`） \n| checkpoints    | 存储训练模型的位置（默认为 `.\u002Fcheckpoints\u002F`）  |\n| in_len | 输入\u002F历史序列的长度，即论文中的 $T$（默认为 96） |\n| out_len | 输出\u002F未来序列的长度，即论文中的 $\\tau$（默认为 24） |\n| seg_len | DSW 嵌入中每个段的长度，即论文中的 $L_{seg}$（默认为 6） |\n| win_size | 在 HED 的段合并过程中，多少个相邻段会被合并为一个（默认为 2） |\n| factor | TSA 中跨维度阶段的路由器数量，即论文中的 $c$（默认为 10） |\n| data_dim | 多变量时间序列数据的维度数，即论文中的 $D$（对于 ETTh 和 ETTm，默认为 7） |\n| d_model | 隐层状态的维度，即论文中的 $d_{model}$（默认为 256） |\n| d_ff | MSA 中 MLP 的维度（默认为 512） |\n| n_heads | MSA 中的头数（默认为 4） |\n| e_layers | 编码器层数，即论文中的 $N$（默认为 3） |\n| dropout | 掉落率的概率（默认为 0.2） |\n| num_workers | 数据加载器的工作进程数（默认为 0） |\n| batch_size | 训练和测试的批量大小（默认为 32） |\n| train_epochs | 训练轮数（默认为 20） |\n| patience | 早停的耐心期（默认为 3） |\n| learning_rate | 优化器的初始学习率（默认为 1e-4） |\n| lradj | 调整学习率的方式（默认为 `type1`） |\n| itr | 实验次数（默认为 1） |\n| save_pred | 是否保存预测结果。如果为 True，预测结果将以 NumPy 数组的形式保存在 `results` 文件夹中。对于 $D$ 较大的数据集，这将消耗大量时间和内存。（默认为 `False`）。 |\n| use_gpu | 是否使用 GPU（默认为 `True`） |\n| gpu | 用于训练和推理的 GPU 编号（默认为 0） |\n| use_multi_gpu | 是否使用多块 GPU（默认为 `False`） |\n| devices | 多块 GPU 的设备 ID（默认为 `0,1,2,3`） |\n\n## 引用\n如果您在研究中使用了本仓库，请引用以下文献：\n```\n@inproceedings{\nzhang2023crossformer,\ntitle={Crossformer：利用跨维度依赖的Transformer用于多变量时间序列预测},\nauthor={Yunhao Zhang 和 Junchi Yan},\nbooktitle={国际表示学习会议},\nyear={2023},\n}\n```\n\n\n## 致谢\n我们感谢以下工作为时间序列预测提供了有价值的代码和数据：\n\nhttps:\u002F\u002Fgithub.com\u002Fzhouhaoyi\u002FInformer2020\n\nhttps:\u002F\u002Fgithub.com\u002Fthuml\u002FAutoformer\n\nhttps:\u002F\u002Fgithub.com\u002Falipay\u002FPyraformer\n\nhttps:\u002F\u002Fgithub.com\u002FMAZiqing\u002FFEDformer\n\n此外，以下两篇视觉Transformer相关的工作也启发了我们的DSW嵌入和HED设计：\n\nhttps:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fvision_transformer\n\nhttps:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FSwin-Transformer","# Crossformer 快速上手指南\n\nCrossformer 是一种利用跨维度依赖关系进行多变量时间序列预测的 Transformer 模型（ICLR 2023）。本指南将帮助您快速配置环境并运行模型。\n\n## 1. 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux \u002F Windows \u002F macOS\n*   **Python 版本**: 3.7.10 (推荐)\n*   **硬件**: 支持 CUDA 的 GPU（可选，但推荐用于加速训练）\n\n**核心依赖库版本：**\n*   `numpy==1.20.3`\n*   `pandas==1.3.2`\n*   `torch==1.8.1`\n*   `einops==0.4.1`\n\n> **国内加速建议**：安装依赖时，建议使用清华或阿里镜像源以提升下载速度。\n> 例如：`pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n## 2. 安装步骤\n\n### 第一步：克隆代码库\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fthuml\u002FCrossformer.git\ncd Crossformer\n```\n\n### 第二步：安装依赖\n创建虚拟环境（推荐）并安装所需包：\n```bash\npython -m venv venv\nsource venv\u002Fbin\u002Factivate  # Windows 用户请使用: venv\\Scripts\\activate\n\n# 使用国内镜像源安装依赖\npip install numpy==1.20.3 pandas==1.3.2 torch==1.8.1 einops==0.4.1 -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 第三步：准备数据集\n将数据集放入 `datasets\u002F` 文件夹。\n*   **内置数据**：`ETTh1` 和 `ETTm1` 已包含在项目中。\n*   **外部数据**：\n    *   `WTH` 和 `ECL`: 从 [Informer2020](https:\u002F\u002Fgithub.com\u002Fzhouhaoyi\u002FInformer2020) 下载。\n    *   `ILI` 和 `Traffic`: 从 [Autoformer](https:\u002F\u002Fgithub.com\u002Fthuml\u002FAutoformer) 下载。\n    *   **注意**：论文中使用的 `WTH` 是 Informer 提供的 12 维版本，而非 Autoformer 的 21 维版本。\n\n## 3. 基本使用\n\n以下示例展示如何在 **ETTh1** 数据集上训练和测试 Crossformer 模型。\n设定条件：输入长度 168，预测长度 24，分段长度 6。\n\n### 训练与测试\n运行以下命令，模型将自动训练、保存至 `checkpoints\u002F` 目录，并将评估指标保存至 `results\u002F` 目录。\n\n```bash\npython main_crossformer.py --data ETTh1 --in_len 168 --out_len 24 --seg_len 6 --itr 1\n```\n\n### 评估已有模型\n如果您想单独评估一个已训练好的模型（例如复现结果），可运行：\n\n```bash\npython eval_crossformer.py --checkpoint_root .\u002Fcheckpoints --setting_name Crossformer_ETTh1_il168_ol24_sl6_win2_fa10_dm256_nh4_el3_itr0\n```\n\n### 使用自定义数据\n若需使用自己的数据（如空气质量数据 `AirQualityUCI.csv`）：\n1. 确保数据格式为：第一列为日期（可为空），后续列为多变量时间序列。\n2. 将文件放入 `datasets\u002F` 目录。\n3. 指定数据维度（`--data_dim`）及其他参数运行：\n\n```bash\npython main_crossformer.py --data AirQuality --data_path AirQualityUCI.csv --data_dim 13 --in_len 168 --out_len 24 --seg_len 6\n```\n\n> **提示**：更多参数（如学习率、Batch size、GPU 设置等）可通过 `python main_crossformer.py --help` 查看或在代码中调整。","某大型物流公司的数据团队正利用历史传感器数据，预测未来 24 小时各仓储中心的温湿度与能耗变化，以优化冷链调度。\n\n### 没有 Crossformer 时\n- **变量关联捕捉弱**：传统模型将同一时刻不同维度的数据简单拼接，难以精准识别温度、湿度与能耗之间复杂的动态耦合关系。\n- **长序列依赖丢失**：面对长达一周（168 小时）的历史输入，常规 Transformer 容易忽略局部时间片段的细微波动特征，导致短期突变预测失准。\n- **计算资源消耗大**：当监控维度增加时，直接计算全维度注意力机制导致复杂度呈平方级增长，训练耗时极长且难以部署在边缘设备。\n- **多尺度特征融合难**：模型无法有效同时捕捉“小时级”的突发波动与“天级”的周期性规律，预测结果往往过于平滑或滞后。\n\n### 使用 Crossformer 后\n- **跨维度依赖增强**：借助两阶段注意力（TSA）与路由机制，Crossformer 高效建立了变量间的深层连接，精准量化了温湿度变化对能耗的具体影响。\n- **局部细节保留好**：通过维 - 段嵌入（DSW）技术，模型将时间序列切分为片段处理，完美保留了近期数据的局部趋势与突变信号。\n- **推理效率显著提升**：路由机制将跨维度计算复杂度从 $O(D^2)$ 降至 $O(D)$，使得在增加传感器维度时，训练速度依然保持线性高效。\n- **多尺度预测更准**：分层编解码器（HED）自动融合不同时间粒度的特征，既抓住了每日周期规律，又灵敏响应了即时环境扰动。\n\nCrossformer 通过独特的跨维度依赖建模与多尺度分层架构，在大幅降低计算成本的同时，显著提升了复杂多变环境下多元时间序列的预测精度。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinklab-SJTU_Crossformer_734c0a26.png","Thinklab-SJTU","Thinklab@SJTU","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FThinklab-SJTU_c6a6209f.png","Thinklab at Shanghai Jiao Tong University, led by Prof. Junchi Yan.",null,"http:\u002F\u002Fthinklab.sjtu.edu.cn","https:\u002F\u002Fgithub.com\u002FThinklab-SJTU",[80,84],{"name":81,"color":82,"percentage":83},"Python","#3572A5",86.5,{"name":85,"color":86,"percentage":87},"Shell","#89e051",13.5,681,109,"2026-04-17T11:39:58","Apache-2.0","未说明","可选（通过 use_gpu 参数控制，默认为 True），具体型号、显存大小及 CUDA 版本未说明",{"notes":95,"python":96,"dependencies":97},"代码基于 PyTorch 1.8.1 开发。支持单卡或多卡训练（需设置 use_multi_gpu 和 devices 参数）。对于维度（D）较大的数据集，若开启保存预测结果（save_pred=True），将消耗大量内存和时间。自定义数据集需整理为第一列为日期（或留空），后续列为多变量时间序列的 CSV 格式。","3.7.10",[98,99,100,101],"numpy==1.20.3","pandas==1.3.2","torch==1.8.1","einops==0.4.1",[35,14],[104,105,106],"deep-learning","time-series-forecasting","transformers","2026-03-27T02:49:30.150509","2026-04-20T04:06:11.885393",[110,115,120,125,130,135,140],{"id":111,"question_zh":112,"answer_zh":113,"source_url":114},43806,"如何生成预测结果的可视化图表（如 ETTm1 数据集的预测实例图）？","运行 `main_crossformer.py` 脚本时添加参数 `--save_pred`。运行后会在结果目录生成 `pred.npy`（预测值）和 `true.npy`（真实值）文件。\n文件形状通常为 (测试数据量，预测长度，特征维度)，例如 (65979, 24, 6)。\n- 第一个维度是测试样本数；\n- 第二个维度是预测步长（tau，默认为 24）；\n- 第三个维度是特征列数。\n若要可视化特定特征（如第 5 列，索引为 4）的单步预测，可使用代码：`pred[:, 0, 4]` 获取数据，然后使用 matplotlib 进行绘图。","https:\u002F\u002Fgithub.com\u002FThinklab-SJTU\u002FCrossformer\u002Fissues\u002F20",{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},43807,"模型训练出现严重过拟合，应该如何调整代码或超参数？","建议采取以下措施缓解过拟合：\n1. 减小模型参数量：降低 `d_model`, `d_ff`, `n_heads`, `e_layers` 的值。\n2. 增大 `dropout` 比例。\n3. 改进位置编码方式以减小参数量：将原本形状为 `[data_dim, seg_num, d_model]` 的位置编码分解为两部分相加：\n   - 标记维度的变量：形状为 `[data_dim, 1, d_model]`\n   - 标记位置的变量：形状为 `[1, seg_num, d_model]`\n   两者相加得到最终的位置编码，这有助于减少参数量并缓解过拟合。","https:\u002F\u002Fgithub.com\u002FThinklab-SJTU\u002FCrossformer\u002Fissues\u002F18",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},43808,"为什么训练损失（train loss）比验证损失（valid loss）和测试损失（test loss）还要大？","这是时间序列预测中的常见现象，主要由分布偏移（Distribution Shift）引起。\n原因：时间序列数据通常按时间顺序划分（靠前的为训练集，靠后的为测试集）。由于数据分布随时间变化（例如全球气温逐渐升高），后续数据的基准值往往高于前期数据，导致模型在“过去”数据上训练的误差看起来比在“未来”数据上测试的误差更大。\n解决方案：虽然无法完全解决，但可以采用 RevIN (Reversible Instance Normalization) 技术来缓解分布偏移问题。","https:\u002F\u002Fgithub.com\u002FThinklab-SJTU\u002FCrossformer\u002Fissues\u002F14",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},43809,"代码中 `attn.py` 的 mix 操作及 `.view(B, L, -1)` 的作用是什么？是否需要转置？","Mix head 是多头自注意力机制的标准操作。\n流程如下：\n1. 计算得到的输出形状为 `[batch_size, head_num, length, d_model_per_head]`（原版 torch.matmul 实现）或通过 einsum 直接得到 `[batch_size, length, head_num, d_model_per_head]`。\n2. Mix 操作旨在交换 head 和 length 维度（如果需要），并将所有 head 拼接在一起，形成 `[batch_size, length, head_num * d_model_per_head]`。\n3. 最后通过线性层混合多个 head 的信息，得到 `[batch_size, length, d_model]`。\n注意：如果在代码中使用 `einsum` 且输出形状已经是 `[batch_size, length, head_num, d_model_per_head]`，则不需要额外的 transpose 操作，直接使用 `.view(B, L, -1)` 即可完成拼接。原代码中存在的多余 transpose 已被确认为 bug 并修复。","https:\u002F\u002Fgithub.com\u002FThinklab-SJTU\u002FCrossformer\u002Fissues\u002F12",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},43810,"进行长序列预测（如预测 110 天）时，如何设置 `out_len`、`seg_len` 和 `win_size` 等超参数？","- `out_len`：由具体任务决定，即需要预测的未来窗口长度（例如 110 天 * 24 小时）。\n- `seg_len`：片段长度。当预测长度较长时，可以适当增大 `seg_len`，以在效率和准确率之间取得平衡。\n- `in_len`：输入窗口长度，通常尽可能大以包含更多历史信息，通过滑动窗口输入全部数据。\n- `win_size`：合并窗口大小。如果增大了 `seg_len`，通常也应对应增大 `win_size`。\n- 训练策略：可以设置 Early Stop（如平均损失 3 轮不减小则停止），以防止过拟合并节省时间，这通常不会负面影响最终预测效果。","https:\u002F\u002Fgithub.com\u002FThinklab-SJTU\u002FCrossformer\u002Fissues\u002F29",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},43811,"论文中的模型结构图是使用什么工具绘制的？","所有的模型结构图都是使用 PowerPoint 绘制的。","https:\u002F\u002Fgithub.com\u002FThinklab-SJTU\u002FCrossformer\u002Fissues\u002F27",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},43812,"为什么不同通道（channel）的 patch 使用同一个 Linear 层进行投影？每个通道独立使用一层会更好吗？","使用共享的 Linear 层（Shared Layer）主要是为了防止过拟合。\n大多数时序预测神经网络都存在过拟合问题。如果对每一个通道都使用独立的 Linear 层，会大幅增加模型的参数量，从而加重过拟合风险，这一点在高维数据集（如 ECL, Traffic）上尤为明显。因此，默认推荐使用共享层。当然，用户可以自行实验对比，以具体数据集的实验结果为准。","https:\u002F\u002Fgithub.com\u002FThinklab-SJTU\u002FCrossformer\u002Fissues\u002F17",[]]