99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

LSTM時(shí)間序列預(yù)測(cè)源碼解析:從Excel數(shù)據(jù)處理到多步預(yù)測(cè)避坑指南

LSTM時(shí)間序列預(yù)測(cè)源碼解析:從Excel數(shù)據(jù)處理到多步預(yù)測(cè)避坑指南 簡(jiǎn)介這是一套基于PyTorch的LSTM時(shí)間序列預(yù)測(cè)完整源碼定位是讓小白也能快速跑通整個(gè)預(yù)測(cè)流程解決單變量/多變量輸入、單步/多步預(yù)測(cè)等常見(jiàn)時(shí)序建模需求。程序從Excel或CSV讀取數(shù)據(jù)更換數(shù)據(jù)集無(wú)需改動(dòng)核心代碼內(nèi)置MAE、MSE、R2、MAPE等評(píng)估指標(biāo)并按標(biāo)準(zhǔn)框架劃分訓(xùn)練集、驗(yàn)證集與測(cè)試集便于觀察模型在不同階段的表現(xiàn)。資源共27個(gè)文件約9.22MB以py源碼、pyc編譯文件、xlsx示例數(shù)據(jù)、png效果圖及pdf/docx使用說(shuō)明手冊(cè)為主另附帶訓(xùn)練好的模型權(quán)重可快速對(duì)照示例結(jié)果驗(yàn)證。配套注釋和使用手冊(cè)覆蓋數(shù)據(jù)替換、模型訓(xùn)練、預(yù)測(cè)與評(píng)估全流程做課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)或復(fù)現(xiàn)實(shí)驗(yàn)對(duì)比都很順手。已有266人學(xué)習(xí)下載適合剛接觸時(shí)序預(yù)測(cè)并希望直接套用模板的初學(xué)者。1. LSTM時(shí)間序列預(yù)測(cè)的“無(wú)腦”源碼這個(gè)包到底幫你省了哪些事當(dāng)你手里只有一份 Excel——銷(xiāo)量、傳感器溫度、設(shè)備振動(dòng)幅度、水庫(kù)水位——卻要在幾天內(nèi)交付一個(gè)能跑的基于 LSTM 的時(shí)間序列預(yù)測(cè)程序時(shí)真正讓人頭大的往往不是模型數(shù)學(xué)而是數(shù)據(jù)怎么喂進(jìn)去、訓(xùn)練完怎么保存權(quán)重、預(yù)測(cè)完怎么算誤差。這份基于 PyTorch 的 LSTM 預(yù)測(cè)源碼包刻意走“少折騰、直接出結(jié)果”的路線單變量/多變量輸入自由切換單步/多步預(yù)測(cè)自動(dòng)適配數(shù)據(jù)直接從 Excel/CSV 讀取訓(xùn)練集、驗(yàn)證集、測(cè)試集標(biāo)準(zhǔn)三切分訓(xùn)練結(jié)束一口氣給你 MAE、MSE、R2、MAPE 四個(gè)指標(biāo)。我拆過(guò)它全部代碼結(jié)論是它配得上“無(wú)腦”兩個(gè)字但里面還是藏了四個(gè)隱蔽坑。這篇文章從文件結(jié)構(gòu)到模型參數(shù)、從數(shù)據(jù)替換到指標(biāo)計(jì)算把這包源碼一次講透。2. 數(shù)據(jù)從 Excel 讀到 LSTM 輸入格式要求、歸一化與三集劃分2.1 數(shù)據(jù)讀取Excel/CSV 的打開(kāi)方式與格式紅線這個(gè)源碼包的數(shù)據(jù)入口是 Excel 或 CSV不是網(wǎng)上現(xiàn)成的數(shù)據(jù)集。你需要把數(shù)據(jù)整理成至少兩列一列是時(shí)間或順序索引一列是目標(biāo)值跑多變量就再加若干特征列目標(biāo)列放最后一列。先看最小讀取代碼import pandas as pd import numpy as np # data.xlsx 是默認(rèn)數(shù)據(jù)文件sheet_name0 表示第一個(gè)工作表 df pd.read_excel(data.xlsx, sheet_name0) print(df.columns.tolist()) # 確認(rèn)列名 print(df.head()) # 確認(rèn)前幾行 print(df.dtypes) # 確認(rèn)每列數(shù)據(jù)類(lèi)型這段代碼里有兩個(gè)容易被忽略的點(diǎn)。第一列名不要用中文和空格雖然源碼里很多位置靠列索引取值但換數(shù)據(jù)時(shí)列名干凈能大幅減少排錯(cuò)成本。第二dtypes 輸出很關(guān)鍵Excel 里看著是數(shù)字的列經(jīng)?;烊肷倭课谋咀兂?object 類(lèi)型后續(xù) sklearn 的 MinMaxScaler 會(huì)直接報(bào)錯(cuò)。正常的 dtype 應(yīng)該是 float64 或 int64看到 object 就說(shuō)明數(shù)據(jù)表里藏了非數(shù)字內(nèi)容。CSV 的讀取稍微不同df pd.read_csv(data.csv, encodingutf-8-sig)編碼參數(shù)我建議固定寫(xiě) utf-8-sig。Windows 上用 Excel 另存的 CSV 默認(rèn)是 ANSI/GBK 編碼不帶這個(gè)參數(shù)中文列名或者文字型特征讀進(jìn)來(lái)直接亂碼。utf-8-sig 的好處是同時(shí)兼容帶 BOM 和不帶 BOM 的 UTF-8 文件Linux 和 Windows 之間來(lái)回拷文件都不出問(wèn)題。讀取之后第一件事是清理數(shù)據(jù)。時(shí)間序列數(shù)據(jù)的清理按順序做先 dropna() 或者 fillna(methodffill)把缺值處理掉再用肉眼掃一遍有沒(méi)有明顯超出量級(jí)的異常值。時(shí)間序列里如果混入一個(gè) 1000 倍的峰值歸一化時(shí)整個(gè)數(shù)據(jù)的尺度都會(huì)被拉歪模型的預(yù)測(cè)基本作廢。源碼包里數(shù)據(jù)是干凈的但換成你自己的 Excel 時(shí)這一關(guān)必須自己過(guò)。2.2 歸一化為什么選 MinMaxScaler 而不是 StandardScalerLSTM 內(nèi)部激活函數(shù)默認(rèn)是 tanh輸出被壓在 [-1,1]原始數(shù)據(jù)如果是幾萬(wàn)、幾十萬(wàn)的量級(jí)梯度在反向傳播時(shí)很容易爆炸。源碼包默認(rèn)用 MinMaxScaler 把數(shù)據(jù)壓到 [0,1]。from sklearn.preprocessing import MinMaxScaler scaler MinMaxScaler(feature_range(0, 1)) data scaler.fit_transform(df.iloc[:, 1:].values.astype(np.float32))這里有兩個(gè)細(xì)節(jié)。第一個(gè)是 .values.astype(np.float32)PyTorch 默認(rèn)的 FloatTensor 是 32 位浮點(diǎn)如果喂 float64 的 numpy 數(shù)組在構(gòu)造 Dataset 時(shí)大概率報(bào) dtype 不匹配。第二個(gè)是 df.iloc[:, 1:]如果 DataFrame 里有時(shí)間列或 id 列必須先切掉時(shí)間戳在數(shù)學(xué)上沒(méi)有時(shí)序預(yù)測(cè)意義混進(jìn)去反而干擾特征計(jì)算。注意fit_transform 用在整份數(shù)據(jù)上還是先 fit 訓(xùn)練集再 transform 測(cè)試集最嚴(yán)格的寫(xiě)法是先對(duì)訓(xùn)練集 fit驗(yàn)證集和測(cè)試集用同一個(gè) scaler 做 transform避免測(cè)試集信息提前泄漏到歸一化參數(shù)里。數(shù)據(jù)量夠大且分布平穩(wěn)時(shí)直接對(duì)全量 fit 工程上也常見(jiàn)但嚴(yán)格項(xiàng)目建議按前者來(lái)。這里解釋一下為什么不用 StandardScaler。StandardScaler 把數(shù)據(jù)變成均值 0 方差 1適合線性模型和部分深度網(wǎng)絡(luò)但 LSTM 場(chǎng)景里 MinMaxScaler 更常見(jiàn)原因是它嚴(yán)格限制輸出范圍讓 tanh 激活始終處于有效工作區(qū)間。還有一個(gè)實(shí)際考慮MinMaxScaler 反歸一化時(shí)直接乘回去就還原真實(shí)數(shù)值不來(lái)回折騰對(duì)新手更友好。2.3 滑動(dòng)窗口構(gòu)造與三集劃分的邏輯這個(gè)源碼包比很多開(kāi)源項(xiàng)目講究的地方在于分了三份而不是兩份。默認(rèn)比例 70% 訓(xùn)練、20% 驗(yàn)證、10% 測(cè)試。代碼邏輯等價(jià)于train_size int(len(data) * 0.7) val_size int(len(data) * 0.2) train_data data[:train_size] val_data data[train_size:train_size val_size] test_data data[train_size val_size:]時(shí)間序列切分有兩個(gè)必須強(qiáng)調(diào)的點(diǎn)。第一不能隨機(jī) shuffle。數(shù)據(jù)一批接一批打亂之后模型就看到未來(lái)信息訓(xùn)練指標(biāo)再好看也是假象。第二三份數(shù)據(jù)之間允許有滑動(dòng)窗口的重疊這不叫數(shù)據(jù)泄漏而是時(shí)間序列樣本構(gòu)造的正常形態(tài)因?yàn)榇翱谥g本來(lái)就共享了部分歷史。滑動(dòng)窗口的構(gòu)造是時(shí)間序列預(yù)測(cè)的核心步驟源碼里對(duì)應(yīng)這段邏輯seq_len 7 # 用過(guò)去7個(gè)時(shí)間步預(yù)測(cè)下一個(gè) x_samples, y_samples [], [] for i in range(len(data) - seq_len): x_samples.append(data[i:i seq_len, :]) y_samples.append(data[i seq_len, -1])x_samples 的每個(gè)元素形狀是 (seq_len, feature_num)y_samples 是單個(gè)標(biāo)量。這一個(gè)標(biāo)量就是“單輸出”的含義。seq_len 參數(shù)決定模型看多長(zhǎng)的歷史取值建議參考數(shù)據(jù)周期按天記錄的銷(xiāo)量數(shù)據(jù)一個(gè)周期是 7 天seq_len 取 7 或 14 起步分鐘級(jí)交易數(shù)據(jù)先畫(huà)自相關(guān)圖找周期再定沒(méi)有固定公式。2.4 單變量/多變量切換feature 數(shù)量怎么影響 input_size源碼支持單變量和多變量自由切換落到代碼層面就是 input_size 一個(gè)參數(shù)。單變量時(shí) input_size1多變量時(shí) input_size特征列總數(shù)。在讀取階段的表現(xiàn)差異是# 單變量只保留目標(biāo)列 df pd.read_excel(data.xlsx, sheet_name0) single df[[value]].values # 多變量保留所有特征列 multi df.iloc[:, 1:].values單變量適合數(shù)據(jù)維度有限、只關(guān)心目標(biāo)本身趨勢(shì)的場(chǎng)景多變量適合有外部驅(qū)動(dòng)的場(chǎng)景比如預(yù)測(cè)銷(xiāo)量時(shí)把天氣、促銷(xiāo)、節(jié)假日一起喂進(jìn)去。但多變量不是免費(fèi)的特征列越多模型需要的數(shù)據(jù)越多特征之間如果存在強(qiáng)相關(guān)性LSTM 可能學(xué)出冗余表示。建議先從單變量跑通再用多變量對(duì)比漲幅不要一上來(lái)就堆特征。這一段也順帶解釋了為什么數(shù)據(jù)讀取后要立刻檢查列的順序和目標(biāo)列位置——源碼默認(rèn)目標(biāo)列在最后一列如果自己的數(shù)據(jù)把目標(biāo)列放在中間記得用 pandas 的 reindex 或按列名切片挪到末尾。所有數(shù)據(jù)處理做完之后數(shù)據(jù)端的三件事——讀取、歸一化、切分——就算齊了下一章進(jìn)源碼包內(nèi)部。3. 源碼包內(nèi)部結(jié)構(gòu)main.py、models.py、utils.py 各管哪一段3.1 文件地圖誰(shuí)是入口、誰(shuí)是框架、誰(shuí)是工具人解壓 zip 后真正要?jiǎng)拥奈募还参鍌€(gè)。先看職責(zé)表文件角色使用場(chǎng)景main.py程序入口訓(xùn)練和預(yù)測(cè)流程編排每次調(diào)參都改它models.pyLSTM 網(wǎng)絡(luò)結(jié)構(gòu)定義改模型架構(gòu)時(shí)才動(dòng)utils.py數(shù)據(jù)讀取、歸一化、指標(biāo)計(jì)算工具換數(shù)據(jù)格式時(shí)動(dòng)data.xlsx原始數(shù)據(jù)文件換成你自己的數(shù)據(jù)model_LSTMMain_weights預(yù)訓(xùn)練權(quán)重跳過(guò)訓(xùn)練直接預(yù)測(cè)時(shí)用main.py 只是調(diào)度者不是模型定義的地方。第一次看源碼的人容易到處找網(wǎng)絡(luò)結(jié)構(gòu)翻幾圈才發(fā)現(xiàn) LSTM 定義在 models.py 里。utils.py 把數(shù)據(jù)讀取、窗口構(gòu)造、歸一化、指標(biāo)計(jì)算全部拆出來(lái)這個(gè)分層思路是對(duì)的改數(shù)據(jù)處理邏輯時(shí)不用碰模型代碼。3.2 模型定義LSTM 層加全連接層的單輸出結(jié)構(gòu)models.py 的結(jié)構(gòu)是時(shí)間序列預(yù)測(cè)最標(biāo)準(zhǔn)的形態(tài)LSTM 層提取時(shí)序特征再接全連接層輸出預(yù)測(cè)值。核心代碼import torch import torch.nn as nn class LSTMModel(nn.Module): def __init__(self, input_size, hidden_size, num_layers, output_size): super(LSTMModel, self).__init__() self.lstm nn.LSTM( input_sizeinput_size, hidden_sizehidden_size, num_layersnum_layers, batch_firstTrue ) self.fc nn.Linear(hidden_size, output_size) def forward(self, x): out, (h_n, c_n) self.lstm(x) # 取最后一個(gè)時(shí)間步的隱層輸出做全連接 out self.fc(out[:, -1, :]) return out參數(shù)逐個(gè)說(shuō)。input_size 是特征數(shù)量單變量是 1多變量是特征列總數(shù)。hidden_size 是 LSTM 隱藏單元數(shù)決定模型記憶容量小數(shù)據(jù) 64 起步數(shù)據(jù)量大的可以設(shè) 128 或 256過(guò)大了反而容易過(guò)擬合。num_layers 是堆疊層數(shù)2 表示兩層 LSTM 堆疊能學(xué)到更復(fù)雜的時(shí)序依賴(lài)但訓(xùn)練更慢。batch_firstTrue 省了一個(gè) permute 步驟默認(rèn) PyTorch LSTM 期望輸入形狀是 (seq_len, batch, feature)batch_firstTrue 后輸入變成 (batch, seq_len, feature)和我們直覺(jué)構(gòu)造的樣本形狀完全一致。如果你在別處看到 LSTM 代碼 forward 里寫(xiě) x.permute(1,0,2)那就是沒(méi)用 batch_first 的寫(xiě)法兩件事是等價(jià)的。forward 里 out[:, -1, :] 是“單輸出”的核心操作。不管輸入是 7 個(gè)時(shí)間步還是 14 個(gè)時(shí)間步模型只看最后一個(gè)時(shí)間步的隱層狀態(tài)然后由全連接層壓成 1 個(gè)預(yù)測(cè)值。要改成多步預(yù)測(cè)一條路是把 fc 輸出維度從 1 改成 n_steps一口氣輸出未來(lái) n 步另一條路是保留單輸出但迭代預(yù)測(cè)每次預(yù)測(cè)一個(gè)值再拼回去喂給模型。前者多一個(gè)超參后者會(huì)累積誤差后面進(jìn)階章細(xì)講。3.3 權(quán)重文件與跳過(guò)訓(xùn)練直接預(yù)測(cè)包內(nèi)放了訓(xùn)練好的權(quán)重主要用于省掉訓(xùn)練時(shí)間。加載權(quán)重的標(biāo)準(zhǔn)寫(xiě)法model LSTMModel(input_sizefeature_num, hidden_size128, num_layers2, output_size1) checkpoint torch.load(model_LSTMMain_weights.pth, map_locationcpu) model.load_state_dict(checkpoint) model.eval()這里有幾個(gè)向坑很多的細(xì)節(jié)。第一map_locationcpu 必須寫(xiě)否則在沒(méi)有 GPU 的機(jī)器上加載別人 GPU 訓(xùn)練的權(quán)重會(huì)直接報(bào)錯(cuò) Attempting to deserialize object on a CUDA device。第二load_state_dict 之前必須保證模型的 hidden_size、num_layers 與訓(xùn)練時(shí)一致否則鍵名對(duì)不上運(yùn)行報(bào) Missing key 或 Unexpected key。第三加載完成后 model.eval() 是必選項(xiàng)模型里如果帶 Dropout 或 BatchNorm訓(xùn)練模式和推理模式的執(zhí)行路徑完全不同忘記切模式會(huì)讓預(yù)測(cè)結(jié)果帶隨機(jī)性。3.4 main.py 的整體流程從數(shù)據(jù)到指標(biāo)的編排main.py 的流程可以歸納為六個(gè)順序步驟讀數(shù)據(jù)、構(gòu)建窗口、切三集、定義模型、開(kāi)始訓(xùn)練、評(píng)估輸出。骨架如下def main(): data load_data(data.xlsx) # 從 utils 讀取 x, y build_sequences(data, seq_len) # 構(gòu)造窗口 train_loader, val_loader, test_loader split_dataset(x, y) # 三集 model LSTMModel(input_size, hidden_size, num_layers, 1) train(model, train_loader, val_loader, epochs) metrics evaluate(model, test_loader) print(metrics)每一行都對(duì)應(yīng)一個(gè)實(shí)際函數(shù)。這種編排方式的好處是把研究流程和工程細(xì)節(jié)剝離開(kāi)模型定義不動(dòng)調(diào)節(jié)點(diǎn)時(shí)只需要改 main.py 頂部的幾個(gè)參數(shù)。這也解釋了為什么權(quán)重文件名叫 model_LSTMMain_weights——它是對(duì)應(yīng) main.py 里創(chuàng)建的那個(gè)模型實(shí)例保存的。參數(shù)集中在 main.py 頂部是這份源碼特別方便改的地方。打開(kāi) main.py 大概率看到一堆賦值語(yǔ)句比如 epochs、batch_size、learning_rate、seq_len、hidden_size。batch_size 在時(shí)間序列場(chǎng)景里常用 32 或 64epochs 在 50 到 200 之間學(xué)習(xí)率 0.001 是 Adam 的推薦值。這些參數(shù)改完整個(gè)流程重跑一遍就行不用動(dòng)其它文件。這也是“無(wú)腦”二字的來(lái)源。4. 訓(xùn)練與評(píng)估損失函數(shù)、優(yōu)化器和 MAE/MSE/R2/MAPE 的實(shí)現(xiàn)4.1 訓(xùn)練循環(huán)Adam、MSE 損失與權(quán)重保存main.py 里的訓(xùn)練部分是標(biāo)準(zhǔn)的 PyTorch 循環(huán)沒(méi)有多余封裝。關(guān)鍵代碼import torch.optim as optim model LSTMModel(input_sizefeature_num, hidden_sizehidden_size, num_layersnum_layers, output_size1) criterion nn.MSELoss() optimizer optim.Adam(model.parameters(), lr0.001) epochs 100 for epoch in range(epochs): model.train() for x_batch, y_batch in train_loader: optimizer.zero_grad() y_pred model(x_batch) loss criterion(y_pred, y_batch.view(-1, 1)) loss.backward() optimizer.step()損失函數(shù)選 MSE 而不是 MAE 的原因很實(shí)際MSE 對(duì)預(yù)測(cè)值和真實(shí)值的偏差做平方梯度大小正比于誤差訓(xùn)練收斂更快MAE 梯度恒定誤差很小時(shí)更新步長(zhǎng)不縮小不容易收斂。代價(jià)是 MSE 對(duì)離群點(diǎn)敏感數(shù)據(jù)里有一個(gè)極端值loss 就大得離譜。時(shí)間序列數(shù)據(jù)異常值多我會(huì)先對(duì)數(shù)據(jù)做截?cái)嗷蚱交儆?xùn)練。optimizer.zero_grad() 必須寫(xiě)在每個(gè) batch 最前面。PyTorch 默認(rèn)行為是梯度累積不清空上一輪梯度的話 loss 不會(huì)收斂模型參數(shù)在錯(cuò)誤方向上亂跑。y_batch.view(-1, 1) 是為了把形狀統(tǒng)一成 (batch, 1)和模型輸出的 (batch, 1) 對(duì)齊MSE 計(jì)算才不會(huì)有維度錯(cuò)誤或隱式廣播。訓(xùn)練完成之后權(quán)重保存在流程末尾torch.save(model.state_dict(), model_LSTMMain_weights.pth)只存 state_dict不存整個(gè)模型對(duì)象。這樣做的優(yōu)點(diǎn)是文件體積小、不綁定模型類(lèi)的定義路徑換電腦加載也不受影響缺點(diǎn)是你必須保證加載時(shí)的模型定義和保存時(shí)的完全一致鍵名、參數(shù)一個(gè)都不能差。自己訓(xùn)練完立刻加載問(wèn)題不大拿別人給的權(quán)重就必須知道當(dāng)時(shí)的 hidden_size 和 num_layers。4.2 四個(gè)評(píng)估指標(biāo)公式、代碼和業(yè)務(wù)含義評(píng)估部分封裝在 utils.py 里最終在 main.py 的輸出段打印。核心計(jì)算展開(kāi)如下import numpy as np mae np.mean(np.abs(y_pred - y_test)) # 平均絕對(duì)誤差 mse np.mean((y_pred - y_test) ** 2) # 均方誤差 rmse np.sqrt(mse) # 均方根誤差 mape np.mean(np.abs((y_test - y_pred) / y_test)) * 100 # 百分比誤差 ss_res np.sum((y_test - y_pred) ** 2) ss_tot np.sum((y_test - np.mean(y_test)) ** 2) r2 1 - ss_res / ss_tot # R2 決定系數(shù)這四個(gè)指標(biāo)各有各的“脾氣”。MAE 最直觀單位跟原始數(shù)據(jù)一致“平均錯(cuò)多少個(gè)單位”適合業(yè)務(wù)匯報(bào)。MSE 把誤差平方放大對(duì)極大誤差極其敏感數(shù)據(jù)里有幾個(gè)異常點(diǎn)MSE 會(huì)大得離譜——這不是模型壞了是平方運(yùn)算的數(shù)學(xué)特性。RMSE 把 MSE 拉回原單位但它放大極端誤差的特性還在。MAPE 是百分比誤差適合做跨數(shù)據(jù)集橫向?qū)Ρ?。它有一個(gè)前提條件真實(shí)值不能接近 0否則除法分母趨近 0MAPE 直接沖天。如果自己的數(shù)據(jù)里存在 0 值這個(gè)指標(biāo)打印出來(lái)會(huì)是 inf不代表模型失敗只是指標(biāo)本身不適合這份數(shù)據(jù)改用 MAE 做評(píng)價(jià)即可。R2 的含義和另外三個(gè)完全不同。它衡量的是模型解釋了目標(biāo)波動(dòng)的比例正常范圍 0 到 1越接近 1 擬合越好。R2 為負(fù)說(shuō)明你的模型比“直接用真實(shí)值均值當(dāng)預(yù)測(cè)值”還差這種情況在時(shí)間序列里多半意味著數(shù)據(jù)切分泄漏、特征和目標(biāo)方向弄反、或者模型結(jié)構(gòu)有問(wèn)題??吹截?fù) R2 時(shí)不要調(diào)參先回去檢查數(shù)據(jù)。4.3 反歸一化預(yù)測(cè)結(jié)束最容易漏的一步訓(xùn)練時(shí)數(shù)據(jù)被壓到 [0,1]模型輸出的預(yù)測(cè)值也在 [0,1]。要把預(yù)測(cè)值還原成原始量級(jí)就必須做反歸一化y_pred_original scaler.inverse_transform(y_pred) y_test_original scaler.inverse_transform(y_test)inverse_transform 的輸入形狀必須和 fit 時(shí)的特征數(shù)量一致。如果 fit 時(shí)傳的是整個(gè) data多列現(xiàn)在只傳一列預(yù)測(cè)值會(huì)報(bào) shape mismatch。源碼里對(duì)這個(gè)問(wèn)題的處理方式是單獨(dú)定義目標(biāo)列的 scalerscaler_y MinMaxScaler() y_scaled scaler_y.fit_transform(df[[target_col]].values)這樣反歸一化只用一列沒(méi)有任何維度問(wèn)題。如果直接調(diào)用整個(gè) data 的 scaler就必須構(gòu)造一個(gè)和訓(xùn)練時(shí)相同列數(shù)的空矩陣把預(yù)測(cè)值塞進(jìn)目標(biāo)列位置再 inverse_transform處理起來(lái)麻煩得多。4.4 指標(biāo)怎么結(jié)合業(yè)務(wù)場(chǎng)景選四個(gè)指標(biāo)不是用來(lái)湊數(shù)的。業(yè)務(wù)上我一般這么選給老板匯報(bào)用 MAE因?yàn)閹г紗挝徽f(shuō)“平均偏差 120 件”比“R20.87”更容易聽(tīng)懂。調(diào)參對(duì)比模型時(shí)看 RMSE它對(duì)大誤差更敏感能幫你在多個(gè)候選模型里挑出極端情況都擬合得好的那個(gè)??鐓^(qū)域、跨品類(lèi)對(duì)比時(shí)用 MAPE因?yàn)榘俜直认瞬煌瑪?shù)據(jù)量級(jí)的影響。R2 則用來(lái)判斷模型是否整體失效。四個(gè)指標(biāo)一起看才有完整畫(huà)面MAE 低但 R2 也低說(shuō)明模型對(duì)大趨勢(shì)擬合不好MSE 高但 MAE 低暗示數(shù)據(jù)里有少數(shù)極端點(diǎn)。5. 實(shí)戰(zhàn)復(fù)現(xiàn)與避坑環(huán)境準(zhǔn)備、命令順序和五個(gè)高頻坑5.1 環(huán)境準(zhǔn)備依賴(lài)安裝和 PyTorch 選擇上手這個(gè)源碼包依賴(lài)很少核心就五個(gè)包pip install torch numpy pandas scikit-learn openpyxlopenpyxl 是 pandas 讀 .xlsx 的底層依賴(lài)不裝的話 pd.read_excel 會(huì)直接 ImportError。如果數(shù)據(jù)只有 CSV可以去掉 openpyxl但保留也不礙事體積很小。PyTorch 的安裝要分情況純 CPU 機(jī)器直接 pip install torch 就能裝有 NVIDIA 顯卡想用 GPU去 PyTorch 官網(wǎng)按 CUDA 版本選安裝命令不要自己猜 wheel 名。這份源碼的規(guī)模用 CPU 完全跑得動(dòng)差的只是訓(xùn)練時(shí)間不用為它大動(dòng)干戈配 GPU 環(huán)境。裝好后第一件事是驗(yàn)證 PyTorch 是不是真的能導(dǎo)入python -c import torch; print(torch.__version__)這一行能輸出版本號(hào)環(huán)境基本就緒。經(jīng)常有人跳過(guò)這一步直接跑 main.py在 import torch 那行翻車(chē)然后花半天排查是哪個(gè)包缺了其實(shí)環(huán)境從頭就沒(méi)裝好。5.2 跑通主流程六步操作整體操作順序如下。第一步把 data.xlsx 換成你自己的 Excel。列名換成英文目標(biāo)列放最后一列清理掉空值和明顯異常點(diǎn)。第二步打開(kāi) main.py把數(shù)據(jù)路徑、sheet 名改成實(shí)際值同時(shí)確認(rèn) seq_len、hidden_size 這些參數(shù)。第三步?jīng)Q定單變量還是多變量單變量在讀取段只保留目標(biāo)列多變量保留全部特征列。第四步運(yùn)行 python main.py。第五步觀察訓(xùn)練日志loss 應(yīng)該持續(xù)下降如果看到 loss 變成 NaN 就停住回到避坑清單。第六步訓(xùn)練結(jié)束后看測(cè)試集上的 MAE、MSE、R2、MAPE 輸出同時(shí)確認(rèn)反歸一化后的預(yù)測(cè)曲線有沒(méi)有明顯錯(cuò)位。這六步做完按說(shuō)已經(jīng)能用上這份源碼了。但時(shí)間序列預(yù)測(cè)的坑密集在數(shù)據(jù)環(huán)節(jié)而不是模型環(huán)節(jié)下面五條是最常見(jiàn)的報(bào)錯(cuò)和翻車(chē)記錄。5.3 避坑5 個(gè)高頻踩坑記錄坑一訓(xùn)練 loss 輸出 NaN現(xiàn)象訓(xùn)練頭幾輪 loss 正常幾十輪后突然變成 NaN后續(xù)全部 NaN。 原因最常見(jiàn)的是數(shù)據(jù)里存在 NaN 或者 infMinMaxScaler 會(huì)把 NaN 原樣保留LSTM 前向傳播算出的梯度直接無(wú)效。次常見(jiàn)的是學(xué)習(xí)率太大Adam 一次更新就跨過(guò)最優(yōu)點(diǎn)數(shù)值發(fā)散。 解決讀取 DataFrame 后立刻執(zhí)行 df df.dropna() 或者 df df.fillna(methodffill)同時(shí)把學(xué)習(xí)率從 0.001 降到 0.0005。絕大多數(shù)情況這兩步做完 NaN 就沒(méi)了。如果要兜底在訓(xùn)練循環(huán)里加一個(gè) loss 檢查if torch.isnan(loss): print(NaN at epoch, epoch); break方便快速定位??佣虞d權(quán)重時(shí)報(bào) Missing key(s) in state_dict現(xiàn)象torch.load 成功load_state_dict 卻報(bào)缺失鍵或者鍵名對(duì)不上。 原因模型定義參數(shù)和保存權(quán)重時(shí)的參數(shù)不一致。別人用 hidden_size128 訓(xùn)練保存你用默認(rèn) hidden_size64 定義模型鍵名自然對(duì)不上。 解決權(quán)重文件名是 model_LSTMMain_weights對(duì)應(yīng) main.py 里的默認(rèn)模型。加載前按原結(jié)構(gòu)重新定義模型如果你改過(guò) models.py舊權(quán)重大概率失效老老實(shí)實(shí)重新訓(xùn)練。實(shí)在不知道原結(jié)構(gòu)把 hidden_size、num_layers 兩個(gè)參數(shù)跑一遍組合加載成功為止??尤A(yù)測(cè)階段維度報(bào)錯(cuò) RuntimeError: mat1 and mat2 shapes cannot be multiplied現(xiàn)象eval 階段輸入模型的數(shù)據(jù)形狀不對(duì)全連接層矩陣乘直接串臺(tái)。 原因模型的 LSTM 期望三維輸入 (batch, seq_len, feature)實(shí)際輸入變成了二維或者 batch_size 和 seq_len 交叉錯(cuò)位。最常見(jiàn)的是構(gòu)造序列樣本時(shí)把 [seq_len, feature] 當(dāng)成整體傳入少了 batch 維。 解決在進(jìn)模型前加一行 print(x.shape) 確認(rèn)維度。少一維用 x x.unsqueeze(0)多一維用 x.squeeze(0)。建議在 main.py 關(guān)鍵位置加 assert x.dim() 3訓(xùn)練和預(yù)測(cè)都套上報(bào)錯(cuò)時(shí)一秒定位??铀念A(yù)測(cè)曲線是平移了一個(gè)周期的“滯后曲線”現(xiàn)象預(yù)測(cè)值和真實(shí)值曲線形狀幾乎一樣但整體右移了一個(gè)周期R2 不低畫(huà)圖一看就露餡。 原因時(shí)間序列模型最經(jīng)典的偷懶結(jié)果。在沒(méi)有強(qiáng)趨勢(shì)的序列上模型找到的最優(yōu)策略是“用最近的一個(gè)值預(yù)測(cè)當(dāng)前值”因此輸出天然滯后一個(gè)周期。這不是代碼故障是數(shù)據(jù)信息和建模方式的局限。 解決增大 seq_len 讓模型看到更長(zhǎng)的歷史或者對(duì)原始數(shù)據(jù)做一階差分把預(yù)測(cè)目標(biāo)從“絕對(duì)值”改成“增量”訓(xùn)練結(jié)束后再反差分還原。差分是消除滯后性的常用手段但如果業(yè)務(wù)指標(biāo)周期性很強(qiáng)、滯后可以接受也不一定非要改??游錯(cuò)val() 沒(méi)調(diào)用預(yù)測(cè)結(jié)果忽好忽壞現(xiàn)象加載權(quán)重后預(yù)測(cè)多次結(jié)果每次都不一樣。 原因模型里有 Dropout 或 BatchNorm 層時(shí)訓(xùn)練模式和推理模式的執(zhí)行邏輯不同。Dropout 在 train 模式下隨機(jī)丟棄神經(jīng)元BatchNorm 在 train 模式下更新運(yùn)行統(tǒng)計(jì)量?jī)烧叨紩?huì)讓預(yù)測(cè)帶隨機(jī)性。 解決預(yù)測(cè)前強(qiáng)制調(diào)用 model.eval()。這份源碼標(biāo)準(zhǔn)結(jié)構(gòu) LSTMLinear 沒(méi)有 Dropout 影響不大但后續(xù)加了 Dropout 或 BatchNorm這個(gè)坑必定踩到。同樣地要重新訓(xùn)練就切回 model.train()兩種模式要成對(duì)使用。五個(gè)坑排完之后這份源碼的復(fù)現(xiàn)就穩(wěn)了。6. 進(jìn)階改造從單步改成多步預(yù)測(cè)的驗(yàn)證方法單輸出和單步預(yù)測(cè)是這份源碼的默認(rèn)行為但很多實(shí)際場(chǎng)景需要的是一次給出未來(lái)若干步的預(yù)測(cè)——比如未來(lái) 7 天的銷(xiāo)量、未來(lái) 24 小時(shí)的電價(jià)。要把這份源碼從單步改成多步有三個(gè)環(huán)節(jié)必須處理。第一模型輸出維度。單輸出模型的最后一層全連接輸出是 1多步預(yù)測(cè)最簡(jiǎn)單的改法是把 output_size 從 1 改成 n_steps讓模型一口氣輸出未來(lái) n 步。相應(yīng)的損失函數(shù)還是 MSE但 y_batch 的形狀得跟著變成 (batch, n_steps)不能再 view 成 (batch, 1)。第二數(shù)據(jù)集構(gòu)造邏輯。原來(lái)窗口取 data[i:iseq_len] 作為輸入y 取 data[iseq_len] 單值改成多步后 y 要取 data[iseq_len:iseq_lenn_steps] 連續(xù) n 個(gè)目標(biāo)值。這一步直接導(dǎo)致訓(xùn)練樣本數(shù)減少數(shù)據(jù)量不夠時(shí)多步預(yù)測(cè)的效果會(huì)很慘。第三評(píng)估方式。多步預(yù)測(cè)的指標(biāo)一般按步分別計(jì)算MAE 按第 1 步、第 2 步、第 n 步單獨(dú)打印這樣你能看清誤差在哪一步開(kāi)始明顯變大。我的習(xí)慣是改造前先加載官方權(quán)重跑一遍單步預(yù)測(cè)記錄指標(biāo)作為 baseline然后從 n_steps2 開(kāi)始逐步加大步數(shù)觀察誤差隨步數(shù)的衰減曲線。多步預(yù)測(cè)最常見(jiàn)的現(xiàn)象是“第一步指標(biāo)好、遠(yuǎn)期指標(biāo)崩”這不是模型壞了而是預(yù)測(cè)誤差在迭代過(guò)程中被一步步傳導(dǎo)放大越遠(yuǎn)的步數(shù)據(jù)含量越低。那年我把多步改成 5 步發(fā)現(xiàn)第 7 步的 MAPE 比第 1 步漲了三倍排查了半天模型代碼沒(méi)有任何問(wèn)題最后意識(shí)到是輸入序列的周期長(zhǎng)度和預(yù)測(cè)步數(shù)不匹配——用 7 天周期去預(yù)測(cè) 5 天后的值本身就不太穩(wěn)。從那以后我每次改動(dòng)步數(shù)都會(huì)強(qiáng)制先記錄 single-step baseline再逐級(jí)加大 n_steps對(duì)比每步的指標(biāo)衰減曲線再?zèng)Q定用哪個(gè)步數(shù)配置上線。希望這一套拆解思路幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月婷婷五月色| 色噜综| 精品人人操| 人妻aV在线| 99碰网站| avh片在线观看| 91免费看片| 亚洲日本激情| 成人片在线播放| 99国产精品久久久久久久久久久 | 狠狠干综合| 天堂成人A片永久免费网站 | 天天摸天天肏| 五月婷婷六月丁香首页| 婷婷五月天综合久久日| 99精品成人无码A片观看金桔| 五月情色天| 99ri国产在线| 久久人人九九| 激情人妻综合| 98色丁香五月婷婷综合网| 欧美婷婷综合| 9 1超碰九色| 人人干AV| 婷婷综合五月色播| 99热这里有精品24| 亚洲色情一区二区三区四区| 色综合色婷婷色伊人| 久久艹网| 久久日韩婷婷五月| 美女久久婷婷| 久久久久久久11111111111| 伊人玖玖婷婷| 婷婷丁香五月综合免费视频百花| 熟女色色一区二区| 国产午夜精品一区二区三区四区| 伊人久久婷婷| 另类小说色婷婷| 天天粽合合合合| 成片免费观看大全| 五月丁香色色色| AV九九| 九色91国产| 一本久道综合色婷婷五月| 天天综合网、天天综合色| 精品99视频| 日本色色视频| 久久九⑨| 大伊香蕉玖玖爱| 91干99| 伊人无码高清| 99在线视频。| 97ai婷婷| 啪啪婷婷五月天激情| 九九99在线视频| 婷婷五月综合免费在线| 九月av在线| 五月婷久草| 五月丁香本色在线观看| 99在线爽| 人人操女人| 5月丁香六月婷婷| 欧美情月伍月天| 美日韩成人| 狠狠色丁香婷婷久久综合| 黄色AAAAAAA| 激情碰碰碰| 天色色综合网| 99熟女| 美女五月激情| 激情5月天天天| 婷婷深爱网| 天天粽合合合合| 五月综合777| 激情五月天啪啪| 色亚洲中文| 狠狠五月天婷婷| 丁香六月激情| 精品国婬伦V无码久久久| 91在线观看九区| 色图亚洲91| 欲色人妻| 婷婷色色网| 五月婷婷丁香成人网| 久久婷婷成人视频| 天天操电影院色狼性av| 九九热免费| 超碰在线国产| 婷婷五月激情综合啪啪| VA婷婷| 五月婷婷丁香成人网| 亚洲一色色色色色色色色| 97人人搞| 婷婷五月天激情五月天网站| w婷婷五月婷婷w| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 久色资源网| 可似看的AV| 丁香五月天.com| 久久人人看| 亚洲乱码日产精品BD在线观看 | 婷婷久久五月天中文字幕在线观看| 色涩影院六月丁香| 久久五月丁香激情综合| 色玖玖综合网| 成人精品免费在线观看| 久久久人妻久久久| 这里只有精品无码| 婷婷狠狠综合网入口| 91啪级电影| 青青草原精品久久| 天天做天天爽| 激情综合网址| 欧美这里只有精品| www.99热| 色婷婷丁香五月| 五月丁香久久丝袜啪啪| 丁香五月在线播放| av国产精品偷| 人人草人人看| 国产特黄色精品一区二区三区精品无广告| 婷婷色五月婷婷姐妹| 五月丁香婷婷久久| 六月天婷婷| 亚洲婷婷综合视频| 激情综合五月色在线| 九九在线视频| 国产探花一片区| 9久热在线视频精品| 日在线V视频在线播放| 91丨九色丨熟女丰满| 97在线观看| 99热最新网址| 九九久久五月天| 99久操视频| 五月激情丁香五月| 狠狠色噜噜狠狠狠888| 91热爆在线| 伊人碰碰婷婷| 婷婷五月天激情小说| 国产av天堂| 九九综合网| 丁香五月婷婷深爱综合激情| 欧美操人| 婷婷久久久久久久| 丁香五月天啪啪| 青青草tp| 五月丁香婷婷综合久久| 婷婷五月丁香久久| 久久久er热| 人妻精品一区二区三区| 色婷婷五月天激情在线播放| 五月丁香成人网| 91丁香五月| 色色色在线观看| WWW、日本色丁香、co m| wwccc久久久| 国产偷人爽久久久久久老妇APP| 第2色五月婷| 九九热最新视频| 人人爽在线视频综合网| 日本色色色色色色色色一色二色| 日韩色五月| 色五月婷婷天堂| 五月婷婷69| 任你搞在线观看视频| 色婷婷AV久久久久久久| 五月丁香婷婷基地| 成人 在线观看国产| 丁香五月亚洲婷婷| 婷色五月天| www超碰| 超碰三级秋霞| 久久这里只有精品视频15| 99只有这里是精品| 五月婷精品| 天天噜噜| 婷婷五月天黄色小说| 久操干| 99九九精品| 天天天天天天天干| 欧美碰碰| BBWCUCKOLD精品熟妇| 午夜婷婷六月天| 国产成人亚洲综合亚洲| a在线观看| 丁香五月激情综合在线观看| 99人人精品| www.99热视频| 九月丁香八月婷婷加勒比| 中文在线视频久1| 亚洲色夜| 欧美在线ee日韩| 高清无码网址| 丁香五月综合在线播放 | 色婷婷免费视频| 丁香综合伊人| 日本在线视频播放91| 色色婷婷五月天| 色五月天电影| wwwC0maV五月花| 六月丁香六月婷婷欧美| 天堂在线伊久| 激情五月综合网| 丁香五月婷婷日本| 久久婷婷五月天激情| 色五月婷婷激情基地| 五月婷婷六月丁香| 国产成人av在线播放| 五月丁香激情婷婷综合字幕| 99精品久久| 91狼友视频在线观看| 91久久久久久久久久久| 激情五月天婷婷在线网址发给我| 久久开心五月婷婷| 色婷婷伦理| 天堂在线9| 高潮毛片又色又爽免费| 九九色逼| 婷婷色综合| 可以看的av网站| 狠狠做五月婷婷| 伊人综合色干| 黄色99热| 欧美婷婷综合网| 亚洲第一成人无码A片| 丁香婷婷色九月| 国产乱人偷精品人妻A片| jiqingliuyuetian| 可以免费看的av网站| 婷婷激情四射| 狠狠综合| 99re思思热在线视频| 亚洲有码在线视频| 五月丁香久久丝袜啪啪| 激情婷婷22月间| 国产成人精品一区二区三区视频 | 色婷婷精品| 婷婷深爱五月天在线| 亚洲综合色色| 亚洲操操| 丁香女人五月天| 日本一道久久| 丁香六月激| 97人人操在线| 激情综合色| 色吧五月婷婷| 久久99久久99久久99人受| 丁香婷婷五月人体| Www99热| 色欲久久久久久综合网综合网| 最新亚洲色色网| 丁香五月天激情免费在线观看AV777 | 666555。COm毛片| 色99综合视频| 欧洲色色| 激情五月婷婷综合| 国产激情综合五月| www.夜夜夜| 综合玖玖性爱免费视频| 888精品福利地址| 五月丁香婷婷综合| 五月丁香综合久久| 成人电影丁香六月天| 人人干AV| 密视AV综合在线| 久久99草五月婷婷| 亚欧州精品视频| 国产在线中文字幕| 五月婷婷 六月丁香| 婷婷色五月综合丁香| 人妻爽爽爽久久久久久久久| 密乳视频| 五月天啪啪啪| 欧美97色| 久久五月婷6 9| 久久婷婷五月天大香蕉| 99热九九在线| 中文字幕成人| 五月丁香激情在线| 亚洲色夜| 99热在线观看| www久久久久| 婷婷六月色开| www开心激情网| 99精色| 丁香婷婷色九月| 五月丁香激情四射| 国产67194| 久久亚洲精品成人无码网站导航| 人人爱人人摸人人澡| 久婷久婷| 琪琪色综合网站| 天天综合网色欲香| 97五月天婷婷午夜| 日日操夜夜爽| 伊人无码高清| 婷婷射图五月天| 五月天激情站| 五月丁香六月婷婷成人电影| 大地资源色婷婷视频在线| 色九九九综合| 激情美女五月天| 激情五月天伊人av| 成人做爰高潮A片免费视频| 五月丁香婷婷欧美色图视频五月丁香777电影 | 色青五月天| 六月丁香啪啪啪| 六月婷婷五月天| 2025超碰| 99久久99热| 婷婷五月草| 99综合| 操b视频在线观看一区二区| 伊人狠狠丁香婷婷综合尤物| 成人五月天视频播放| 欧美日韩一区二区三区四区| 9久久网| 婷婷亚洲综合| 大胆伊人久久| 丁香婷婷在线| 成人无码髙潮喷水A片| 色婷婷久久天天性爱| 亚洲99手机免费看视频| 欧美操人| 99碰超| 激情五月天伊人av| 丁香婷婷成年| 国产丁香五月天婷婷| 九九精品自拍| 婷婷爱爱蜜臀天天操| 色色 9| 五月丁香婷婷啪啪| site:901-07.com| 激情五月天天狠狠久久| 欧美啪啪网| 五月丁香婷婷综合网色欲| 六月婷婷色| 九热免费视频| 神马欧美精| 丁香婷婷浪潮AV久久综合| 婷婷五月天播| 九九亚洲| 丁香五月综合福利视频导航| JAPANRCEP老熟妇乱子伦视频 | 亚洲黄色操逼| 天天日夜夜爽。| 亚洲第一综合| 色噜噜,噜噜色| 婷婷五月天综合在线| 日韩av在线免费观看| 99在线观看视频| 婷婷中文字幕网站| 十月丁香九月婷婷综合| 丁香婷婷色五月激情综合| 懂色av粉嫩AV蜜臀AV| 中文aV网| 99热在线观看成人| www天天爽| 久热99中文字幕| 欧洲日韩一区二区三区| 亚洲综合色婷| 五月六月婷| 9 1 A v久久久| 五月激情婷婷开心| 亚洲激情| AV在线大香蕉| 久久狠色噜噜狠狠狠狠97| 五月婷婷六月丁香| 三级大香蕉网| 丁香六月婷婷开心婷婷网| www天天色天天射| 亚洲免费电影2| 播播网色播播| 色色丁香| 久久久久久99日本| XX久久| www.91色| www.91五月| 性色视频| 超碰免费成人| 男男野外做爰全过程69| 色五月影视| 97干综合网| 久99| 这里只有精品免费视频在线观看 | 97色在线观看视频| 色之综合网| 97精品人人A片免费看| 狠狠五月天激情| 免费超碰在线| 亚洲色婷婷| 国产精品99久久久久久久女警| 婷婷五月色网| 久碰久操| 91在线精品一区二区| 99啪99| 久热这里只有精品在线观看 | 欧美色六月婷婷| 狠狠色综合图片| 激情啪啪五月| 欧美婷婷五月天综合| 丁香婷婷五月人体| 少妇人妻丰满做爰XXX| 五月婷婷综合在线视频小说| 婷婷五月天最新综合你懂的| 草久私拍| 亚洲亚洲人成综合网络| 狠狠爱激情网| 婷婷 月 丁香| 伊人丁香婷婷东京| 色五月综合网| 激情图片久久| 97碰碰九九视频| 亚洲成人综合在线| 激情五月天网| 国产另类综合| 2020久久婷婷五月| 欧美熟女99| 丁香婷婷综合影院| 成熟妇人A片免费看网站| 99热这里只有精品免费| 99热99免费| 丁香五月激情啪| 超碰2021| 国产精品天天狠天天看| www.五月天| 六月婷婷色综合| 内射在线CHINESE| 色色五月天丁香婷婷| 五月综合激情综合久| 丁香色色色| 99人人干人人操| 色狠狠色噜噜AV天堂五区| 天天噜日日噜综合无码| 另类 在线| 久久视频在线| 欧美精品熟女一区二区| 五月婷婷免费视频| 在线综合婷婷| 狠狠干狠狠干狠狠干狠狠干| 日本狠狠爽| 五月丁香999| 国产免费av在线| 久热视频97AV在线观看| 五月激情四射网站| 色五月,com| 日本99视频| 99精色| 婷婷射丁香| 99爱在线视频| 人人爱摸视频| 操日视频| 丁香五月天网站| 日韩精品一区二区亚洲AV观看 | 青青草99热久久精品国| 亚洲AV无码成人精品电影| 婷婷五月丁香青青草在线| AA丁香综合激情| 亚洲热热视频| 激情色色| 六月婷婷毛片| 操比激情五月| 97丁香五月| 亚洲天堂大香蕉| 色99热| 91丨九色丨白浆秘| 久久久人妻久久久| 天天日人人| 五月丁香婷婷五月色| 午夜色色色极品视频| AV色五月婷婷| 天天拍久久| 亚洲精品国产精品乱码不99| 思思热视频| 激情第四色| 丁香五月婷婷啪啪啪| 中文字幕 中文字幕明步| 99热在线播放| 丁香花五月天婷婷成人社区| 婷婷色色欧美| 五月婷婷综合热| 五月丁香婷婷AV天堂| 五月丁香激情综合六月涩涩爱| 亚洲成人乱码av网站| 乱色色色| 99色免费观看全部| 成人五月天综合网| 98色花堂98t.R| 激情婷婷丁香五月天小说| 婷婷爱综合| 热99精品视频| 国产亚洲在线| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 色色色777| 欧美婷| 婷婷六月啪啪| 五月天婷婷久久| 67194线路二在线观看| 婷婷自拍| 久久99这里只有精品| 天天摸夜夜爽天天做| 精品成人a v无码内射| 色哟哟www| 五月综合视频| 热久久色| 婷婷综合久久| 婷婷五月色色| 天天爽天天爽夜夜爽| 五月婷婷之综合激情| 久热大香蕉| 99国产精品久久久久久久久久久| 第五婷婷伊人丁香色| 久er7久热| 久久久精品人妻| 欧美日韩99| 狠狠干狠狠操狠狠爱| 婷婷五月色| 综合久久五月| 日日夜夜狠狠| 五月天婷综合| 亚洲五月天婷婷在线| 色吧五月| 一本色道久久88加勒比—| 五月深爱婷婷| 一级黄色影片| www.97碰碰com| 午夜婷婷五月天| 91热爆在线| 久久大香蕉视频| 国产性色蜜乳| 国产做A爰片毛片A片美国| 日本九九视频| 99这里只有精品视频| 欧美搡BBBBB摔BBBBB| 婷婷午夜激情| 五月天激情小说| 西西4r午夜剧场| 无码网| 色九月婷婷| 激情综合网色五月| 九九99久久| 91夫妻网站九色| 婷婷成人综合免费视频| 色五月成人| 亚洲啪视频| 五月婷婷色影院| 激情五月天开心总和网| 丁香婷婷婷| 丁香五月婷婷天激情| 色色婷婷五月| 99精品视频在线免费观看| 精品人人操| 91综合在线视频| 开心五月网| 97超碰9久热婷婷热| A色色| 五月丁香婷婷成人网| 青青热久精品视频在线观看| 亚洲激情综合| 亚洲狠狠婷婷综合久久久| 九九久久综合| 激情五月天之六月婷婷| 人妻第九页| 天天日天天操天天干| 99热在线观看| 五月WWW| 91热视频| 极品人妻VideOssS人妻| 激情啪啪五月| 五月天成人小说| 99热九九这里只有精品| 亚洲激情综合| 99精品久久久久久久婷婷久久| 国产精产国品一二三在观看| 婷婷六月天亚州| 殴美97色| 午夜天堂啪啪| 青青热久精品视频在线观看| 国内自拍97在线| 99热官网精品在线| 欧美性猛交99久久久99| 日本久久网| 亚洲一色色色色色色色色| 欧美性做爰大片免费看办公室| 五月色欧洲| 天天久久婷婷| 婷婷五月天堂| 人妻五月天激情开心网| 五月天亭亭俺也| 99视频日韩| 婷婷的色色五月天| 激情综合网络插| 超PEN精品在线| www,99热| 99er日韩| 午夜]香婷婷深深爱| AA丁香综合激情| 亚洲免费看片| 中文字幕丰满乱孑伦无码专区| 免费在线观看欧美激情xx小视频| www.99色| 婷婷酒色网| 爱久综合| 97色色色视频| 99在线观看| 新激情五月天| 伊人99热| www五月天com| VA婷婷| 一本狠婷婷综合| 日日色综合| 中文字幕性爱丰满| 夜夜 操无码| 婷婷在线网| 伊人网碰碰| 五月色婷婷综合丁香精品无遮挡| 色综合视频| 精品一二三区久久AAA片| 日韩啊啊啊| 热99精品视频观看| 五月天丁香成人社| 丁香婷婷天堂| 五月天久久婷婷| 99无吗| 狠狠色丁香综合| 99色在线视频观看| 欧美人与性动交CCOO| 黄网在线观看免费| 丁香五月激情鲁| 亚洲婷婷视频| 日韩AV在线免费观看| 香蕉久久国产AV一区二区| 色婷婷六月天| 天天色噜| 五月丁香狠狠| 日 日干 日日做| 殴美日比视频| 婷婷成人在线| 中文超碰视在线| 快乐婷婷五月天| 超碰人人操| 色婷婷亚洲综合天堂| 日本三级日本三级99| 午夜婷婷久久| 可以免费观看的AV| 深爱激情婷| 九九热手机在线视频| 亚洲精品色色| 另类在线| 91久久久久久久久18| 色欲婷婷五月天丁香| 99情色五月天| av一区二区电影免费在线观看| 亚洲精品久久久无码| 五月天色婷婷综合| 激情五月天影院| 高清视频一区| 久久激情综合| 天天插天天爽| 久草热在线视频| 无码人妻电影| 五月丁香婷婷色色| 超碰人人在线| 亚洲激情五月| 久久亚洲婷婷| 国产精品久久久久久久久久免费 | 五月伊人综合| 色之综合网| 五月丁香怕怕综合| 天天拍天天做视频| 99视频精品全部免费 在线| 丁香婷婷免费| 婷婷综合五月色播| 婷婷五月天在线观看免费| 久久婷婷五月综合啪| 区区欧美你爱| 丁香桃色网| 极品另类| 激情综合五月| 麻豆AV一区二区三区| 国产乱人偷精品人妻A片| 少妇搡BBBB搡BBB搡毛茸茸| 中文字幕1区2区。| 97成人视频| 啪啪操超碰| 婷婷精品在线| 亚洲天天免费| 亚洲婷婷欧美婷婷| 激情图片久久| 狠狠五月天| 四色五月婷婷| 日韩av手机在线观看| 91干网站| www.91婷婷| 激情丁香久久| 26uuu亚洲欧美日本| 五月天婷婷爱| 欧美槡BBBB槡BBB少妇| 亚洲狠狠色丁香婷婷综合久久| .肏屄视频一区二区| 综合99久久天天综合| 99爱爱| 日韩成人精品一区久久久久| 丁香激情五月少妇| 大香蕉婷婷五月天| 亚洲视频在线观看| 91打屁股视频网站| 在线五月色播| 激情小说五月天| 99操| 小色小蛇伊人婷婷色香五月| 深爱 五月天| 丁香六月色婷婷| 日日.c| 久久免费干| 九九操操| 亚洲色激情| 99热综合| 9一精品视频观看| 天天性视频| 亚洲丁香五月| 丁香五月天啪啪| 秋霞九九无码| 婷婷另类开心| 五月丁香 啪啪| 91妻人人爽人人看片| 丁香激情四射| 五月天激情啪啪| 婷婷六月丁香五月| 亚洲AV无码成人精品区电影网| 综合激情五月四射婷婷| 五月丁香六月激情视频| 国产AV一区二区三区日韩| 久久99久久99精品免观看粉嫩| 管管補管管紱| 99久热| 99久久亚洲国产| 26uuuavcom| 超碰在线99| 国产操肏网站| www,av好吊操| 久久精品国产一区二区三区四区| 色婷婷av在线| 伊人在线视频| 婷婷五月综合中文字幕| 五月丁香激情婷婷综合字幕| 大香蕉AV在线| 91久久精品无码一区二区三区| 天天色官网| 免费无码毛片一区二区A片| 操操国产| 五月天婷婷基地综合网| ady狠狠入| 玖玖福利视频资源| 国产毛片欧美毛片久久久| 99色视频| www.久久99| 日韩久久色| 久久九九国产精品怡红院| 97人人干视频| 婷婷娱乐丁香综合网| 国产乱子轮XXX农村| 成人做爰A片免费看网站找不到了| 天天色丁香| 91久久综合亚洲噜噜成人在线| 九九99视频| 天天日日综合| 亚洲无码影音| 丁香五月在线观看综合| 极品人妻VIDEOSSS人妻 | 激情五月,婷婷五月,丁香五月| 精品人妻午夜一区二区三区四区| 国产在线6| 香蕉婷婷| 婷婷舔| 碰97 久| 99re热视频| 爱操天堂| 丁香婷婷视频| 五月天婷婷涩涩| 九九热精品视频| 五月开心久久| 在线视频另类| 婷婷五月激情网站| 五月天色色网站| 综合激情网| 日本黄色一级| 丁香婷婷噜噜| 丁香婷婷色九月| 玖玖无码中文| 色六月天天激情综合网| 日本强伦片中文字幕免费看| 婷婷激情网五月天| 亚洲色五月婷婷| 啪啪综合| 激情啪啪五月天| 亚洲狠狠丁香婷婷香蕉| 五月天婷婷婷| 黄网免费观看| 成功精品影院| 涩五月色婷婷| 操逼毛片国语对白| 国产精品一区在线观看你懂的| 五月婷婷之六月丁香| 高清av在线国产| 久99久精品视频| 色五月婷婷天天干| 色婷婷狠狠久久综合五月| 色偷偷综合| 久久99免费视屏| 91夫妻视频| 色天五月天在线观看视频| 久久性视频| 97caop| 中文字幕激情综合| wwW天天干| 色综久久久| 99综合久久| 久香草视频在线观看| 久久狠婷婷| 色婷婷视频| 五月婷婷中文| 日韩一区二区在线播放| 色噜婷婷| 99热这里只有精品55| 亚洲va欧美va国产综合久久久| 日本一毛片| 久久AAAA片一区二区| 欧美婷婷成人| 五月丁香婷成人网| 丁香五月天天| 中文字幕乱码亚洲精品一区| 天天日日夜夜| 伊人天天色| 伊人久久大香线蕉av一区| 午夜精品人妻无码一区二区三区| 思思热99热| 国产精品噜噜在线视频| 91精品婷婷国产综合| 丁香五月瑟瑟| 青青日韩| 色九九综合色| 婷婷五月激情五月激情| 五月天综合视频| 天天色爽| 日韩无码专区| 9热在线视频精品| 欧美顶级少妇做爰HD| 色婷婷激情| 99热只有精| 99热思思在线观看| 九九色99| 亚洲无码激情| 极骚大香蕉伊人| 六月婷婷综合| 五月婷婷六月丁香综合| 岛国AV网| 激情小说之五月| 婷婷欧美激情综合| 九九综合九九| 色情婷| 婷婷丁香黄色| 在线免费视频caop| AA片在线观看视频在线播放| 亚洲成人五月天| 99热这里都是精品| 婷婷在线播放| 婷五月天| 日本熟女二区| 日日夜夜狠狠操| 色婷婷激情五月天在线观看| 九九操综合网| 99这里只有免费的小视频在线观看| 武则天精品久久| 九月婷婷色色| 五月婷婷丁香啪啪| 激情 婷婷| 亚州婷婷五月激情综合| 狠狠爱婷婷五月天| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 亚洲AV无码影院| 99精品偷拍视频| 婷婷激情综合色五月久久91| 99热午夜精品| 婷婷丁香五月社区亚洲| 先锋影音男人的天堂AV| 婷婷中文字幕欧美| 九九色婷婷Av| 丁香五月综合激情久久潮喷| 久久九九99.www| 色色色色色色色色色色色色色色,网站| 综合六月激情婷婷| 婷婷五月综合视频| 婷婷5月九九| 综合一本道| 久久这里只有精品热在99| 夜夜爽天天爽| 色久影院| 五月丁香人妻| 激情第四色| 精品人妻在线免费观看| 中文不卡av| 91丨人妻丨国产丨丝袜| 小色小蛇伊人婷婷色香五月| 黄色精品五月婷婷| 久操热线| 丁香五月婷婷色五月| WWW、日本色丁香、co m| 2025超碰| 999九九九久久久99HD| 五月天婷婷激情网| 狼人久草| 狠狠色官网| 97丁香五月| 色色色婷| 99精品无码| 丁香五月天天久久综合小说| 天综合日日夜综合7799| 色综合综合色| 婷婷黄色五月天在线视频| www.av骚货| 丰满人妻一区二区三区| 丁香色五月天| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 26uuu亚洲欧美另类| 色日本网| 日韩人妻在线观看| 激情99| 啪啪视频99| 99爽视频| 午夜青草资源| 饮料下药迷倒漂亮女同事强干| www99热| 色.五月综合网| 超碰色婷婷| 日韩五月天婷婷| 新激情五月天天在线网| 久久婷婷色| 潮汕成人AV片在线| 无码se| 99热99re6国产在线播放| 丁香激情四射| 超pen个人视频97| 久久久久久99精品无码| 97丁香五月天| 五月丁香色综合| 久久久99精品免费观看| 亚洲精品在线视频| 99在线视频精品| 夜夜 操无码| 丁香五月婷婷社区| 97色碰| 五月天天天色| 涩涩五月天| 五月综合激情| 六月久久狠狠| 色婷婷影院| 99干日本| 婷婷色色欧美| 男女啪啪做爰高潮无遮挡| 人人干女人| 色色色欧美色色| 色噜噜狠狠一区二区三区| 超碰中文字幕在线| 五月激情偷拍婷婷| 99精品热| 国产精品丝| 五月停停99| 婷婷五月色| 日韩色五月| 五月天色五月| 天天爽人人综合免费7799| 国产午夜一区二区三区| 色婷婷小说| 色九月| 激情六月婷婷| 色婷婷五月影视| 人妻操在线看| 思思热在线| 色10月婷婷视频| 天天操中文字幕| 人人草碰| av五月天婷婷丁香| 丁香五月影| 五月丁香激情综合网官网| 五月激情婷婷在线| 天堂资源欧日浪女在线播放| 日日噜噜夜夜狠狠久久丁香六月| 999热在线观看视频| 婷婷五月天少妇| 大香蕉久| 丁香六月狠狠| 丁香六月婷婷| 婷婷丁香五月天婷婷| 综合AV在线| 成人网站免费在线播放| 日韩淑女人妻luan伦激情精品一区二| 五月丁香 狠狠爱| 色欲资源网| 五月丁香六月激情网站| 五月婷婷影视| 91919191919久久成人视频| 婷婷六月色丁香视频在线观看| 五月天伊人| 99色精品视频| 另类在线| 丁香五月第九色| 一本大道熟女人妻中文字幕在线| 五月丁香啪啪拍| 国自产拍偷拍精品啪啪一区二区| 梁铮版蜘蛛女在线观看| 狠狠色婷婷7777久| 夜夜天天久久婷婷| 日韩免费视频| 天天干肏夜夜| 熟妇天天综合| 夜夜骑天天操| 日熟女| 五月婷婷熟女| 97色色色色| 香蕉AV777XXX色综合一区| 操嫩逼电影| 99热黄| 综合色播| 亚洲区视频| www.久久| 综合图区激情| 久久天堂婷婷五月| 丁香激情网| 五月天激情播播网| 日韩AV中文在线观看| 色婷婷丁香| www.五月婷婷.com| 极品人妻VideOssS人妻| 五月五丁香婷婷| cao视频,现在观看| 熟女网站久久| 九月丁香婷婷综合激情| 色五月亚洲| 伊人在线视频| 97色碰| 色伊人91在线视频| 泰州成人视频| 去干网av| 97操碰98| 人人97碰| 青青草蜜臀| 岛国操B不卡在线| 九九免费视频| 99愛国产| 丁香五月另类色婷婷麻豆| www.99热| 色婷婷丁香五月在线观看| 秋霞性爱AV| 精品久久久久成人码免费动漫| 午夜日日| 五月丁香综合激情| 婷婷丁香在线播放| 欧美久久婷婷| 97人碰人操| 色色五月丁香| 久久亚洲婷婷| 色噜噜狠狠色综| 美女爆乳18禁www久久久久久| 色五月婷婷中文字幕| Va另类视频| 色啪综合| 丁香五夜激情四射夜夜夜| 99热都是精品| 亚洲天堂aaaa| 天天插天天草人人玩| 人人性久久| 久久艹 五月天| 91色五月| 亚洲成人五月天| 六月婷婷色五月| 97人人看| 男人的天堂99| 九九亚洲| AV在线免费网站| 青草激情综合| 五月丁香五月激情综合色综合| www.久久久久久久| 31色区视频免费看| 国产亚洲精品AAAAAAA片| www.五月婷婷.com| 99热这里只有精品搜| 亚洲精99| 色五月天堂| 一区二区三区XXXXXX| 超碰亚洲欧美| 中文字幕黄色片| 亚洲无码另类| 欧美丁香五月夫妻天| 五月天婷婷成人资源站| 夜夜爽天天| 色五月成人| 婷婷色色欧美| 99精品久久久久久久久| 中文字幕丰满孑伦无码专区| 亚洲九九夜夜| 欧美色99| 五月精品| 99热这里只有精品3| 五月激情网络| 九九成人精品| 欧美久久五月婷婷| 五月丁香日本片| 色五月激情网| 99re免费精品视频| 五月天婷婷基地综合网| 欧美操我| 色月丁| 99色在线免费观看视频| 免費观看aV在线网址| www,999日本色| 欧美人与性动交CCOO| www.狠狠操| www.超碰在线| 久热九九| 色久综合| 欧美成人AAA片一区国产精品 | 日韩二区搞逼插逼毛片| 国产乱子轮XXX农村| 五月丁香综合网| 五月天啪啪| 26uuu欧美| 大地资源色婷婷视频在线| 五月丁香啪| 国精产品一区一区三区免费视频| 五月天激情网站| 五月天综合| 国产午夜精品一区二区三区嫩草| 乱岳熟女50岁| 在线播放人妻| 五月丁香亭亭A片| 大香蕉伊然在亚洲90| 激情五月天色色色| 香蕉乱插| 久久婷婷国产| 丁香五月婷婷六月婷婷| www.25五月婷婷| 婷婷5月天av| 97色婷婷五月天| 五月六月丁香激情| 五月婷激情影院| 丁香六月综合激情| www.狠狠| 久久大香蕉丁香| 婷婷五月欧美| 国产性爱一级| 婷婷久久综合久| 五月丁香va| 色婷婷裸体色性在线| 涩婷婷五月天在线精品视频| 五月天丁香网站| 色婷五月天| 婷婷九月久久| 91九色 婷婷| 五月天激情播播网| 青草热视频这里只有精品| 五月丁香六月在线| 久热久| 性av| 日本毛片内射| 久久这里只有精品久久| 白天AV月月| 狠狠插狠狠插| 精品人妻一区| 五月天婷婷丁香成人网| 伊人网啪啪| 色色色99韩| 99久热这里只有精品| 97啪啪| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 亚洲综合色五月| 一区无码| 五月天丁香网站| 五月婷婷熟女| 99激情视频| 九九热免费视频| 五月天丁香综合在线| 色五月婷色彩免播放器| 色爱终和网| 99操| 97超级啪啪在线观看| 99男人的天堂| 色综合久久伊伊婷婷五月| 成人va在线播放| 国产肥白大熟妇BBBB视频| 日韩五月婷婷| 侠女刀之记忆电影在线看免费| 亚洲成人噜噜| 色色综合网站| 久久一级片| 五月色情网| 91热在线| 超碰啪啪网| 五月婷婷五月天激情视频| 亚洲国产精品VA在线看黑人| 丁香激情五月天| 久99久视频免费观看| 开心五月婷婷在线| 亚洲激情五月| 丁香五月婷婷99| 婷婷色日本| 久久这里都是精品| 在线91日韩| caopeng97日韩| 亚洲激情婷婷| 婷婷综合在线播放| 另类视频丁香五月| 五月综合久久| 色欲天天综合| 俺去也五月天| 老师高潮流白浆喷水的A片| 婷婷激情中文综合| 香蕉人在线香蕉人在线 | 日本色99网站| 狠狠va| 九九在线精点品| 婷婷99视频精品| 第四色首页| 日日噜噜夜夜狠狠久久丁香五月| 久久永久网址| 五月丁香久人妻中文| 一级黄色操B| 五月激情丁香| 欧洲电影在线观看免费版英语版| 九九亚洲视频| 日良久久| 丁香五月婷婷Av| 色五月天成人| 欲色人妻| 色色色色网色色网色色| 成人无码髙潮喷水A片| 亚洲五月天色| 九九av| 中文字幕在线日亚州9| 丁香婷婷色色| 婷婷五月天中文字幕| 六月色播| 婷婷丁香先锋资源网站| 美英法精品无码免费视频| 色吧婷婷五月亚洲| 久久只这里有精品| 青青草免费公开视频| 婷婷五月欧美综合| 五月婷婷深深爱| 99色色网站| 九月婷婷综合| 日本五月婷婷久久久六月丁香| 色色婷| 色婷婷五月天天天天天天天天天| 狠狠操狠狠插| 草操网| 免费视频在线观看的网站| 亚洲综合网激情小说| 色欲一区二区三区精品A片| 精品综合久久久久久五月天| 色婷婷成人做爰A片免费看网站| 日本精品。999| 久久婷婷六月综合国际| 亚洲综合色五月| 热久91|