深度学习量化投资策略实战:从数据、模型到回测的完整指南
简介这份资源是面向高校学生与量化投资初学者的一套完整项目源码适用于毕业设计、期末大作业或人工智能与金融交叉方向的实践练习。项目以深度学习技术构建量化投资策略涵盖数据预处理、模型搭建、训练调优与回测评估等核心环节帮助读者理解如何用Python将算法落地到真实股票数据上。压缩包共46个文件约216KB以23个py脚本为主体辅以xml配置、csv策略数据、sqlite与db数据库文件、md说明文档及txt依赖清单代码按数据、模型、策略、模拟交易等模块分层组织结构清晰。目前已有133人学习下载。读者可从中获得一套可直接运行参考的量化策略工程模板包括股票数据读取与清洗、深度学习网络实现、策略执行与模拟交易运行脚本以及单元测试与依赖配置便于对照复现、二次开发与排错调试。1. 从一份「量化投资策略.zip」说起深度学习到底能帮你赚什么钱很多人第一次看到「基于深度学习的量化投资策略.zip」这类标题第一反应是下载解压、跑一遍、看收益曲线。我当年也这么干过结果打开一看要么是几个 notebook 拼凑的 demo要么是回测曲线漂亮得离谱、实盘一跑就崩。问题不在代码在于大多数人没搞清楚深度学习在量化里到底解决的是哪一类问题。量化投资的核心链路是「数据 → 因子 → 信号 → 组合 → 执行」深度学习能切入的点其实很有限。它擅长的是从高维、非线性、有时序结构的数据里提取模式比如量价序列、订单流、另类文本。它不擅长的是低信噪比下的因果推断而金融市场恰恰是低信噪比的典型场景。所以一份靠谱的「深度学习量化策略」重点从来不是模型多深而是标签怎么定义、特征怎么构造、回测怎么防未来函数。这篇文章面向两类人一是有 Python 和深度学习基础、想把技能迁移到量化方向的工程师二是做过传统多因子、想试试深度学习能不能带来增量的从业者。我会把整条链路拆开讲——数据怎么准备、模型怎么选、回测怎么不骗自己、坑在哪。看完你应该能自己搭出一套可复现的最小策略框架而不是只会跑别人的 zip。2. 数据与标签深度学习量化策略的地基怎么打2.1 为什么量化里的「数据清洗」比模型重要十倍深度学习在图像、NLP 领域能work很大程度是因为数据干净、标签明确。金融数据完全相反缺失值、停牌、涨跌停、复权、幸存者偏差每一个都能让你的模型学到假规律。我一般把数据准备分成三层原始行情层、清洗对齐层、特征标签层。原始行情层最常见的是日频 OHLCV来源可以是本地数据库或公开数据接口。关键是复权处理——前复权适合回测价格连续后复权适合计算真实收益。很多人直接用未复权价格算收益率遇到除权除息那天就会出现一个巨大的假跳空模型会把它当成信号学进去。清洗对齐层要处理三件事停牌日填充、涨跌停标记、多标的交易日对齐。停牌日不能简单用前值填充后就算收益因为停牌期间你根本交易不了。我的做法是给每个标的加一个tradeable布尔列停牌和一字涨跌停当天标记为 False回测时跳过。特征标签层是最容易翻车的地方。标签定义决定了模型在学什么。常见的有三类未来 N 日收益率、未来 N 日收益率是否为正分类、未来 N 日收益率排序ranking。做多空组合一般用 ranking做择时用分类做回归预测收益用第一类但要注意标准化。import pandas as pd import numpy as np def build_labels(df, horizon5, methodrank): df: 单标的或面板数据必须含 close 和 tradeable horizon: 预测未来多少天 method: ret 回归收益 / cls 二分类 / rank 截面排序 df df.sort_values([date, symbol]).copy() # 未来 horizon 日收益率用复权收盘价 df[fwd_ret] df.groupby(symbol)[close].pct_change(horizon).shift(-horizon) if method ret: # 回归目标做截面标准化避免不同时期波动差异 df[label] df.groupby(date)[fwd_ret].transform( lambda x: (x - x.mean()) / (x.std() 1e-8)) elif method cls: df[label] (df[fwd_ret] 0).astype(int) elif method rank: # 截面排序转 0-1适合 ranking loss df[label] df.groupby(date)[fwd_ret].rank(pctTrue) # 关键不可交易样本标签置空训练时 mask 掉 df.loc[~df[tradeable], label] np.nan return df这段代码有三个参数要重点说。horizon决定预测周期日频策略常用 1、5、10周期越短信噪比越低但对深度学习越友好样本多method里rank最适合做多空组合因为它天然做了截面标准化不受市场整体涨跌影响最后那行 mask 是血泪经验——如果不把不可交易样本剔除模型会学到「停牌前买入」这种根本无法执行的信号回测收益虚高。2.2 特征工程把量价数据变成模型能吃的张量深度学习模型尤其是 CNN、RNN、Transformer吃的是张量。量化里最自然的张量构造方式是「时间 × 特征」的二维矩阵或者「时间 × 标的 × 特征」的三维面板。我一般先构造基础特征再滑窗切片。基础特征分几类收益率类1/5/10/20 日收益、波动类滚动标准差、ATR、量能类换手率、量比、微观结构类高低价差、收盘位置。这些特征本身不新鲜但深度学习能自动学它们的交互项这是相对线性多因子的优势。滑窗切片时要注意两点窗口长度和归一化方式。窗口太短模型看不到趋势太长样本量骤减。日频常用 20-60 天窗口。归一化必须在窗口内做不能用全样本均值方差否则就是未来函数。def make_sequences(df, feature_cols, window30): 把面板数据切成 (样本, window, 特征数) 的张量 X, y, meta [], [], [] for symbol, g in df.groupby(symbol): g g.sort_values(date).reset_index(dropTrue) feat g[feature_cols].values label g[label].values dates g[date].values for i in range(window, len(g)): win feat[i-window:i] # 窗口内 z-score避免跨期泄露 mu win.mean(axis0, keepdimsTrue) sd win.std(axis0, keepdimsTrue) 1e-8 X.append((win - mu) / sd) y.append(label[i]) meta.append((symbol, dates[i])) return np.array(X), np.array(y), metawindow30是我在日频上的常用起点你可以按预测周期调整一般取 horizon 的 4-6 倍。窗口内 z-score 是必须的我见过太多人用全样本标准化回测夏普 3.0实盘直接负收益。meta里存 symbol 和 date 是为了后面按时间切训练测试集绝对不能随机切分——随机切分会让同一天的样本同时出现在训练和测试里这是量化回测最隐蔽的作弊。3. 模型选型CNN、LSTM、Transformer 在量化里各管什么3.1 别一上来就上 Transformer量化场景的模型选择逻辑深度学习圈子里有个风气什么任务都先上 Transformer。但在量化里模型选择的第一原则是「参数量匹配样本量」。日频数据一个标的 10 年也就 2400 个样本几百个标的加起来几万到几十万样本这个量级上 Transformer 很容易过拟合。我的经验排序是小样本用 CNN 或轻量 LSTM中等样本用 LSTMAttention大样本分钟级、tick 级才考虑 Transformer。CNN 在量化里的用法是 1D 卷积沿时间轴滑动提取局部时序模式。它的优势是参数少、训练快、对噪声鲁棒。适合捕捉「连续几天放量上涨后回调」这类局部形态。LSTM/GRU 适合捕捉更长程的依赖比如「过去 20 天的波动率聚集」。Attention 的价值在于让模型自己决定看哪几天的数据但需要足够样本才能学好。还有一个常被忽略的点多标的联合建模。你可以每个标的单独训一个模型也可以把所有标的堆在一起训一个模型。前者样本少但专注后者样本多但需要处理标的异质性。我一般用后者在特征里加入标的的行业、市值分组等静态属性让模型自己区分。import torch import torch.nn as nn class QuantCNN(nn.Module): def __init__(self, n_feat, window, n_out1): super().__init__() # 两层 1D 卷积kernel 沿时间轴 self.conv nn.Sequential( nn.Conv1d(n_feat, 32, kernel_size3, padding1), nn.BatchNorm1d(32), nn.ReLU(), nn.Conv1d(32, 32, kernel_size3, padding1), nn.BatchNorm1d(32), nn.ReLU(), nn.AdaptiveAvgPool1d(1) # 时间维压成 1 ) self.head nn.Sequential( nn.Linear(32, 16), nn.ReLU(), nn.Dropout(0.3), # 量化里 dropout 是刚需 nn.Linear(16, n_out) ) def forward(self, x): # x: (batch, window, n_feat) - 转成 (batch, n_feat, window) x x.permute(0, 2, 1) x self.conv(x).squeeze(-1) return self.head(x)这个网络很小参数量几千适合几万样本的场景。BatchNorm1d在量化里要小心因为不同 batch 的分布差异大我有时会换成LayerNorm。Dropout(0.3)是防过拟合的关键量化模型 dropout 一般设 0.2-0.5比 CV 任务高。AdaptiveAvgPool1d(1)把时间维压掉如果你想让模型输出序列比如预测每一天可以换成不池化接 LSTM。3.2 训练目标与损失函数MSE 不是唯一选择量化里最常用的损失是 MSE回归收益和 BCE二分类涨跌。但这两个都有问题MSE 对异常值敏感金融收益的厚尾分布会让模型被极端值带偏BCE 只关心方向不关心幅度学出来的信号强度没意义。我更常用的是 IC 导向的损失或 ranking loss。IC信息系数是预测值和真实收益的截面相关系数直接优化 IC 更贴近策略目标。实现上可以用 soft ranking 或者 pairwise hinge loss。另一个选择是分位数损失预测收益的分位数而不是均值对厚尾更鲁棒。def ic_loss(pred, target): 截面 IC 损失的近似1 - pearson(pred, target) pred/target: (batch,) 同一时间截面的预测和真实收益 pred pred - pred.mean() target target - target.mean() cov (pred * target).sum() std pred.norm() * target.norm() 1e-8 return 1 - cov / std # 训练循环关键片段 optimizer torch.optim.Adam(model.parameters(), lr1e-3, weight_decay1e-4) scheduler torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max50) for epoch in range(50): model.train() for xb, yb in train_loader: pred model(xb).squeeze(-1) loss ic_loss(pred, yb) # 或 mse_loss optimizer.zero_grad() loss.backward() # 梯度裁剪量化数据噪声大防梯度爆炸 torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0) optimizer.step() scheduler.step()weight_decay1e-4是 L2 正则量化里几乎必开。clip_grad_norm_(1.0)是后悔药金融数据偶尔出现极端值不裁剪梯度容易训崩。学习率用 cosine 退火比 step 更稳。注意 IC loss 要求每个 batch 是同一时间截面的样本所以 dataloader 要按 date 组织不能随机打散。4. 回测与验证怎么判断你的策略是真信号还是过拟合4.1 时序交叉验证随机切分是量化回测的头号作弊前面提过随机切分的危害这里展开讲。金融数据有时间自相关今天的收益和昨天高度相关。如果你随机把样本分成训练和测试测试集里的样本和训练集里的样本在时间上交错模型等于「见过」测试期的市场状态回测结果必然虚高。正确做法是时序切分用前 70% 时间训练中间 15% 验证调参最后 15% 测试。更严格的是 walk-forward滚动训练每次用过去 N 年训练、未来 M 个月测试滚动前进。walk-forward 最接近实盘但计算量大。def time_split(df, train_ratio0.7, val_ratio0.15): 按日期切分返回三个 mask dates np.sort(df[date].unique()) n len(dates) train_end dates[int(n * train_ratio)] val_end dates[int(n * (train_ratio val_ratio))] train_mask df[date] train_end val_mask (df[date] train_end) (df[date] val_end) test_mask df[date] val_end return train_mask, val_mask, test_mask切分点要避开重大市场 regime 切换比如牛市转熊市的那天。如果测试集刚好全是熊市模型表现差不代表模型差可能是市场变了。我一般会看测试期的市场基准收益如果基准本身跌 30%模型跌 10% 其实是超额。4.2 回测指标夏普之外你必须看的三个数很多人只看夏普比率这是不够的。夏普高但最大回撤 50% 的策略实盘根本拿不住。我必看的指标有年化收益、最大回撤、Calmar 比率年化收益/最大回撤、换手率、以及分年度收益。换手率尤其重要。深度学习策略容易学出高频信号换手率一高交易成本吃掉大部分收益。日频策略换手率控制在年化 500%-1000% 比较合理超过 2000% 就要怀疑信号是不是噪声。分年度收益能看出策略的稳定性如果只有某一年赚钱其他年份平或亏大概率是过拟合了那年的特定行情。def backtest_metrics(returns, benchmarkNone, freq252): returns: 策略日收益序列 ann_ret (1 returns).prod() ** (freq / len(returns)) - 1 ann_vol returns.std() * np.sqrt(freq) sharpe ann_ret / (ann_vol 1e-8) # 最大回撤 cum (1 returns).cumprod() peak cum.cummax() dd (cum - peak) / peak max_dd dd.min() calmar ann_ret / (abs(max_dd) 1e-8) # 换手率需要持仓数据这里示意 return { ann_ret: ann_ret, ann_vol: ann_vol, sharpe: sharpe, max_dd: max_dd, calmar: calmar }freq252是日频年化系数分钟频要改成 252*240。最大回撤用累计净值算注意是负值。Calmar 大于 1 算及格大于 2 算不错。这些指标要结合看单看一个都会误导。5. 避坑与排查深度学习量化策略最常见的五个翻车点5.1 未来函数最隐蔽也最致命的坑现象回测夏普 3.0 以上实盘一上线就亏。原因特征或标签里混入了未来信息。最常见的三种用全样本均值方差做标准化、用当日收盘价算当日信号却假设当日开盘能交易、财报数据用了公告前的日期。解决所有统计量必须在训练窗口内计算信号生成和交易执行之间至少隔一个 bar财报数据用公告日而非报告期。5.2 幸存者偏差退市股票去哪了现象回测收益虚高尤其是小市值策略。原因数据集只包含当前还在上市的股票退市的、被并购的都没了而这些恰恰是亏损重灾区。解决用包含退市股票的全样本数据或者至少在回测里加入退市惩罚退市前强制平仓并计入损失。公开数据里这点很难完全解决只能尽量用专业数据源。5.3 过拟合训练集 IC 0.1测试集 IC 0.01现象训练集表现极好验证集拉胯。原因模型太复杂、特征太多、训练太久。解决先减参数量再减特征最后加正则。我的一般顺序是把模型砍到只剩一层、特征砍到 10 个以内看 IC 掉多少如果掉得不多说明原来就是过拟合。另外早停early stopping必开验证集 IC 连续 5 个 epoch 不涨就停。5.4 交易成本被忽略换手率吃光收益现象毛收益年化 30%扣费后只剩 5%。原因回测没算或低估了手续费、滑点、冲击成本。解决日频策略双边成本按 0.15%-0.3% 估高频更高。回测时直接扣别自欺欺人。另外可以加换手率惩罚项到损失函数里让模型自己学出低换手信号。5.5 数据泄露预处理阶段的隐形作弊现象回测正常但实盘信号和回测对不上。原因预处理用了未来数据比如用整个数据集算 PCA、用未来数据填充缺失值、用测试集统计量做标准化。解决把所有预处理封装成 sklearn 的 Pipelinefit 只在训练集上做transform 应用到验证测试集。这个习惯能挡掉 90% 的泄露。6. 从回测到实盘一个可复现的最小策略框架与验证技巧把前面所有东西串起来一个最小可复现的深度学习量化策略框架长这样数据层用复权价 tradeable 标记特征层做窗口内 z-score 的 30 天量价序列标签用 5 日收益截面排序模型用上面那个 QuantCNN损失用 IC loss训练用时序切分 早停回测扣双边 0.2% 成本。验证策略是不是真信号我有个私藏技巧把模型预测值按日截面分成 10 组看多空组合第 1 组减第 10 组的累计收益曲线。如果这条曲线单调向上且回撤可控说明模型有真实的截面区分能力如果曲线上下乱跳即使整体夏普高也是运气。这个分组测试比看总收益靠谱得多因为它排除了市场 beta 的影响。def decile_analysis(df, pred_colpred, ret_colfwd_ret, n10): 按预测值分 n 组看多空组合表现 df df.dropna(subset[pred_col, ret_col]).copy() df[group] df.groupby(date)[pred_col].transform( lambda x: pd.qcut(x, n, labelsFalse, duplicatesdrop)) # 每日各组等权收益 daily df.groupby([date, group])[ret_col].mean().unstack() long_short daily[n-1] - daily[0] # 第 n 组减第 1 组 cum (1 long_short).cumprod() return daily, cumn10是常用分组数样本少可以降到 5。qcut按预测值分位分组duplicatesdrop处理预测值重复的情况。多空组合的累计曲线如果 5 年以上稳定向上年化 10% 以上、最大回撤 15% 以内这个策略就值得进一步投入。如果曲线在某一年突然走平或掉头去查那年的市场 regime大概率是模型没适应新环境需要加 regime 特征或做在线更新。我自己踩过最大的坑是太相信回测。曾经有个模型回测夏普 2.5我兴奋地上了模拟盘结果三个月跑下来夏普 0.3。复盘发现是回测里用了日频收盘价成交而实盘信号要等收盘后算、第二天开盘才能下单中间隔了一个隔夜跳空。后来我把所有回测都改成「T 日信号、T1 开盘成交」收益直接砍半但那才是真实的。做量化这行回测和实盘之间的差距永远比你想象的大。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

自动扶梯智能监控系统:AI图像识别与功能安全实战解析

自动扶梯智能监控系统:AI图像识别与功能安全实战解析

扶梯旁边贴满了“请站稳扶好”,但真正能管住乘客行为的,从来不是标语。去年我开始做自动扶梯智能监控系统,第一个要回答的问题是:AI图像识别到底能在这个场景里解决什么。传统机械安全回路能在故障发生后触发制动,却没…

2026/10/4 12:55:24 阅读更多 →
AI产物如何沉淀复用?WorkBuddy资料库实现工作流原生知识固化

AI产物如何沉淀复用?WorkBuddy资料库实现工作流原生知识固化

1. 为什么“AI产物”长期处于“用完即弃”的尴尬状态?“WorkBuddy资料库:AI产物终于能沉淀下来了”——这个标题里藏着一个被无数人默认接受、却从未被系统解决的行业隐痛:我们每天用ChatGPT、Claude、Kimi生成的会议纪要、周报草稿、技术方案…

2026/10/4 12:55:24 阅读更多 →
SolidWorks VBA配合开发:装配引擎原理与鲁棒实现方案

SolidWorks VBA配合开发:装配引擎原理与鲁棒实现方案

1. 项目概述:SolidWorks VBA二次开发中“配合”功能的深度实践困境SolidWorks VBA二次开发配合问题——这七个字背后,藏着至少三类工程师的真实焦灼:机械设计工程师想批量创建装配约束却卡在AddMate3返回-1;自动化产线仿真工程师试…

2026/10/4 12:55:24 阅读更多 →

最新新闻

滴滴AI出行助手公测:MCP服务上线,TaoToken统一Key打通智能体出行链路

滴滴AI出行助手公测:MCP服务上线,TaoToken统一Key打通智能体出行链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 13:40:58 阅读更多 →
ha_xiaomi_home 安装与使用:快速接入小米设备

ha_xiaomi_home 安装与使用:快速接入小米设备

ha_xiaomi_home 安装与使用:快速接入小米设备 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home ha_xiaomi_home 是小米官方支持的 Home Assistant 集成组件&a…

2026/10/4 13:40:58 阅读更多 →
ZeroTermux 内嵌 Linux 命令手册解读:expand 命令将制表符转换为空格

ZeroTermux 内嵌 Linux 命令手册解读:expand 命令将制表符转换为空格

移动开发开发工具 【免费下载链接】ZeroTermux 项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTermux 点击查看 免费下载 导读 在终端里处理文本时,缩进混乱、TAB 与空格混用是常见的痛点。本文围绕 ZeroTermux 内置命令手册中的 expand 命令…

2026/10/4 13:40:58 阅读更多 →
Vibe Coding 产品变现第一课:动手前先想清楚“为什么做“,用四问框架做出高性价比的产品决策

Vibe Coding 产品变现第一课:动手前先想清楚“为什么做“,用四问框架做出高性价比的产品决策

文档教程知识库人工智能 【免费下载链接】ai-guide 程序员鱼皮的 AI 资源大全 Vibe Coding 零基础教程,分享 OpenClaw 保姆级教程、大模型玩法(DeepSeek / GPT / Gemini / Claude / GLM)、最新 AI 资讯、Prompt 提示词大全、AI 知识百科&…

2026/10/4 13:40:58 阅读更多 →
哪款ai写小说软件最好用?2026年10款ai写小说软件深度测评:从TaoToken统一API接入实测

哪款ai写小说软件最好用?2026年10款ai写小说软件深度测评:从TaoToken统一API接入实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 13:40:58 阅读更多 →
产品经理的 Claude Code 免费教程——模块 3:Nano Banana(AI 图像生成)接入 TaoToken 统一 API 通道

产品经理的 Claude Code 免费教程——模块 3:Nano Banana(AI 图像生成)接入 TaoToken 统一 API 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 13:39:58 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →