免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
99五月香婷婷丁香在线视频| 久久99草五月婷婷| www.人人操人人看人人想人人摸 人人人人操,COM | 激情五月丁香婷婷夜夜操| 99ER热精品视频| 久久婷婷五月天蜜桃| 国产成人综合网| 五月天婷婷Av| 大香蕉色婷婷伊人在线| 五月丁香综合激情| 五月婷婷色色| 八戒青柠影视剧在线观看| 九九这里有精品| 色五月开心五月激情五月| 色婷婷丁香社综合| 伊人大香蕉综合在线| 亚洲色热| 色情五月丁香| 思思久久99| 成人开心五月天| www好屌操| AV网站免费在线| 六月婷综合| 五月天另类小说亚洲| 色色丁香婷婷五月天| AA丁香综合激情| 182TV大香蕉| 五月婷婷丁香在线| 日本天天色| 综合在线丁香五月| 五月丁香婷婷啪啪综合网| 婷婷色色狠狠| 色婷婷五月天激情在线播放| 天天舔天天摸天天射| 伊人久久大香线蕉av一区| 五月婷婷伊| 国产精品国产成人国产三级| www.色五月| 97资源碰碰| 亚洲男女激情| 噜噜色五月| 这里精品| 99自拍网| 国产毛多水多女人A片| 超碰在线看| www.久久久久久久| 日日撸夜夜操| 欧美日韩欧美| 91操黄| 午夜性做爰电影| 79精品视频在线观看,| 99热99极品观看| 99精品免费| 狠狠草狠狠草| 激情五月天视频| 五月丁香综合啪啪| 99热久久这里只有精品| 久久久潮喷-久久久九九-成人AV| www.com亚洲网站在线免费| 天天综合五月| 五月丁香激情综合六月涩涩爱| 18av天堂| 美女美女美女三级色天天天天天| 日本九九网| 九九色色色| 九九Y精品热播| www,99色| 人人干人人干骚美女| 亚洲综合网区| 亚洲色色香蕉| www.99热| 综合九九中文字幕| 五月婷婷综合网在线播放| α久久| 五月丁香人人婷婷在线观看| 大天天伊人| 丁香六月啪| 色情综合网| 一本色综合色| 强伦轩人妻一区二区电影| 91视频一起草| 丁香六月婷婷色XXXX| 天天日天天干天天插天天射| 激情五月六月婷婷| www.1024久久| 日本va网站| 国精产品一区二区三区| 婷婷五月激情综合| www亚洲无码| 久久婷婷激情| 天天日天天草| 丁香婷婷老熟女综合网| 思思热这里只有精品视频666| 日本丁香五月婷婷| 成人网址在线观看| 久久五月婷婷视频| www.26uuu.com亚洲电影| 久久婷综合| 天天五月丁香五月| 操骚货在线| 日本九九九九| 大香蕉久艹| 天天插天天很| 永久精品| 国产avapp 网| 五月天综合在线观看| 亚洲婷婷免费| 久久五月激情| 国产精品国产| 国产第99页| 色婷丁香五月| 五月婷视频| 五月色情精品| 青青草日本亚洲| 99久在线精品| 五月婷婷深深爱| 天天干天天干天天干天天干天天干天天干天天| 亚洲六月色| 香蕉五月婷婷| 天天狠狠干| 精品一区二区三区四区五区六区| 色丁香五月婷婷| 99人人爽| 天天色综合综合| 开心激情网五月天| 色天天综合天天综合频道。| 8区视频在线| 婷婷五月丁香成人网| 婷婷五月综合欧美在线播放| 狠狠色婷婷7777久| 激情99热| 亚洲在线免费成人| 日本激情综合| 久热天堂| 婷婷五月色惰| 五月天天综合| 8区视频在线| 色色9 9| 99热这里只有精品98| 狠狠操综合| 五月丁了香蕉综合| 91超级碰在线| 亚洲精品电影| 五月天成人综合| 色碰干| 日本九九视频| 五月天婷婷色| 日本三级大片| 天天摸天天高潮天天爽| 色婷狠狠| 久久92| 婷婷免费无马| 极品人妻VideOssS人妻| 国产伊人五月天| 婷婷五月av| 激情五月伊人婷婷| 色色97丁香婷婷五月天| 影音先锋天天日| 欧美婷婷综合网| 五月丁香欧美综合| 男女99免费视频| 日韩亚洲视频| 天天做综合网色综合| 大伊香蕉精品视频在线| 色五月天成人| 婷婷色色五月天| 人人爱操| 人妻久久久久久久 | 久久综合五月天| 国产成人综合网| www.99视频| 色综合爽| 婷婷伊人綜合中文| 亚洲99热| 丁香六月五月婷婷| 五月天无码| 天天操综合网| 五月婷婷激情综合网 | 五月天激情小说婷婷基地| 五月天婷婷无码| 久久婷婷激情四射五月天| 五月丁香综合中文| 日本色婷婷久久99精品91| 成人午夜视频精品一区| 天天干天天做| 色五月婷婷五月久久| 婷婷狠狠综合网入口| 超碰1999| 久久五月人人摸| 大香蕉久久综合网| 婷婷五月无码| 丁香六月婷婷综合欧美| 亚洲精品欧洲精品| 久久精品婷婷五月丁香| 色婷婷色综合久久精品V| 色五月婷婷影院| 五月色情婷婷| 九九人人自拍| 97操资源婷婷| 五月天色五月| 久操人妻| 精品人妻一区二区| 五月婷丁香亚洲| 五月丁香在线观看99| 色五月激情网| 亚洲成人在线播放| 五月天婷婷综合免费| 天天做天天视天天谢| 丁香五月婷婷国产在线| 日本乱子人伦在线视频| 色墦五月丁香| www.99热精品| 色婷婷综合视频| se99高清无码| 九九国产视频| 久久婷婷色情7777网站| 日本少妇AA一级特黄大片| 丁香五月成人社区| 粉嫩av蜜桃av蜜臀av| 人人摸人人射| www.夜夜夜| 激情文学第四色婷婷丁香五月| 日韩成人不卡| 亚洲V国产V欧美V久久久久久| www.色九月| 丁香五月激情视频在线| 九九视频精品在线免费| 5月婷婷6月丁香aV| 99热香港| 99在线视频免费| 婷婷丁香成人五月天| 亚洲精级| 丁香五月婷婷www..com| 色婷婷亚洲综合网站| 超碰在线人妻| 最近中文字幕大全免费版在线| 婷婷九月在线| 美欧日韩国产成人在战| 成人综合AV| 99热在线观看精品| 婷婷九月丁香| 精品99在线| 天天干夜夜想| 久草狼人| 久综合网| 国产67194| 成人视频一区| 五月丁香啪啪网| 中文字幕不卡+婷婷五月| 俺去也综合| 亚洲综合激情五月| 五月天精品| 激情五月天伊人影院| 色五月婷婷天天操夜夜操| 91九色最新视频| av网站中文| 另类丁香五月天区图| 丁香婷婷激情综合五月激情 | 91视频一起草| 啪啪 综合网| AAAA网站| 色情综合网| 亚洲va久久久噜噜噜久久天堂| 日本VA视频| 97干在线视频| 丁香五月婷婷色| 婷婷五月成人| 色伊人91在线视频| 操操熟女| 色综合久久888| 久久9精品| 人妻综合网| 人人爱操| 激情综合网激情五月丁香五月俺也去| 五月丁香亚州综合网| 99艹精品在线观看| 爆乳熟妇一区二区三区爆乳照片| 丁香婷婷精品视频| 精品色色色| 天天玩夜夜操| 婷婷久久五月天| 国产欧美日韩综合精品一区二区| 99re久热| 天天插天天插天天操| 激情婷婷五六月天| 偷拍五月丁香| 中文字幕丰满孑伦无码专区| 嫩草视频观看| 久久狠狠色| 99亚洲色色| 激情久久久久久久久久| 97久久久久久久久久久| 丁香六月狠狠干| 人人爽人人射-美女久久久久久久久久-成人AV | 色色色综合色| 九九热这里只有精品9| 激情六月日韩| 国产精品久久久久久久久久久久| 99.N在线视频| 婷婷五月丁香成人| 成人在线网址| 夜夜干夜夜操| 婷婷五月天视频| 国产操B| 91精产一区三区免费观看| 91久久久久久| www.久热| 丁香六月成人| 国产精品久久久99视频| 五月丁香综合中文| 日本综合99| 五月婷婷欧美| 五月天桃色深爱网| 99综合色色色| 激情涩涩网| 综合成人小说婷婷| 久777| 久久99久久99精品免视看婷| www.99热这里精品| 操97在线观看| 就爱啪啪婷婷| 人人摸人人| 色五月中文字幕| 99热国内| 99色色网| 色婷婷五月影视| 亚洲亚洲永久无码777777| 婷婷99| 久久久久视剧HD| 狠狠干狠狠干| 97天堂| 26uuu精品一区二区| 熟妇内谢69XXXXXA片| 日韩影院三级| 91综合国免费久入| 色噜噜狠狠色综合网| 色色COm| 五月婷婷六月激情| 色狠狠激情五月| 婷婷久久五月天丁香| 一级内射毛片| 色情综合网| 婷婷成人基地| 日日夜夜天天爽| 专区无日本视频高清8| 成人婷99最新| 超碰人人操人人干| 色五月综合激情| 殴美日韩成人| 日韩av在线电影| 五月天婷综合| 五月天色综合| 操人无码| 99热国产这里只有| 99ER热精品视频| 色色综合日韩| 五月激情综合网婷婷| 秋霞午夜理论| 99热个人在线| 2025天天操| 美女久久天堂| 天天天天干| 99九九热视频| 在线天堂9| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 91人妻九色大屁股| 五月丁香六月婷婷欧美综合| 欧美乱码国产一级A片| 九九热视频这里只有精品| 丁香香蕉婷婷| 大香蕉综合| 天天久久66xxx| 五月天色不卡| 青草激情在线| 9月色婷婷| 91久久久久久久久| 久久亚洲色导航| 精品9197碰| 五月丁香六月婷综合成人综合| 日操熟女| 国产精品视频免费看| 九月婷婷久久| www.91热久久| AV在线免费播放| 九九综合久久| 激情五月综合网丁| 国产成人AV在线| 天天插天天插天天日| 精品一二三区久久AAA片| 99精品无码网站| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 在线观看熟女少妇| 婷婷色综合中心站| 狠狠草狠狠草| 99青青草| 涩涩涩,com| 99成人小视频| 东京热伊人| 天天拍天天操| 碰97久久| 国产精品蜜臀99| www.日本91| 天天爽天天爽| 婷婷五月天在线观看| 国产成人网址| 激情婷婷五月天丁香| 四色五月婷婷| 影音先锋91| 桃色激情婷婷伊人网| 婷婷六月天| 26uuu成人网| 337午夜福利| 99热在线精品观看| 4399精品一区二区| 国产精品久久欧美久久一区| 亚洲黄色精品| 99re思思久久| 亚洲精品小视频| 久9热视频在线观看| 丁香伍月婷电影全集| 97人人做| 久久怕怕视频| SESE无码AV| 噜综合| 欧美性交一区二区三区| 狠狠色色色| 婷婷丁香久久| 激情亭亭五月| 色亚洲欧洲| 天天天天天操| 激情影院内射| 婷婷视频网| 色五月中文字幕| 免费看欧美成人A片无码| 9999三级片| 五月丁香六月婷综合成人综合| 婷婷五月天免费小说| av第一二区| 久777| 欧美槡BBBB槡BBB少妇| 久久婷婷丁香| 综合XX网| 天天噜| 五月婷婷网站| 五月丁香激情婷婷综合| 丁香五月人妻熟女| 伊人喵咪a V| 超碰九色| 色播五月婷婷| 九九热精品| 激情综合无码| 中文字幕在线免费观看视频| 香蕉狠狠爱视频| 激情丁香五月| 影视av久久久噜噜噜噜噜三级| 日韩爱操视频| 人人草人人爱| 九九热自拍| 99热这里都是精品| 狼友视频在线观看18| 玖玖五月丁香| 五月天狠狠色| 狠狠久久婷五月| 91色涩| 久久3p| 丁香婷婷色| 91狠狠综合网| 国产 码在线成人网站| 97人人草| 欧美三级巜人妻互换| 青柠影视免费高清电视剧| 五月丁香六月| 99热网精品| 丁香婷婷狠狠97| 久操乱| se婷97| 亚洲视频国产一区| 天天爽人人综合免费7799| 色五月天激情| 国产精品久久久海的味道| 色色色色五月天| 26uuu成人网| 色婷婷色99国产综合精品| 激情五月综合网最新| 欧美日韩成人在线| 久久A热| 婷婷五月骚厕所| 99九九精品| 婷婷激情综合| 五月激情综合网| 天天操天天插| 激情五月狠狠喔| 五月婷婷影| 久久久这里都是精品| 99热在线免费观看精品| 五月婷婷丁香瑟瑟视频| 91精品久久久久| 久久婷婷精品| 亚洲色爱综合| 日韩人妻无码专区| yjzz亚洲国产| 淫视馆aV二区一区| 婷婷五月天六月| 婷婷五月天亚洲综合| 亚洲激情五月| 爆乳熟女-区二区三区| 91人人网| 这里只有免费精品| 精品色色| 在线不卡中文字幕| WWW.桔色成人.COM入口| 六月婷婷视频| 丁香五月影| 99碰网站| 美英法精品无码免费视频| 原琪琪色影院| 色色色1网址| 久久丁香五月综合六月激情红杏视频| 婷婷开心久久| 国产精品久久欧美久久一区| 久久久久8888| 日本激情综合| 亚洲精品字幕| 香蕉久久国产AV一区二区| 色婷婷五月天天天干天天操天天爽| aa久久| 刘玥精品一区| 婷婷大美在线| 97精品综合| 丁香六月婷婷社区| 思思久热| 色狠狠色噜噜AV天堂五区 | 丁香五月婷婷欧美性爱| 丁香六月婷婷缴情欧美| 91丨九色丨白浆秘| 一级黄色操B| 天天爽天天弄| 丁香六月婷| 第四色五月婷婷| 丁香五月天啪啪激情综和网| 中国丰满熟女A片免费观| 欧美日韩成人一区二区| 五月天婷婷色综合| 碰碰碰97国产| 色五月婷婷激情五月| 精品久久婷婷五月天| 饮料下药迷倒漂亮女同事强干| 亚洲中文字幕在线观看| 婷婷AV丁香| 色五月天电影| 丁香五月亚洲AV| 九色91视频| 正宗黄色毛片| 丁香婷婷六月男男| 9 1在线视频| 五月婷婷激情久久| 99在线小视频| 五月天六月婷婷| 亚洲综合色婷婷文学| 久香草视频在线观看| 国产精品一区在线观看你懂的| 婷婷六月激情| 欧美黄色AA片哗啦啦啦| 看婷婷五月天网| 五月天.com| 综合色99| 色五月亚洲| 久久er这里只有精品| 岛国AV网| 婷婷,五月天,丁香,第一| 操人无码| 99在线观看亚洲| 色播五月天激情| 99视频超级精品| www.丁香五月| 26uuu欧美亚洲日韩| 色综合久久之分久久| 96性爱视频| 日韩成人中文| a久久免费视频| 婷婷伊人五月丁香天堂网| 激情文学五月丁香六月婷婷| 大香蕉Av在线| 玖玖热视频| 天天天操天天天爰| 欧美日韩成人h| 思思热AV| www激情| 色色五月婷| 丁香五月激情婷婷激情| 玖色色综合| 99操视频| 全部老头和老太XXXXX| 激情五月婷在线精品| 天花AV无码| 天天射综合网站| 这里只有精品视频国产| 七七久久综合| 337p大胆噜噜噜噜噜91Av| 777久久精品| 97啪在线观看视频| 久久久久激情网| 天天弄天天爽| 4438全国最大视频成人网站在线观看| 97香蕉久久超级碰碰高清版| 五月婷婷就去色| 超碰丁香五月| 99色视频| 色色色成人网| 日本的α片xxxwww| 淫荡A片| 色播五月天激情| aaa日韩| 91男同| 久99久视频精品| 性爱网五月天| 亚洲色模骚货| 影音先锋色色色资源色资源色| 97超级啪啪在线观看| 婷婷午夜激情| 亚洲国产va| 99er日韩| 色玖玖玖| 伊人丁香五月天丁香在线婷| 婷婷综合色色| 激情五月六月婷婷| 五月激激网w'w'w| 玖玖婷婷婷丁香五月| 99婷婷| 婷婷五月天亚洲综合| 色五月开心五月激情五月| 99偷拍视频在线日本| 国产AV一区二区三区最新精品| 永久免费视频| 日本黄色一级| 99激情| 中文字幕精品在线观看| www,99热| 日日做天天操夜夜爽| 婷婷色婷婷| 视频在线免费观看欧洲乱码| 五月四色激情| 国产精品第一国产精品| 五月丁香啪啪网| 久久久久久97| 亭亭玉月丁香| 五月婷婷六月丁香色| 婷婷丁香一月| 伦乱美欧| 婷婷 久综合| 久色网址| 婷婷久久综| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 免费啪啪亚州视频| 久久图色4| 五月停亭久久电影| 三日本无码| 国产伦亲子伦亲子视频观看| 欧美韩国日本| 天天插天天插| 精品一二三区久久AAA片| 色欲色香综合网| 99热久草| 91啪啪视频| 99在线视频精品| 91久久九久久九久久九久久九久久| 婷婷中文字暮| 五月婷婷综合在线视频小说| 色五月首页| www.五月天社区| 这里只有精品视频一区| 五月天精品综合| 夜夜爽天操| 色婷婷九月| 99这里只有精彩视频| 国产av网| 天堂网亚洲色图| 啪啪五月婷婷| WWW·色色色·COM| 99九九精品视频| 九色婷婷| 99精品这里只有免费视频| 久久五月六月| 天天爱天天做天天爽| 色综合网综合| 99无码黄色视频| 综合噜噜| 夜夜骑操AV| 丁香五月天偷拍| 999婷婷综合| 色婷视频| 色婷婷五月天激情综合| 97日本在线播放| 五月综合六月丁| 色综合com| 99爱在线视频| 99er这里只有精品视频| 五月婷婷欧洲| 日本成人噜噜| 九九99久久| 成人电影AV在线观看| 五月丁香啪啪综合| 国产肥白大熟妇BBBB视频| 狠狠ri| 99热超| 五月婷在线| 日日鲁鲁夜夜爽爽| 永久精品| 激情五月综合网| 97色 五月天丁香| 欧美操逼天堂| 色五月久久成人婷婷| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 婷婷丁香社区网| 美女主播野战视步页| 久久99热这里只有精品| 日本丁香五月| 婷婷五月日本| 俺来也综合网精品一区| 天天综合网亚洲网站| 99re视频在线播放| 久久婷婷五月天激情新地址| 99热精品观看| 欧美亚洲婷婷五月| 九九久久99| 99亚洲精品综合在线| 国产综合色婷婷精品久久| 日日操夜夜爽天天天| 五月天婷婷成人| 国产超碰在线| 综合激情五月婷婷| 青草激情在线| 噜噜噜久久| 日都一级A片| 深爱婷婷色| 欧美天堂久久| 99re久热| 激情网狠狠干| 天天干天天干天天干天天干天| 色综合激情图区| 五月开心婷婷极品激情| 另类视频五月天| 97亚洲视频在线| 99精品在线播放| 欧美色性色好| 1024成人免费看| 26UUU成人网| 99日本在线| 激情五月天福利| 婷婷不干网| 亚洲综合色色| 99这里只有精品| 伊人99久久| 丁香婷婷综合五月天| 另类图片色五月| 一起操 91N.com| 天天干-天天日| 丁香五月综合| 99 re视频一区| 色综合久久五月天| 色都都狠狠色都都色综合色| 丁香五月天激情AV| 亚洲妇女熟BBW| 婷婷丁香社区网| 无码人妻电影| 国产免费AV在线| 国产精品色婷婷99久久精品| 色色色色色综合| 婷婷十月激情综合网| 天天色中文字幕女优AV| 婷婷六月插屄激情| 99热国品| 五月丁香六月婷婷综合网| 4399成人黄A片| www.激情五月天。com| 国产精品久久..4399| 玖玖激情五月天| 激情99| 丁香婷婷综合激情五月色| 开心激情综合| 天天干天天曰天天射| 欧美激情VA永久在线播放| 91 久热| 日本五月婷| 丁香综合久久| 婷婷五月天AV在线| 日本色99| 久久久久这里只有精品| 五月婷婷与六月丁香图片激情| 99这里只有精品|v| 5月色婷婷| 午夜不卡久久精品无码免费| 色婷婷五月综合网| 久久六月综合| 99九九视频| 草草操操| 婷婷丁香六月| 婷婷五月天在线观看第二页| 色狠狠综合入口| 天天射综合网站| 九九激情网| 不卡的AV网站| 天天日天天摸| 五月丁香六月婷| 五月天成人综合| 综合网五月天123| 热996精品在线观看| 婷婷丁香花五月天| 色七色九九| 久草九一| 日韩在线视频中文字幕| 色色色99韩| 狠狠色婷| 欧美97色| 五月婷婷在线网站| 五月开心久久| 婷婷综合在线| 婷婷五月天狠狠| 色五月婷婷av| 一区二区三区四日本| 精品色| 丁香五月激情综合| 激情色五月天| 婷色五月天| 狠狠色情婷婷| 99久久精品国产色欲| 久久五月综合| 可以看的av网站| 五月婷婷高清| 丁香五月婷综合| 亚洲热视频| 亚洲激情综合免费| 99re热精品在线视频| 超碰熟女农村在线69| 乱码操操| 热99精品视频| 国产精品电影| 色五月婷婷91在线| 九九色热| 五月婷婷成人| 狠狠久综合| 欧美内射AA| 久久99久久99www| 欧美成人va| 五月天色不卡| www.操逼comm| 超碰碰碰碰| 欧美男女婷婷| 无码少妇高潮喷水A片免费 | 99色在线视频| 亚洲av成人电影在线观看| 五月天综合| 超碰9| 五月天精品视频| 激情五月丁香色婷婷| 成人av在线网站| 婷婷五月娱乐在线| 熟女人妻视频| 久热免费| 亚州色婷婷| 日韩aaaaa| 丁香五月中文字幕久色| 噜噜噜噜噜日本视频| 99ri精品视频在线观看| 99热99草97| 91九色超碰| 国产偷人爽久久久久久老妇APP| 操操国产| 九九无码| 婷婷五月天电影网| 五月天激情啪啪| 六月丁香婷婷尤物| 婷婷五月天直播| av大香蕉| 思思99热这里只有精品| 在线视频另类| 婷婷色啪| 六月丁香停| 99热在线看片| 亚洲成人AV在线| 成人 九九九九| 激情五月最新网址| 丁香六月婷婷激情| 超碰国产一区| 黄色av网站在线免费播放| 超碰免费人| 超碰在线免费观看日韩| 欧美久久一级内射wwwwww.| 日本乱子人伦在线视频| 久99热| 色色五月天婷婷| 婷婷五月成人| 疯狂做受XXXX高潮A片| 97在线视频观看| 色九月婷婷| 九九热视频在线观看| 天天日日夜夜| 国产真实乱了老女人视频| 男妓跪趴把舌头伸进我的嘴巴| 九九色热| 人与禽A片啪啪| www.金莲av| 九久热| 久久免费试看120秒| www.com.色色| 99在线视频播放| 综合久| 五月丁香综合啪啪啪啪啪| 欧美色色色色色色色色色色影视| 婷婷,五月天,丁香,第一| 丁香女人五月天| 成人五月天在线视频在线观看| 五月婷婷,六月激情| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 色色综合日韩| 国产精品久久久丁香五月八戒视频| 日本熟女一区二区| 色婷婷成人五月| 91成人电影| 在线只有精品| 婷婷五月激情黄色| 九9九9无码| 任你草| 99热这里只有精品一| 婷婷五月天堂一本在线| 色婷婷丁香五月| 九九精品免费| 久久精彩视频18| 99熟女啪啪视频| 五月色婷婷在线观看| 五月丁香久久呀| 欧美成人va| 婷婷色播婷婷| 影音先锋AV资源男人站| 欧美综合123区| 思思热思在线精品视频| 亚洲视色| 97色色色| 久久久久五月丁香| 色婷婷五月天中文字幕| 欧美激情综合色综合色| 五月丁香激情婷婷| 免费三级黄色| 天堂久久婷婷| 思思热性操| 网站免费一站二站| 99热亚洲| 日本操片| 免费观看的AV| 99色婷婷视频| 丁香五月婷婷综合激情啪啪啪| 丁香五月婷婷AV| 涩涩网五月天| 99热婷婷| 婷婷五月欧美AA片免费| 超碰碰碰碰| 五月天婷婷激情综合| 色狠狠综合| 五月丿香啪啪| 综合激情综合啪啪| 大香蕉婷婷五月天| www.99操| 色之综合网| 激情五月天综合网| 婷婷色五月91啪啪| 99色综合| 婷婷六月综合基地| 久久5 9视频免费观看| 色婷婷久久综合| 欧美日韩AAAA| 狠狠CAO日日穞夜夜穞AV | 成人va在线播放| 超碰9799| 99热只有精品在线播放| 九九青草热| 五月刺激丁香月综合| 国产裸舞福利资源在线视频| 成人短视频在线免费观看| 天天干在线播放| 久久99最新| 91精品久久久久久综合五月天| 伊人九九九久| 亚洲九九99精品视频在线播放| 操骚货在线| 色丁香婷婷| 婷婷五月天天天| 日本大人久久| 婷婷5月开心6月| 五月色网| 天天插天天插天天操| 久99在线视频| 午夜丁香综合婷婷| 亚洲热综合| 在线日本www| VA婷婷亚洲| 内射人妻视频国内| 五月天色婷伊人| 深爱激情五月网| 97精品综合久久| 天天摸天天肏| 久久婷狠狠色| 另类精品视频在线观看| 黄网在线观看免费| 婷婷久久综合| 婷婷五月色色| 性视频久久| 日本啪啪网| 精品成人在线观看| 五月天丁香婷| yellow视频在线观看91| 丁香狠狠色婷婷| 色综合久久99色| www.jiujiujiu| 97人人操人人| 超碰人人色| 婷婷六月色| 亚色网站小视频| 51精品国自产在线| 人人干Av| 97干在线免费| 久久 天天| 九九re精品视频在线观看| 欧洲亚洲免费视频9| 新97人人上人人| 青青草成人网| 思思热99er在线视频| 97在线观视频免费观看| 玖玖福利视频资源| 久久色吧| 天天肏在线观看| 天天色月| 9色91视频| 婷婷五月天黄色小说| 97干在线看| 日韩人妻无码专区| 免费色色色| 九九精品9| 99综合| 欧美日韩成人| 先锋影音av色五月天资源站| 久久久久久久久人妻| 婷婷情色五月天| 婷婷五月天成人网| 狠婷婷五月| 五月天综合久久丁香91| 激情五月小说婷婷| 国产性色蜜乳| 百度4399有码精品V在线观看| 97在线视频人妻九色| 五月噜噜噜色综合| 超碰人人在线观看| 亚洲激情综| 狠狠久久婷五月综合色| 丁香六月婷婷久久亚洲天堂| 四虎成人精品永久免费AV九九| 丁香五月婷婷综合视频| 丁香狠狠色婷婷久久无码视频| 婷色五月天| 欧美五月丁香在线| 91碰操| 婷婷婷婷婷婷婷五月丁香| 夜夜爽日日躁| AV成人在线播放| 色狠狠色噜噜AV天堂五区| 天天爽天天摸天天爱| 六月丁香婷婷视频综合在线观看| 伊人大综合| 婷婷综合色色| 伊人五月成人| 丁香五月天导航| www色哟哟| 操操啪| www.yw色| 五月四色婷婷| 狠狠色婷婷777| 色婷婷精品视频在线播放| 亚州操人在线视频| 777色色色| 欧美激情丁香五月天久久婷婷一区| 五月五月婷婷| 在线18av | 五月婷婷性爱| 99热九九热| 深爱网深爱综合网| 丁香婷婷五月激情| 激情五月婷婷色色| 最近中文字幕大全免费版在线| 一级二级色大片| 婷婷激情五月综合在线视频| 九月色婷婷| 玖玖婷婷精品| 视频一区二区在线| 激情丁香五月婷婷| 人人操插| 99这里| 五月丁香六月婷综合成人综合| 久久五月视频| 婷婷激情九月| 丁香五月综合无码趴趴| 五月婷婷很很色| 激情五月丁香五月| 婷婷色网站| 婷色五月天| 99操逼| 日本激情五月| 天天色天天干天天插| aaaaa不卡| 久久色区| 亚洲旡码| 97久人人| 性色天| 热思思| 丁香网五月天激情| 婷婷色色播五月天| 久久杏爱视频| 五月花综合网| 亚洲精品视频在线| 亚洲啪啪视频| 激情丁香九九五月综合网| 丁香六月婷婷开心婷婷网| 中文AV网站| 春色激情| 久久婷婷五月综合色欧美| 午夜性做爰电影| 欧美激情综合色综合啪啪五月| 99九九视频| 亚洲色网址| 激情五月天 婷婷| 色日本五月天| 99热综合网| 五月丁香六月激情| 亚洲色热| 亚洲五月婷婷| 嫩BBB槡BBBB搡BBBB| a久久| 亚洲第一成人无码A片| 99久久九九视频| 丁香五月之久操视频| 久久久精品免费啪啪国| 精品九九九久| 99精品网址| 久久久27操| 无码区婷婷五月花开| 婷婷五月电影院| 亚洲sesesese| 五月丁香视频在线观看| 色狠狠综合网| www,av好吊操| 99精品视频免费观看| 熟女网站久久| 五月丁香六月婷婷网| 天天综合网站| 大香蕉久久视频久久视频| 成人AV播放| 亚洲一级AV在线免费播放| 欧美99视频| 亚洲无码成人网| 99视频精品8| 激情六月综合| 久久婷婷综合网| 久操操| 久久五月丁香综合| 91人人操| 婷婷综合另类小说| 色色色色色色97| 亚洲色热| 五月激情站| 婷婷色色综合| 91色综合网| 激情五月综合亚洲另类| 五月婷婷香蕉| 91互操| 美女五月天婷婷| 婷婷激情五月色综合| 亚洲操逼片| 青草视频在线观看视频| 色色草97| 久久综合九九| 色天天综合成人网| 色激情五月| 嫩草AV久久伊人妇女超级A| 碰人人97| 丁香五月综合| 亭亭五月激情亚洲在线| 991精品在线视频| 成人综合网站| 影音先锋 一区| 秋霞午夜理论| 五月丁香啪啪网| 亚洲亚洲人成综合网络| 日韩精品电影| 深爱丁香网| www.天天日| 蜜桃成语时李时珍 免费| 久久五月婷婷视频| 久久视频婷婷视频| 97操碰在线视频| 97久久人人人干| 97操碰视频| 99色 色| 五月天综合| 色婷婷影| 久久这里只有国产精品视频| 日日干天天射| 日韩欧美性爱| 电影蜘蛛女| 丝袜激情网| www.ywav| 婷婷五月蜜桃成人桃色丁香| 五月激情影院| 99热个人在线| 九九色色| 精品久久人妻| 97久久久久久久久久久| 婷婷亚洲色| 99热这里只有精品9| 日韩一级一片内射视频4K| 操九色| 婷婷五月综激情| 综合福利网| 五月婷婷 欧美| 欧洲色色| 九九色黄色| 婷婷激情蜜桃玖玖丁香| 亚洲操人| 欧美网站视频4399| 国产亚洲成AV人片在线观黄桃| 一本久道综合99| 婷婷五月天欧美| 国产成人精品一区二区三区视频 | 日本色视| 五月丁香色停停啪啪啪| 免费色色色| 色情五月婷婷| 成人Av在线大片| 婷婷五月丁香六月| 九九99视频精品| 欧美性色五月天| 图片区 小说区 区 亚洲五月| 五月花综合| 大香蕉啪啪| 五月丁香激情怕怕| 五月天 婷 欧美亚洲| 久久人视频| 婷婷五月天激情五月天深爱五月天| 亚洲妇女熟BBW| 亚洲中文丁香| 久久激情五月婷婷| 久久久久9999| 色综合久久天天综合网| 极品色丁香| 五月婷婷亚洲| www.五月天色色.com| 婷婷九月亚洲| 综合99久久天天综合| 色爱综合网| 182TV大香蕉| 综合久久高清| 九九婷婷综合| 亚洲第一成人无码A片| 91干视频| 超碰成人免费| 精品久热| 欧美日韩999| 色综合久久伊伊婷婷五月| 色爽干|