GA优化BP神经网络回归预测:原理、Python实现与调参避坑指南
简介这份资源面向具备一定Python与机器学习基础的开发者提供用遗传算法优化BP神经网络以求解回归预测问题的完整实现。网络采用三层结构3,2,1以advertise.txt为数据集含三个特征输入与一个输出共200条样本按7:3划分训练集与测试集。GA部分设置种群规模10、迭代80次、交叉概率0.8、变异概率0.01用于优化BP网络的权值与阈值BP学习率0.05、迭代500次测试样本60个的平均无误差约为1.5343。压缩包共10个文件包含2个Python脚本、5张png结果图、1个txt数据集及说明文档整体约505KB便于直接运行与对照实验。已有576人学习下载读者可据此掌握GA与BP结合的建模流程、参数配置与误差评估方法并借助结果图快速验证优化效果。1. 用 GA 优化 BP 神经网络做回归预测为什么值得折腾这一层做回归预测的人大多经历过这种场景数据清洗完了特征也筛过了用 Python 搭一个 BP 神经网络跑起来训练集 loss 降得挺漂亮一到验证集就拉胯。调学习率、换激活函数、加 Dropout、改 batch size折腾一圈RMSE 还是卡在某个数下不去。问题往往不在网络结构本身而在权重和阈值的初始值——BP 用的是梯度下降它对初始点极度敏感落到平坦区或者局部极小值后面怎么迭代都出不来。遗传算法GA优化 BP 神经网络干的就是这件事用 GA 的全局搜索能力先替 BP 找一组靠谱的初始权重和阈值再让 BP 在这个起点上做精细的梯度下降。它解决的是「BP 容易陷入局部最优、对初始值敏感」这个老问题适合做非线性回归预测的从业者——比如负荷预测、房价拟合、传感器标定、工艺参数反演这类中小规模、样本量几百到几万的回归任务。下面从原理到代码把这条路走通。2. GA 和 BP 怎么接编码方式与适应度函数的设计2.1 为什么是「先 GA 后 BP」而不是「GA 替代 BP」BP 神经网络本质是一个多层前馈网络加反向传播它的强项是局部精细搜索——给定一个不错的起点梯度下降能快速收敛到附近的极小值。但它的短板也在这里起点不好或者误差曲面有多个坑它就容易卡住。GA 是模拟自然选择的全局优化算法通过选择、交叉、变异在解空间里大范围撒点不依赖梯度信息能跳出局部极小。两者结合的逻辑是分工GA 负责「粗定位」把权重和阈值的搜索范围收缩到一个有希望的区域BP 负责「精调」在这个区域里用梯度信息快速收敛。常见做法是 GA 先迭代几十到几百代把种群里的最优个体解码成网络的初始权重和阈值再交给 BP 训练。这样既保留了 BP 的收敛速度又降低了它对初始值的敏感度。需要说清楚的是GA 优化的是网络的初始参数不是网络结构。如果你要同时优化层数、每层神经元个数那是另一个话题可以用 GA 做结构搜索本文只聚焦参数初始化这一层。2.2 实数编码把权重和阈值拉成一条向量用 GA 优化神经网络参数第一步是确定编码方式。二值编码是 GA 的经典形式但用在神经网络上不合适——权重是连续实数二值编码精度受限于编码长度解码还多一层开销。工程上更常用实数编码把网络所有可训练参数输入层到隐层的权重、隐层阈值、隐层到输出层的权重、输出层阈值按固定顺序拉成一条一维向量每个个体就是这条向量。假设网络结构是「输入层 n 个节点 → 隐层 m 个节点 → 输出层 1 个节点」回归预测通常输出一个值那么参数总数是输入到隐层权重n × m隐层阈值m隐层到输出权重m × 1输出层阈值1总长度 L n×m m m 1。每个个体是一个长度为 L 的实数向量取值范围一般初始化在 [-1, 1] 或 [-0.5, 0.5] 之间。这个范围不是随便定的——太大容易让网络一开始就饱和太小则搜索空间不够。我一般先用 [-1, 1]如果训练早期 loss 震荡厉害再收窄。2.3 适应度函数用验证集误差还是训练集误差适应度函数决定 GA 往哪个方向进化。最直接的做法是把个体解码成网络参数在训练集上跑一遍前向传播算均方误差 MSE取负值或者倒数作为适应度GA 通常求最大。但这里有个坑如果只用训练集误差GA 会倾向于找一组在训练集上过拟合的参数交给 BP 之后验证集照样崩。更稳的做法是用验证集误差作为适应度。具体操作是把数据按比例切成训练集和验证集GA 阶段每个个体解码后先在训练集上做少量 epoch 的前向计算甚至只做一次前向传播不更新权重然后在验证集上算 MSE用这个 MSE 的倒数作为适应度。这样 GA 选出来的是泛化能力更好的初始点。代价是计算量上去了——每个个体都要跑一遍验证集。如果样本量大可以只取验证集的一个子集来评估或者减少 GA 种群规模和迭代代数。工程上要在效果和耗时之间找平衡我一般种群取 20~50迭代 50~100 代先看效果再调。3. 用 Python 把 GA-BP 回归预测跑通从数据到模型3.1 数据准备与网络结构定义先准备一份回归数据。这里用一个常见的非线性函数生成模拟数据方便你直接复现换成自己的 CSV 也一样。网络结构定为「输入 3 维 → 隐层 8 个节点 → 输出 1 维」隐层用 tanh输出层线性。import numpy as np np.random.seed(42) # 生成模拟回归数据3 个输入特征1 个输出 def make_data(n_samples800): X np.random.uniform(-2, 2, size(n_samples, 3)) # 非线性关系 噪声 y (np.sin(X[:, 0]) X[:, 1] ** 2 * 0.5 - 0.8 * X[:, 2] 0.3 * X[:, 0] * X[:, 2] np.random.normal(0, 0.1, n_samples)) return X, y.reshape(-1, 1) X, y make_data() # 归一化到 [0,1]回归任务里这一步不能省 def minmax_fit(x): return x.min(axis0), x.max(axis0) def minmax_transform(x, lo, hi): return (x - lo) / (hi - lo 1e-8) x_lo, x_hi minmax_fit(X) y_lo, y_hi minmax_fit(y) X_n minmax_transform(X, x_lo, x_hi) y_n minmax_transform(y, y_lo, y_hi) # 切分训练/验证 idx np.random.permutation(len(X_n)) split int(0.8 * len(X_n)) X_train, y_train X_n[idx[:split]], y_n[idx[:split]] X_val, y_val X_n[idx[split:]], y_n[idx[split:]] INPUT_DIM 3 HIDDEN_DIM 8 OUTPUT_DIM 1这段代码做了三件事造数据、归一化、切分。归一化用 min-max 而不是标准化是因为后面 GA 的搜索范围我按 [-1,1] 设输入输出都在 [0,1] 能让权重尺度更一致。注意y_lo, y_hi要留着预测完要反归一化回原始量纲。3.2 前向传播与参数解码GA 的个体是一条实数向量需要解码成权重矩阵和阈值向量。前向传播函数负责给定参数和输入算出预测值。def decode_params(vec): 把一维向量解码成 W1, b1, W2, b2 i 0 W1 vec[i:i INPUT_DIM * HIDDEN_DIM].reshape(INPUT_DIM, HIDDEN_DIM) i INPUT_DIM * HIDDEN_DIM b1 vec[i:i HIDDEN_DIM] i HIDDEN_DIM W2 vec[i:i HIDDEN_DIM * OUTPUT_DIM].reshape(HIDDEN_DIM, OUTPUT_DIM) i HIDDEN_DIM * OUTPUT_DIM b2 vec[i:i OUTPUT_DIM] return W1, b1, W2, b2 def forward(X, params): W1, b1, W2, b2 decode_params(params) z1 X W1 b1 a1 np.tanh(z1) # 隐层激活 z2 a1 W2 b2 # 输出层线性 return z2 def mse(y_true, y_pred): return np.mean((y_true - y_pred) ** 2)decode_params里的切片顺序必须和后面 GA 初始化、BP 取参数的顺序完全一致这是最容易出错的地方——顺序错一位整个网络就是乱的但代码不报错只是效果差排查起来很费时间。建议把参数长度PARAM_LEN算出来初始化时断言一下。3.3 遗传算法主循环选择、交叉、变异GA 主循环负责进化种群。适应度用验证集 MSE 的倒数选择用锦标赛交叉用模拟二进制交叉SBX的简化版变异用高斯扰动。PARAM_LEN INPUT_DIM * HIDDEN_DIM HIDDEN_DIM HIDDEN_DIM * OUTPUT_DIM OUTPUT_DIM def fitness(vec): pred forward(X_val, vec) return 1.0 / (mse(y_val, pred) 1e-8) def tournament(pop, fits, k3): idx np.random.choice(len(pop), k, replaceFalse) best idx[np.argmax(fits[idx])] return pop[best].copy() def crossover(p1, p2, eta0.5): # 简化版算术交叉 alpha np.random.uniform(-eta, 1 eta, sizep1.shape) c1 alpha * p1 (1 - alpha) * p2 c2 alpha * p2 (1 - alpha) * p1 return c1, c2 def mutate(vec, pm0.1, sigma0.2): mask np.random.rand(len(vec)) pm vec[mask] np.random.normal(0, sigma, mask.sum()) return np.clip(vec, -2, 2) POP_SIZE 30 GENERATIONS 60 pop np.random.uniform(-1, 1, size(POP_SIZE, PARAM_LEN)) best_vec, best_fit None, -np.inf for gen in range(GENERATIONS): fits np.array([fitness(ind) for ind in pop]) if fits.max() best_fit: best_fit fits.max() best_vec pop[np.argmax(fits)].copy() new_pop [pop[np.argmax(fits)].copy()] # 精英保留 while len(new_pop) POP_SIZE: p1 tournament(pop, fits) p2 tournament(pop, fits) c1, c2 crossover(p1, p2) new_pop.append(mutate(c1)) if len(new_pop) POP_SIZE: new_pop.append(mutate(c2)) pop np.array(new_pop) if gen % 10 0: print(fGen {gen}: best fitness{best_fit:.4f}, val MSE{1/best_fit:.6f})几个参数要说明POP_SIZE30是种群规模太小容易早熟太大耗时GENERATIONS60是迭代代数一般 50~100 够用pm0.1是变异概率太高退化成随机搜索太低种群多样性不够sigma0.2是变异步长控制局部扰动幅度。精英保留那一行很重要保证最优个体不会在交叉变异中丢失。3.4 把 GA 结果交给 BP 做精调GA 跑完best_vec就是初始参数。接下来用 BP 在这个起点上继续训练。这里用 PyTorch 搭网络把 GA 的解填进去再用 Adam 做梯度下降。import torch import torch.nn as nn class Net(nn.Module): def __init__(self): super().__init__() self.fc1 nn.Linear(INPUT_DIM, HIDDEN_DIM) self.fc2 nn.Linear(HIDDEN_DIM, OUTPUT_DIM) def forward(self, x): return self.fc2(torch.tanh(self.fc1(x))) net Net() W1, b1, W2, b2 decode_params(best_vec) with torch.no_grad(): net.fc1.weight.copy_(torch.tensor(W1.T, dtypetorch.float32)) net.fc1.bias.copy_(torch.tensor(b1, dtypetorch.float32)) net.fc2.weight.copy_(torch.tensor(W2.T, dtypetorch.float32)) net.fc2.bias.copy_(torch.tensor(b2, dtypetorch.float32)) Xtr torch.tensor(X_train, dtypetorch.float32) ytr torch.tensor(y_train, dtypetorch.float32) Xva torch.tensor(X_val, dtypetorch.float32) yva torch.tensor(y_val, dtypetorch.float32) opt torch.optim.Adam(net.parameters(), lr1e-3) loss_fn nn.MSELoss() for epoch in range(500): net.train() opt.zero_grad() loss loss_fn(net(Xtr), ytr) loss.backward() opt.step() if epoch % 100 0: net.eval() with torch.no_grad(): val_loss loss_fn(net(Xva), yva).item() print(fEpoch {epoch}: train{loss.item():.6f}, val{val_loss:.6f})注意权重转置decode_params里 W1 形状是 (INPUT_DIM, HIDDEN_DIM)而 PyTorch 的nn.Linear权重形状是 (out_features, in_features)所以填进去要转置。这个细节不注意网络能跑但预测全错。4. 调参和避坑GA-BP 回归里最容易翻车的地方4.1 适应度函数设计不当导致 GA 白跑现象GA 迭代几十代best fitness 几乎不动或者波动很大最后交给 BP 效果和随机初始化差不多。原因适应度函数直接用训练集 MSEGA 选出来的个体在训练集上误差小但泛化差或者适应度没有做尺度处理MSE 太小导致 fitness 数值巨大选择压力失衡。解决用验证集 MSE 的倒数做适应度并且加一个极小值1e-8防止除零。如果验证集 MSE 本身很小比如 1e-6 量级fitness 会到 1e6这时候可以对 MSE 取对数再取负压缩动态范围。另外GA 阶段每个个体只做一次前向传播评估不要跑完整 BP 训练否则计算量爆炸。4.2 参数解码顺序和网络初始化顺序不一致现象代码不报错但 GA 优化后的网络预测结果比随机初始化还差loss 不降反升。原因decode_params里切片顺序是 W1、b1、W2、b2但填进 PyTorch 时顺序搞混或者权重转置漏了。这种错误不会抛异常只是数值全乱。解决把参数长度和切片顺序写成一个函数初始化和解码都调它。填权重时打印一下形状对比print(W1.shape, net.fc1.weight.shape)确认转置关系。我一般会在填完之后用同一批输入分别跑 numpy 前向和 PyTorch 前向对比输出是否一致不一致就是填错了。4.3 变异概率和步长设错导致早熟或震荡现象GA 前期 fitness 上升快后期停滞或者 fitness 一直上下跳收敛不了。原因变异概率pm太低比如 0.01种群多样性丢失早熟收敛pm太高比如 0.5退化成随机搜索。变异步长sigma太大扰动过头fitness 震荡太小搜索范围不够。解决pm取 0.05~0.2sigma取 0.1~0.3先用中间值跑看 fitness 曲线。如果 20 代内就停滞调大pm或sigma如果一直震荡调小。也可以做自适应变异前期sigma大后期小。另外种群规模不要低于 20否则选择压力不够。4.4 归一化反归一化漏掉导致预测值量纲错误现象模型训练 loss 很小但预测出来的值和真实值差几个数量级。原因训练时对 y 做了归一化预测完忘了反归一化或者反归一化用错了y_lo, y_hi。解决把反归一化写成一个函数预测完立刻调用y_pred_real y_pred_n * (y_hi - y_lo) y_lo。注意y_lo, y_hi是训练集上算的不要用全量数据重算否则验证集信息泄漏。如果输入也归一化了预测新样本时输入也要用同样的x_lo, x_hi变换。4.5 GA 迭代太久但收益递减现象GA 跑了 200 代fitness 从第 50 代开始几乎不变但耗时翻了几倍。原因GA 是全局搜索前期快速下降后期在最优解附近微调收益递减。继续跑只是浪费算力。解决设一个早停条件比如连续 20 代 best fitness 提升小于 1e-4 就停。或者把 GA 代数控制在 50~100剩下的交给 BP 精调。GA 的目标是找一个「不错」的起点不是找全局最优——全局最优交给 BP 在局部做。我一般 GA 跑 60 代BP 跑 500 epoch效果和跑 200 代 GA 差不多但省一半时间。5. 进阶技巧用 GA 的种群信息判断 BP 该跑多久GA 跑完不只是给你一个best_vec整个种群的 fitness 分布是有信息的。如果种群 fitness 方差很小说明 GA 已经收敛到一个比较确定的区域BP 可以从较小的学习率开始精细搜索如果方差还很大说明搜索空间里还有多个有希望的区域BP 可以适当调大学习率或者多跑几个 epoch。具体做法GA 结束后取种群 fitness 的均值和标准差算变异系数 CV std / mean。CV 小于 0.05BP 学习率设 1e-3CV 在 0.05~0.2学习率设 3e-3CV 大于 0.2学习率设 1e-2 并加学习率衰减。这个经验规则不是理论推导是我在几个回归任务上试出来的能减少手动调学习率的次数。另一个技巧是用 GA 的多次独立运行做模型集成。GA 有随机性跑 5 次得到 5 组初始参数分别交给 BP 训练最后把 5 个模型的预测取平均。这样比单次 GA-BP 更稳尤其在小样本回归任务上方差能降不少。代价是训练时间乘 5但推理时只是多跑几个前向可以接受。验证方法上除了看验证集 RMSE我习惯画一张预测值 vs 真实值的散点图理想情况是点落在 yx 附近。如果散点图呈扇形大值区误差大说明输出层可能需要加非线性或者 y 的归一化方式要改。如果散点图整体偏移检查反归一化。这些图比 loss 曲线更能暴露问题。最后说个习惯每次跑 GA-BP我都会固定随机种子把 GA 的best_vec和 BP 的最终权重存下来。回归任务里模型复现性很重要——同样的数据、同样的参数下次跑出来结果应该一致。GA 的随机性可以通过种子控制BP 的随机性主要在初始化和 dropout如果用了种子固定后都能复现。这个习惯帮我省了很多「上次效果挺好这次怎么不行」的排查时间。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Python实现股票价格序列形态相似性分析

Python实现股票价格序列形态相似性分析

简介:本资源是一份面向金融数据分析初学者与课程设计实践者的Python实战项目,聚焦股票价格时间序列的相似性度量问题,适用于量化分析入门、数据科学课程作业及算法可视化教学场景。压缩包共12个文件,含2个核心Python脚本&#xff…

2026/10/12 20:34:13 阅读更多 →
模式识别实验Python实战:环境配置、数据预处理与经典算法实现

模式识别实验Python实战:环境配置、数据预处理与经典算法实现

简介:一套基于Python的模式识别课程实验代码包,面向需要完成贝叶斯分类、Fisher判别、K近邻与PCA人脸识别等实验的高校学生。资源覆盖性别分类、人脸识别等典型任务,配套实验报告与可运行代码,能直接对照运行并辅助理解原理。包内…

2026/10/12 20:34:13 阅读更多 →
电力负荷预测课程设计:基于多特征LSTM的完整实现与避坑指南

电力负荷预测课程设计:基于多特征LSTM的完整实现与避坑指南

简介:面向高校学生与期末大作业场景,一套基于 Python 深度学习的多特征电力负荷预测课程设计项目,覆盖从数据预处理、特征构造、LSTM 模型训练到预测结果可视化的完整流程,也适合深度学习入门者进行项目实践。压缩包仅 8 个文件&a…

2026/10/12 20:34:13 阅读更多 →

最新新闻

VUE集成UEditor完整指南:从组件封装到图片上传与问题排查

VUE集成UEditor完整指南:从组件封装到图片上传与问题排查

把VUE集成UEditor这事儿,你在搜索引擎里能翻出一百篇帖子,但真正能一次跑通的,估计不到三成。写帖子的人大多是贴了个组件就完事,没告诉你UEditor那套偏老旧的纯前端架构,跟现在VUE工程化构建之间隔了多少条沟。你照着…

2026/10/12 21:31:18 阅读更多 →
投影仪标定实战:从针孔模型到光束法平差的完整指南

投影仪标定实战:从针孔模型到光束法平差的完整指南

简介:ProCamCalib 是一款面向计算机视觉与三维重建研究者的投影仪-相机系统校准工具,用 Java 编写,可对投影机-相机系统完成几何与颜色校准,并支持多相机、多投影仪配置。它通过置于原点的首台相机进行立体校准,校准板…

2026/10/12 21:31:18 阅读更多 →
进程控制块PCB:操作系统进程控制的物理基石

进程控制块PCB:操作系统进程控制的物理基石

1. 这道题为什么让很多人栽在“进程控制块”上?“第2单元进程的描述与控制考试T1”——光看标题,你可能以为这只是某次课堂小测的普通编号题。但实际接触过的学生反馈,这道题的失分率常年高于65%,远超同卷其他基础题。它不考代码、…

2026/10/12 21:31:18 阅读更多 →
大厂Java社招面试高频题与解析:JVM、并发、MySQL、Redis全覆盖

大厂Java社招面试高频题与解析:JVM、并发、MySQL、Redis全覆盖

面完一轮头部互联网公司的社招Java岗,我把整轮面试遇到的高频题和参考答案重新整理了一遍。一开始是打算凭记忆复盘的,结果越整理越觉得,大厂社招Java面试其实翻来覆去就那么几座山:JVM、并发、MySQL、Redis、分布式场景、还有一两…

2026/10/12 21:31:17 阅读更多 →
OpenClaw深度解析:从零构建你的个人AI助手(金元宝生成)

OpenClaw深度解析:从零构建你的个人AI助手(金元宝生成)

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

2026/10/12 21:31:17 阅读更多 →
STM32定时器编码器四倍频原理与配置实战

STM32定时器编码器四倍频原理与配置实战

1. 为什么编码器四倍频值得单独拿出来说做电机控制或者位置检测的朋友,对增量式编码器肯定不陌生。这种编码器一般输出A、B两路正交信号,转一圈输出固定数量的脉冲。但很多人第一次用STM32的定时器接编码器时,会发现读出来的计数值和手册上的…

2026/10/12 21:30:16 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →