PyTorch实现LSTM时间序列预测:数据处理、模型训练与避坑指南
简介基于Python与LSTM神经网络的时间序列预测项目资源面向机器学习入门者及时间序列分析开发者提供一套从数据清洗、特征提取到模型构建与预测的完整实践方案。资源包共129个文件压缩后仅5.42MB其中78个py脚本构成完整模型代码26个csv文件存储空气质量等多组时间序列实验数据15个txt记录环境配置与运行说明另有h5权重文件、checkpoint训练检查点及meta图结构文件既可用于推理也可继续训练。项目基于TensorFlow框架与Keras高级接口搭建LSTM网络完整覆盖数据清洗、特征提取、数据建模、数据预测四个环节。读者可对照脚本理解缺失值处理、特征缩放、滑动窗口构造、LSTM层设计、模型编译与反向归一化等关键细节从而掌握工业或环境监测场景中时间序列预测的典型工程链路。目前已有7271人学习下载特别适合希望快速上手真实时序数据、并在此基础上改造适配自身预测任务的开发者。1. 下载 LSTM 时间序列预测 zip 之前先想清楚三件事标题里的 zip 在技术群、网盘链接里出现的频率很高。下载之前真正重要的只有三件事这个包能不能在自己手头的数据上直接跑通、参数到底改哪几处、跑出来的预测结果凭什么判断好坏。以我做这类项目的经验看Python 基于 LSTM 神经网络做时间序列预测核心价值不在那几十行模型定义代码——PyTorch 的 nn.LSTM 封装得很干净真正决定成败的是数据处理、滑动窗口构造和反归一化这三段不起眼的脚本。下面按一条完整的 Python 预测流水线讲从数据预处理、模型训练到结果验证新手可以照着抄跑过几轮的人重点看第四章的翻车清单和最后一章的收敛检查。2. LSTM 凭什么胜任时间序列预测从梯度消失到门控记忆2.1 RNN 的短时记忆缺陷梯度消失让长序列记不住时间序列预测的本质是给定过去一段观测值预测未来的值。最简单的做法是拿历史 N 个点做特征、未来一个点做标签丢给前馈神经网络去拟合。前馈神经网络能学到非线性映射但它对顺序不敏感——把输入特征的先后顺序打乱输出几乎不变所以它抓不住序列里的前后依赖关系。循环神经网络RNN在结构上解决了顺序问题每个时间步的隐藏状态 h_t 既接收当前输入 x_t也接收上一步的 h_{t-1}信息沿着时间轴传递。但随着序列变长反向传播时梯度要沿时间轴连乘sigmoid 和 tanh 的导数最大值分别只有 0.25 和 1.0连乘几十步之后梯度要么消失要么爆炸网络学不到距离当前时刻很远的依赖。直观地说RNN 的记忆是短时记忆周期、趋势这类需要回看几十个时间步的规律它基本记不住。这就是 LSTM 出场的原因——长短期记忆网络专治长依赖。2.2 三个门与细胞状态LSTM 把记忆变成显式管理LSTM 的改进思路并不复杂单独拉出一条细胞状态 c_t 作为“传送带”横穿整个时间轴梯度可以在上面近乎无损地流动同时用三个门控制信息的写入、遗忘和输出。遗忘门决定上一时刻的 c_{t-1} 保留多少输入门决定当前候选记忆有多少进入细胞状态输出门决定当前隐藏状态 h_t 对外输出什么。三个门全部用 sigmoid 输出 0 到 1 的权重候选记忆用 tanh 把值压到 -1 到 1。整套机制落到 PyTorch 里就是一行 nn.LSTM但理解门控才能解释调试时看到的诡异现象。比如预测结果是一条水平线多半是输出门学成了接近全 0或者数据没有归一化导致 tanh 长期处于饱和区比如 loss 掉得很慢往往是遗忘门初始值不合理。不看门控只看 loss调参就真成了玄学。2.3 输入形状与两种组织方式先把张量维度想清楚PyTorch 里 LSTM 的输入形状是 [batch, seq_len, input_size]前提是设置 batch_firstTrue。seq_len 是滑动窗口长度input_size 是每个时间步的特征数。这里有个新手最容易混淆的点单变量时间序列的 input_size1指的是每个时间步只有一个数值不是一个样本只有一条数据。一个窗口里有 seq_len 个连续时间步每个时间步一个值拼在一起才是模型看到的一条样本。在预测任务上LSTM 有两种组织方式。常见做法是 many-to-one用 [t-seq_len, t-1] 的窗口预测 t 时刻的值适合一步预测和递归多步另一种是 many-to-many整个窗口输入后输出一段对应的未来序列适合直接做未来 N 步预测。这个 zip 类型的项目里如果是标准的单变量回归几乎都采用 many-to-one。先记住一个原则LSTM 的输出 out[:, -1, :] 取的是最后一个时间步的隐藏状态做时序预测时通常从这里接一个全连接层而不是把整个 seq_len 的输出都拿去回归——后者会让模型被迫在每个时间步都输出一个值语义对不上。3. 用 PyTorch 搭建 LSTM 预测最小闭环数据、模型、训练三步走3.1 数据读取与归一化MinMaxScaler 的 fit 和 transform 必须分开先看数据准备。单变量场景直接用 pandas 读 CSV取一列数值。这一段代码是整个项目里最容易埋雷的地方。import pandas as pd import numpy as np from sklearn.preprocessing import MinMaxScaler # 假设数据是小时级记录两列date, value共 1000 条 df pd.read_csv(time_series.csv) values df[value].values.reshape(-1, 1) # 切分训练/测试前 800 条训练后 200 条验证 train_size 800 train_raw, test_raw values[:train_size], values[train_size:] # 关键MinMaxScaler 只在训练段 fit测试段只 transform scaler MinMaxScaler(feature_range(0, 1)) train_scaled scaler.fit_transform(train_raw) test_scaled scaler.transform(test_raw)这段代码里最重要的一行是 fit_transform 和 transform 的分工。如果先对整个数据集 fit 再切分测试集的均值、最大值会参与训练数据的缩放相当于把未来的信息提前泄露给了模型。这样测出来的指标虚高部署后一上真实数据就翻车。选择 MinMaxScaler 而不是 StandardScaler原因是 LSTM 内部的激活函数是 sigmoid 和 tanh输出范围天然落在 01 或 -11把输入也压到同一量级梯度更容易稳定。StandardScaler 生成的数据有正有负且方差为 1也能跑但收敛速度和稳定性通常差一些。注意预测完的结果一定要用同一个 scaler 做 inverse_transform 还原否则你汇报的 RMSE 是归一化尺度下的业务看不懂。3.2 滑动窗口构造监督样本seq_len 的取值边界时间序列本身没有标签要把它变成监督学习样本就得用滑动窗口。窗口长度 seq_len 是这批超参数里最敏感的一个。def make_sequences(data, seq_len): X, y [], [] for i in range(seq_len, len(data)): X.append(data[i - seq_len:i, 0]) # 前 seq_len 个点 y.append(data[i, 0]) # 后一个点为标签 return np.array(X), np.array(y) SEQ_LEN 10 X_train, y_train make_sequences(train_scaled, SEQ_LEN) X_test, y_test make_sequences(test_scaled, SEQ_LEN) # 转成 PyTorch 张量形状 [样本数, seq_len, 1] X_train torch.tensor(X_train, dtypetorch.float32).unsqueeze(-1) y_train torch.tensor(y_train, dtypetorch.float32).unsqueeze(-1)seq_len 取多少没有标准答案。取太小比如 23模型只能看到局部抖动长周期规律学不到取太大比如等于样本数的一半能构造的训练样本数量骤减而且相邻窗口高度重叠模型容量被浪费在重复信息上。我通常的做法先看序列的自相关图acf找周期。周期 24 小时的数据取 2448 起步纯趋势型数据取 1030 再小网格搜索。另一个容易被忽略的点窗口重叠让相邻训练样本高度相关这不影响正确性但会让训练 loss 曲线特别光滑别把光滑当成收敛信号。3.3 模型定义一个 LSTM 加一个全连接输出层定义模型时核心是把输入维度和输出维度对应清楚。import torch import torch.nn as nn class LSTMTimeSeries(nn.Module): def __init__(self, input_size1, hidden_size64, num_layers2): super().__init__() self.lstm nn.LSTM( input_sizeinput_size, # 单变量就是 1 hidden_sizehidden_size, # 隐藏状态宽度 num_layersnum_layers, # 层数2 层是性价比之选 batch_firstTrue ) self.fc nn.Linear(hidden_size, 1) def forward(self, x): # x: [batch, seq_len, 1] out, _ self.lstm(x) # out: [batch, seq_len, hidden] last_hidden out[:, -1, :] # 取最后一个时间步的隐藏状态 return self.fc(last_hidden) # 输出 [batch, 1]注意 out[:, -1, :] 这一步。LSTM 每个时间步都产出一个隐藏状态但 many-to-one 的回归任务是拿最后一个时间步的隐藏状态去接全连接层。数值上这一行和用 h_n[-1] 等价写法上前者更直观。hidden_size 是每个时间步内部特征向量的宽度64 是起步值。num_layers2 能捕捉更高层的时序抽象但有代价训练变慢、更容易过拟合。不少时序比赛里 1 层就够用不要迷信层数。input_size 如果大于 1说明是多元时序每个时间步有多维特征这时只要把 input_size 改成特征维度模型结构不用动。3.4 训练循环与预测回放MSE 加 Adamshuffle 保持 False训练部分走标准流程但有两个时间序列特有的细节。model LSTMTimeSeries(input_size1, hidden_size64, num_layers2) criterion nn.MSELoss() # 回归任务默认 MSE optimizer torch.optim.Adam(model.parameters(), lr1e-3) batch_size 64 dataset torch.utils.data.TensorDataset(X_train, y_train) loader torch.utils.data.DataLoader( dataset, batch_sizebatch_size, shuffleFalse # 时序数据保持顺序 ) epochs 100 for epoch in range(epochs): model.train() epoch_loss 0.0 for xb, yb in loader: optimizer.zero_grad() pred model(xb) loss criterion(pred, yb) loss.backward() optimizer.step() epoch_loss loss.item() * xb.size(0) if (epoch 1) % 20 0: print(fepoch {epoch1} loss{epoch_loss / len(dataset):.6f})DataLoader 里 shuffleFalse 是刻意的。时间序列样本之间本来就有前后依赖把样本顺序打乱再喂模型每个 epoch 内模型看到的序列起点随机训练分布的平稳性被破坏对带季节性的数据尤其明显。想要随机性帮助收敛应该把随机性放在 batch 内部采样上而不是 epoch 间的重排。训练完预测和反归一化是一体的model.eval() with torch.no_grad(): y_pred_scaled model(X_test).numpy() y_pred scaler.inverse_transform(y_pred_scaled) y_true scaler.inverse_transform(y_test.numpy())这里最常见的报错是 X_test 形状不对。X_test 必须是 [batch, seq_len, 1]如果从 numpy 转过来时少了 unsqueeze(-1)维度对不上轻则报 RuntimeError重则静默广播错。提示核心参数先按这张表起步不要一上来就全量网格搜索。参数常见取值影响SEQ_LEN1048太小学不到周期太大样本量骤减hidden_size32128越大拟合能力越强过拟合风险越高num_layers132 层是常见的性价比选择lr1e-3 起步大于 1e-2 容易发散低于 1e-4 收敛太慢batch_size32128影响收敛平稳性不太敏感4. LSTM 时间序列预测避坑指南五个让模型翻车的细节4.1 训练 loss 正常下降预测结果却是一条水平线现象训练 100 个 epochMSE 从 0.05 降到 0.002看着很漂亮但画出来的预测值是一条几乎水平的直线贴近训练集的均值。原因这类数据往往是白噪声占比高的序列。LSTM 学到的最优策略就是输出一个接近均值的常数因为这能让 MSE 最小。这是回归任务的常见陷阱不是模型坏了。另一种可能是数值问题输入没有归一化原始值上万tanh 长期处于饱和区梯度接近零。解决先看数据本身。计算自相关系数如果序列没有可学习的周期或趋势任何模型都救不了。如果有周期确认归一化做对了、seq_len 对准周期再试。另外看预测值的方差如果远小于真实值方差基本就是均值回归策略。4.2 预测曲线整体滞后一拍现象预测曲线和真实值形状几乎一样但整体向右平移了一个时间步像延迟跟随。原因一步预测时模型每个时刻的输入是上一时刻的真实值训练标签是紧接的下一个真实值。这本质上在拟合差分关系模型倾向于沿用上一步的值再加微小修正于是滞后一拍。在金融和高频数据里极其常见。解决把目标从预测原始值改成预测差分值对序列先做一阶差分再建模或者一次输出未来多步取消逐步滚动的滞后效应。还有一个工程做法训练时随机用模型自己的预测值做输入scheduled sampling迫使模型摆脱对真实输入的依赖。4.3 归一化把测试集信息泄露给了模型现象训练 loss 正常测试集 RMSE 很低部署后效果断崖式下跌。原因数据预处理阶段对全量数据做了 fit_transform测试集的均值和最值早就写进 scaler 了。这是典型的 data leakage最容易发生在“图省事把整个数据集一起标准化”的写法上。解决scaler 永远只在训练段 fit测试段和未来的新数据一律只 transform。如果你拿到别人写的预测脚本从这一行开始审查MinMaxScaler().fit_transform 出现在切分之前基本可以断定这个项目的指标要打折扣。4.4 不加思考地 shuffle 训练数据现象同样的代码、同样的随机种子在 DataLoader 里加了 shuffleTrue 后验证集 loss 明显变差训练 loss 抖动剧烈。原因时序数据的顺序本身携带信息。shuffle 切断了样本之间的时间连续性对季节性和趋势性数据模型会在周期边界上反复震荡。解决训练集 loader 保持 shuffleFalse。评估时用 walk-forward 验证按时序滚动切分训练/测试而不是随机切分。随机切分对时序数据基本没有意义。4.5 多步预测误差越滚越大后半段完全不可信现象单步预测 RMSE0.03递归滚动预测 30 步之后预测值开始发散或整体偏离。原因递归多步预测把上一步的预测值当下一步的输入误差每一步都在累积放大这在混沌性稍强的序列上尤其明显。解决评估时把单步误差和滚动多步误差分开报告不要让一张 30 步预测图误导决策。工程上优先考虑直接多步模型一次输出未来 N 步代价是训练样本变成窗口对窗口数据量需求更大。5. 让预测结果可验证指标、多步预测与可视化5.1 RMSE、MAE、MAPE三个指标分别盯什么指标选错会让结论失真。RMSE 放大大误差适合判断有没有离谱的预测点MAE 反映平均偏差对业务更直观MAPE 无量纲适合跨数据集比较但真实值接近 0 时会爆炸。from sklearn.metrics import mean_squared_error, mean_absolute_error rmse np.sqrt(mean_squared_error(y_true, y_pred)) mae mean_absolute_error(y_true, y_pred) mape np.mean(np.abs((y_true - y_pred) / np.where(y_true 0, 1e-8, y_true))) * 100 print(fRMSE{rmse:.4f} MAE{mae:.4f} MAPE{mape:.2f}%)以 RMSE 为主指标配合上一章的滞后检查。如果 RMSE 低但 lag 明显说明模型只是延迟复制了真实值这个低 RMSE 没有实际意义。5.2 多步预测的三种实现递归、直接、seq2seq方式实现思路优缺点递归多步预测 1 步把结果拼回输入再预测下一步最简单但误差累积直接多步输出层改成 hidden - n 个未来点一次到位需要重造标签seq2seqEncoder 编码历史Decoder 逐步输出灵活工程量大def make_multistep_data(data, seq_len, out_steps): X, y [], [] for i in range(seq_len, len(data) - out_steps 1): X.append(data[i - seq_len:i, 0]) y.append(data[i:i out_steps, 0]) return np.array(X), np.array(y) class LSTMMultiStep(nn.Module): def __init__(self, input_size, hidden_size, num_layers, out_steps): super().__init__() self.lstm nn.LSTM(input_size, hidden_size, num_layers, batch_firstTrue) self.fc nn.Linear(hidden_size, out_steps) # 一次输出 out_steps 个点 def forward(self, x): out, _ self.lstm(x) return self.fc(out[:, -1, :])out_steps 一般取 1030同时建议把输入窗口 seq_len 加长保证模型看到的信息足够覆盖要预测的跨度。5.3 可视化预测和真实值必须画在同一张图import matplotlib.pyplot as plt plt.figure(figsize(12, 4)) plt.plot(y_true[:100], labeltrue, linewidth1.5) plt.plot(y_pred[:100], labelpred, linewidth1.5, linestyle--) plt.xlabel(time step) plt.ylabel(value) plt.legend() plt.tight_layout() plt.savefig(prediction_result.png, dpi150)重点是只画前 100 个点而不是全部。曲线一旦挤在一起偏差完全看不出来所有论文图都是局部放大。dpi 设 150 以上保证打印或汇报时清晰。6. 从能跑到能用收敛检查、网格搜索与部署前最后一遍检查6.1 先用收敛曲线判断模型有没有学歪训练结束先画 loss 曲线。训练 loss 和验证 loss 一起稳步下降说明正常验证 loss 先降后升是过拟合减小 hidden_size 或提前停止验证 loss 从一开始就抖动不降多半学习率太大或数据没归一化。如果 loss 在某个数值附近反复震荡加梯度裁剪经常能救回来torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm1.0)放在 optimizer.step() 之前实验里对 LSTM 的稳定性帮助明显。6.2 固定随机种子的网格搜索LSTM 的初始化带随机性同一个参数组合跑两次结果能差 5% 以上。我现在的习惯是每次实验前固定随机种子每个参数组合跑三遍取中位数再排序比较。搜索范围就四个参数seq_len10/24/48、hidden_size32/64/128、num_layers1/2、lr1e-3/5e-4。别一上来就搜 batch_size 和 dropout先把前四个定住效果和开销的性价比最高。6.3 部署前检查清单模型保存用 torch.save(model.state_dict(), lstm.pt)加载时先建同样结构的模型再 load_state_dictscaler 必须和模型一起持久化新数据进来先 transform 再预测做完 inverse_transform 还原输入维度保持 [1, seq_len, 1]上线报错九成是 shape 不匹配训练脚本里的随机种子固定写进配置保证可复现。我现在做预测任务有个固定流程数据先行、指标先算、图画完再调参数调参本身只占其中一个小时。这个习惯帮我少踩了很多次坑希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Python LSTM时间序列预测实战:从数据预处理到模型训练与避坑指南

Python LSTM时间序列预测实战:从数据预处理到模型训练与避坑指南

简介:基于Python与LSTM神经网络的时间序列预测完整项目,面向有一定Python基础、希望掌握深度学习时序建模的开发者与学生。项目基于TensorFlow框架与Keras接口构建,覆盖数据清洗、特征提取、模型搭建与预测输出全流程,可迁移到空气…

2026/10/2 21:07:22 阅读更多 →
Android 15.1更新提示存储空间不足?揭秘OTA存储校验与清理全攻略

Android 15.1更新提示存储空间不足?揭秘OTA存储校验与清理全攻略

昨天后台有个读者私信我,说手机收到了Android 15.1的更新推送,点下载之后直接弹了个“存储空间不足”。他特别困惑:手机明明还剩17.8GB可用空间,一个系统更新包撑死也就两三GB,怎么就不够了?我让他打开设置…

2026/10/2 21:06:21 阅读更多 →
Spring AI Function Calling实战:Java后端工具调用与多轮对话

Spring AI Function Calling实战:Java后端工具调用与多轮对话

1. 为什么 Function Calling 值得你花时间吃透Function Calling 这个词,这两年在 Java 后端圈子里出现的频率越来越高。很多人第一次听到它,以为是什么新出的 RPC 框架或者某种远程调用协议,其实不是。它解决的是一个非常具体的问题&#xff…

2026/10/2 21:06:21 阅读更多 →

最新新闻

校园二手交易网站毕设项目:SSM+Vue全链路实战解析

校园二手交易网站毕设项目:SSM+Vue全链路实战解析

简介:一套完整的校园二手交易网站设计与实现项目包,面向计算机相关专业毕业设计或课程设计使用者,采用 Java SSM Vue 技术栈构建,覆盖前台用户和后台管理员两类角色。系统包含商品浏览、二手发布、收藏下单、订单发货、求购信息…

2026/10/2 21:44:51 阅读更多 →
南山家常客家风味粤菜靠谱商家测评排名

南山家常客家风味粤菜靠谱商家测评排名

行业选择四大踩坑难题在深圳南山桃源街道周边找家常客家风味粤菜,很多人都踩过不少坑。 一是找不着地道口味的店:想吃正宗的手撕盐焗鸡、客家酿豆腐,跑了好几家店要么味道不够醇厚,要么用的食材不新鲜,吃不出老家的烟火…

2026/10/2 21:44:51 阅读更多 →
HoloCubic_AIO上位机架构解析:如何用Python Tkinter打造ESP32烧录与媒体转换工具

HoloCubic_AIO上位机架构解析:如何用Python Tkinter打造ESP32烧录与媒体转换工具

HoloCubic_AIO上位机架构解析:如何用Python Tkinter打造ESP32烧录与媒体转换工具 【免费下载链接】HoloCubic_AIO HoloCubic超多功能AIO固件 基于esp32-arduino的天气时钟、相册、视频播放、桌面投屏、web服务、bilibili粉丝等 项目地址: https://gitcode.com/Git…

2026/10/2 21:44:51 阅读更多 →
真实道路车辆检测数据集:1000张图与VOC/COCO/YOLO标签及训练教程

真实道路车辆检测数据集:1000张图与VOC/COCO/YOLO标签及训练教程

简介:本资源为面向目标检测初学者与算法工程师的真实道路车辆检测数据集,聚焦YOLO系列模型训练场景,可解决车辆目标检测任务中数据获取难、标注格式不统一的问题。压缩包共2000个文件,约115.18MB,包含1000张真实道路场…

2026/10/2 21:44:50 阅读更多 →
如何调试正在运行的Python程序

如何调试正在运行的Python程序

对当前正在运行的程序执行调试操作的办法, 主要涵盖以下几个层面, 一方面是借助于程序内置的调试器pdb这个工具, 另一方面是使用集成开发环境本身所附带的用来进行调试的相关功能模块, 再就是通过在代码中间插入用于记录状态的日志信息, 最后还可以启用外部的专用调试设施比如V…

2026/10/2 21:43:50 阅读更多 →
云晖达中墨出海成功案例是否真实可靠

云晖达中墨出海成功案例是否真实可靠

深圳云晖达国际贸易有限公司,作为深耕中墨制造业出海领域的专业服务商,聚焦计划赴墨西哥投资布局的国内制造企业,提供从前期调研到本地运营的一站式全周期出海解决方案,助力国内制造企业把握USMCA政策红利,顺利落地墨西…

2026/10/2 21:43:50 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/2 10:36:31 阅读更多 →
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/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练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/2 6:09:11 阅读更多 →