免费国产精品自在自线-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
返回資訊列表
日日干干天天干| 日韩综合大黄| 亚洲婷婷性爱| 五月丁香综合激情网| 91热视频| 91九色精品熟女内射| α久久| 五月天堂六月丁香亚州中文字幕久久| 精品无码99| 综合色网站| 婷婷在线播放| 激情五月天色网站| 五月天婷婷综合免费| 99无码超碰| 五月网站| 专区无日本视频高清8| 婷婷五月天天aV| 五月婷av| 啪啪视频99| 午夜天堂啪啪| 激情综合国产| 婷婷开心激情| 色色色9| 婷婷成人综合| 9l视频自拍九色9l视频自拍九色9l社区| 97人妻碰碰中文无码久热丝袜| 免費亭亭成人| VA婷婷| 五月丁香亭亭AV女优| 五月天激情视频| 五月丁香六月激情欧美综合| 天天摸色吧天天摸色吧| 丁香五月23111| 大香蕉婷婷久久| 日比视频91| www.五月天婷婷| 天天色,天天日,天天做| 狠狠狠人妻| 丁香九九九九| 天天爱天天做天天日| 操逼巨乳91| 99年操人人爽| 97超级碰| 91在线观看www| 久久综合五月天激情小说网站| 激情五月天丁香| 五六月丁香激情视频| 五月婷婷黄色毛片| 色综合狠狠色| 91打屁股视频网站| 91人妻人人操人人爽| 色婷婷av综合网| 色五月婷婷777| 极品人妻VIDEOSSS人妻| 色天堂婷婷| 婷婷狠狠操| av在线免费播放| 色五月五月天色婷婷色五月| 色婷丁香| 青柠影视免费高清电视剧| 亚洲激情在线| 丁香五月婷婷综合啪啪| 精品操逼一区二区| 九九色色色| 色情婷| 九九精品re免费视频| 日本久久色| 三男玩一女三A片| 99性爱视频| 99这里只有精| 色婷婷五月综合激情中文字幕| 夜夜爽77777妓女免费下载 | 亭亭玉立国色天香| 六月婷婷狠狠做| 精品色情一区二区三区四区| 日本五月视频| 婷婷色网站| 99视频久久| 婷婷五月天熟妇| 天插天啪天啪天啪| 夜夜大香蕉婷婷丁香| 一区视频网站| AA片在线观看视频在线播放| 五月婷免费视频| 欧洲精品爱爱| 五月天婷婷爱丁香中文字幕| 狠狠爱五月婷婷| 99九九在线| 91成人性爱视频| 丁香六月婷婷| 婷婷五月丁香欧洲| 涩五月丁香| 五月天激情小说欧美激情| 丁香五月婷老师| 久久综合干| 九九热免费视频| 色婷婷六月| 丁香五月婷婷影院| 白天AV月月| 天天综合亚洲| 成人片黄网站色大片免费毛片| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 丁香婷婷成人在线播放| AV操操操| 久热婷婷在线视频| 婷婷五月天影视网址| 日本激情五月天‘| 91Chinese在线| 99re在线免费视频| 五月丁香六月婷婷a v| 国产激情婷婷| 色五月婷婷777| 超碰99资源站| 婷婷色五月综合| 思思热在线精品视频| 99色婷婷视频| 五月天久久www| 99热6这里之有精品| 五月婷婷丁香社区| 色吧婷婷五月亚洲| 日韩无码人妻一区二区三区综合 | 麻豆精品| 激情五月www| 色情五月婷婷| 无码啪啪| 高清视频一区| 伊人玖玖婷婷| 狠狠插狠狠| 九九久久精品| 狼人久草| 丁香花色色网| 久久久.COM| 天天狠狠干| 久久99国产综合精品免费| 色色婷婷综合| 99福利视频| 九月丁香| 快乐激情五月色婷婷| 色婷婷五月天| 性热视频99精品| 五月婷婷色吧!| 久久五月丁香| 噜噜噜噜婷婷五月天| 久久久久久人妻| 99视频只有精品| 久久色情| 五月天精品| 色哟哟精品| 天天色噜| 99九九热在线观看| 婷婷综合久久| 丁香六月色香蕉视频| 97婷婷丁香| 激情久久婷婷| 草草操操| 久久之人妻| 色碰碰| 久婷久婷激情肉| 日本成人噜噜噜| 五月激情综合网婷婷| 婷婷五月丁香高清无码| 操一区| 色婷婷手机在线| 91黄址| 九九干视频| 亚洲中文乱字字幕在线永久| 91色操| 日日干日日| 色都都狠狠色都都色综合色| 狠狠色97| 婷婷久久久久久久| 久久婷婷老| 99热精地址| 97在线视频 欧美| 中文乱子伦视频| 五月天激情日色在线| 日本在线va| 黄页免费一级视频懂色| 久久ww| 五月天激情黄色小说在线观看| 六月丁丁香| 五月天婷婷情色| 欧美日朝成人| 天天天摸夜夜夜玩| 991国产精选视频在线播放下载| 武则天精品久久| 五月丁香六月久久| 大地9中文在线观看免费高清| 亚洲 无码 中文字幕 中出| 操操操B| 久久最新色色色| 超碰91在线| 欧美婷| 成人无码中文| 99这里只有精品视频| 亚洲成人网站在线| 久草热8精品视频在线观看| 久久婷婷视频| 伊人超碰在线| 99久久综合| 丁香五月六月欧美| 97色婷| 专区无日本视频高清8| 偷拍视频五月天| 午夜日韩久久久网站| AAA久久久| 怡红院院久久| 开心婷婷中文字慕| 色五月大香蕉婷婷| 无码 av电影| 久久婷婷五月| 国产一级婬片毛片| 精品久久二6| 色天使色综合| 日日干日日| 99精品视频网| 在热视频精品| 五月丁香 久久久| 123日本不卡在线| 欧美在线操| 天天干天天干天天干天天干天天干天天| 亚洲国产另类av| 五月丁香六月婷| 久久九九视频| 伊人五月天婷婷| 97av在线视频| 在线视频另类| 六月丁香婷婷综合狠狠爱夜夜爱| 99干免费视频| 久久久天堂国产精品女人| 丁香婷婷五月色成人网站| 亚州日本欧州韩美高青高潮一| 九九精品综合| 在线观看亚洲视频影院| 麻豆精品| 色五月婷婷91在线| 丁香深五月婷婷| 五月丁香激情综合网| 激情综合五月婷婷六月丁香| 久久99热精品a片在线观看| 99亚洲天堂| 97操操操| 日本精品人妻无码77777| 一起草性爱不卡视频| 国产六月婷婷| www婷婷| 99色.com| 婷婷爱五月| 色婷婷精| 丁香婷婷老司机久操| 五月丁香操婷逼| 99色1| 天天操天天爱天天日| 丁香玖玖| 国产av影片| 婷婷色色欧美| www.婷婷.com| 伊人久久99| 色婷婷综合成人| 黄页免费一级视频懂色| 久久免费丁香| 好看的国产精品| 懂色av粉嫩av蜜臀av| 免费看欧美成人A片无码| 色婷婷丁香五月| 色婷婷久久| 99久热在线精品| 五月丁香在线| 狠狠色丁香| 超碰99在线观看| 丁香九月综合| 激情综合色| 99在线精品视频| 色综合久| 嫩草AV久久伊人妇女超级A| 五月丁香综合激情| 七月丁香五月婷婷在线| av五月丁香| 天色色综合网| 99色天堂| 激情WWW| 狠狠狠狠狠狠狠狠草| 色情五月天se| 妻久久人久久| 天天色播| 婷婷五月激情基地| 97色永久免费视频| 久久杏爱视频| 丁香五月色| 色五月婷婷91| 国产精品人成A片一区二区| 丁香激情网| 色五月丁香91| 2016日日夜夜操| aa久久| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 五月丁香在线看| 色丁香五月| 9有码中文| 第五色婷婷| 亚洲欧洲另类图片| 亚洲操逼网| 欧美日综合| 欧美日韩成人在线| 色婷婷色五月天| 丁香婷婷激情| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 亚洲色在线观看| 丁香色色网| 欧美97超碰| 99在线视频观看| 激情五月天婷婷色色色色色色色色色色色| 成久综合视频| 丁香五月激情网| 六月丁香婷| 日本久碰| xxx综合在线| WWW免费视频碰碰碰碰| 色五月综合网| 久久婷婷网| 五月婷婷精品视频| 色99在线视频| 色五月婷婷自拍| 天干干夜夜操| 婷婷丁香人妻天天爽| 久久综合五月情| 玖玖国产视频一区| 亚洲成人中心| 久久久潮喷-久久久九九-成人AV| 五月天天天综合| 26uuu亚洲| 99日本精品视频热| 日韩综合久| 婷婷中文字幕版| 婷婷丁香五另类网站| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 性99网站| 日本操天堂| 色情五月综合婷婷| 97中文在线| 丁香五月激情啪啪啪| 丁香婷婷丁香五月欧美人| 亚洲啪啪网| 丁香婷婷狠狠97| 天天色情站| 99热最新精品| 91婷色| 深爱激情丁香| www99xxxx五月丁| 日韩成人网站精品久久大全| 120分钟婬片免费看| www.综合久久.com| 五月天激情四射网站| 五月丁香 狠狠爱| 五月天色色色| se99视频| 5月婷婷视频网站综合| 午夜成人天堂久久无码日韩久久| 99热人人艹| 激情5月婷婷狠狠干| 婷婷丁香小说| 色婷婷超碰| 日日干天天| 超碰A V在线| 欧美噜一噜| 天天干天天爽| 精品99只有。| 五月色婷婷夜色| dingxiangtingtingliuyue| 欧美槡BBBB槡BBB少妇| 五月丁香视频在线观看| 中文成人在线| 婷婷丁香五月亚洲| 久久综合影院| 激情五月婷婷| www.狠狠干| 丰满少妇猛烈A片免费看观看| 久久婷婷五| 五月丁香淫淫婷婷婷| 五月婷九月| 99精品免费欧美小视频 | 99国产这里只有精品| 99热伊人综合| 97精品在线| 久热 91| 亚洲第一第二网站| 九九视频精品视频精品| 丁香五月色色婷| 色五月婷婷在线观看| 亚洲天堂婷婷| 91.com男女操| 色综合色欲综合天天免费| 成人做爰A片免费看网站找不到了| 九九婷婷五月天影视| 五月婷婷 激情按摩| 欧洲日韩一区二区三区| 久久香视频| 色在线99| 狠狠色丁香婷婷综合久久97AV| 黄色激情网站在线观看| 91碰| 九九色99| 秋霞成人毛片一级A片| 久久五月天婷婷| 秋霞簧片| 色婷婷888| 色色丁香| 五月激情六月婷婷| 五月丁香六月色婷婷综合五月天| 超碰熟女农村在线69| 偷拍91九色| 琪琪理论片| 色婷婷久久9.com| 色五月婷婷五月天激情综合| 超碰在线视屏| 婷婷9月天| 丁香五月中文字幕| 五月丁香激情在线| 视频综合网| www.婷婷五月天,com| 久久丁香| 婷婷爱五月| 婷婷五月天涩涩| 六月婷婷色综合| 婷婷色网站| 综合色播| 99干99| 影音先锋91网站在线观看| 操九色| av在线色五月丁香婷区久| 丁香五月婷婷偷拍| 午夜天堂一区人妻| 欧美激情综合| 久9免费视频| 狠狠色激情综合| 六月99天天婷婷激情综合| 在线超碰免费| 野战J办公桌椅H| 啪啪99| 婷婷五月天激情五月天| 五月婷婷香蕉| 97丁香花五月天激情小说| 激情色情五月天| 欧美顶级少妇做爰HD| 成人网址在线观看| 国产精品国产| 综合色播| 五月丁香婷色| 色色99色色| 综合啪啪| a在线观看| 五月天操逼激情| 色婷婷久久| 丁香婷婷色色| 五月丁香六月情亚洲| 69热在线| 六月婷婷之青青草| 在线区区区| www久久99| 99啪99| 亚洲 成人 电影av在线观看| 91日综合欧美| 超碰99热在线观看| 色婷狠狠| 欧美激情伊人| 亚洲色婷婷五月天| 熟女91九色| 婷婷久久在线| 啪啪操操| 色综合久久88色综合天天| 婷婷五月在线影院| 九九99精品| 五月丁香亚洲综合| 爽天天天天天天天| 丁香六月啪| 色色丁香五月天| 97碰在线| 桃色五月天| 五月天狠狠| 五月天婷婷在线视频| 99热手机在线精品| 国产亚洲99久久精品| 中文字幕黄色片| 少妇综合网| 色人久久| 丁香五月婷婷影视先锋| 成年视频免费观看| 激情五月天色网站| 五月天婷婷av| 婷婷六月丁香色| 色婷婷a三区麻| 亚洲色综合性| 激情六月婷婷| 亚洲色在线观看| 婷婷五月色| 国产亚洲精品久久久久久久久动漫 | 五月天婷婷影院| 日韩色色色色| 3p久久| 99综合在线| 久久这里只有精彩| 伊人婷婷五月天av| 婷婷五月图片小说视频| www.色综合| 国产毛多水多女人A片| 五月天激情小说| 欧美性生交XXXXX无码小说| 91男人资源站| 97av在线视频| 99热这里只有精品官网| 青草五月天| 级情九色| 色五月在线综合| 色色色综合色| 五月色丁香激情| 亚洲色 视频| 99在线精品视频| 国产精产国品一二三在观看| 91丨九色丨老农村| 人人干99| 五月婷婷色吧!| 原琪琪色影院| 色情网综合| 婷婷五月色图| 天天干天天操天天爱| 激情五月婷| 激情五月婷婷| 色婷婷综合网| 国产成人亚洲综合A∨婷婷| 91碰碰视频| 天天碰夜夜操| 99re热精品在线视频| 九九视频这里有精品| 五月婷婷六月丁香综合在线| 99色.com| 色婷婷狠狠久久综合五月| Va另类视频| 综合久久综合久久| 婷婷伊人綜合中文| 五月总合激情网| 99视频在线观看欧| 9l视频自拍9l视频自拍九色学生| 91干婷婷| 69精品人妻不卡视频| 九月丁香| 婷婷丁香人妻天天爽| 久久婷婷五月综合| 日韩高清久久| 99精品福利视频| 国产乱妇无乱码大黄AA片| 婷婷五月天综合网| 另类视在线| 91美女啪啪| 婷婷丁香成人网址| 激情五月综合网| 9久久精品| 五月天激情综合| 婷婷五月丁香四射| 另类小说五月天激情| 色婷婷六月| 五月丁香六月成人| 99热在线精品播放| 婷婷伊人综合中文字幕| 丁香五月在线自慰| 久久综合中文字幕| 大香蕉久久婷婷| 一本色道久久综合狠狠躁小说| 狼人婷婷综合| 婷婷五月天堂| 99久久综合网| 色五月激情五月| 九九婷婷综合| 超碰成人电影| 久久婷婷色| 天天干夜晚夜操| 国产99久久久国产精品免费看| 五月天激情站| 中文字幕日产A片在线看| 久久66er久久| 欧美顶级少妇做爰HD| 婷婷六月丁香久| 天天色色婷婷| 日本97人人| 婷婷丁香人妻天天久久| 888久久久| 九九在线精点品| 91色色色视频| 狠狠色成人影片| 狠狠色五月| 五月婷婷综合激情网| 在线播放成人| 日本啪啪网| 精品久热| 久久婷婷五月综合| 99.色| www.久操| 激情网开心网| 色色五月天com| 丁香久久综合| 国产99精品免费视频| 少妇水多A片太爽了| 99高级会所久久| 香蕉久久国产AV一区二区| 成人网丁香五月| 国産精品| 色综合久久伊伊婷婷五月| 五月丁香婷婷伊人| 九热视频在线精品15| 欧美婷婷| 99视频免费播放| 五月丁香五月综合欧美| 丁香色五月婷婷17C| 亚洲乱码日产精品BD| 亚洲bt丁香五月天婷婷激情小说| 五月丁香花激情综合网| 无码免费人妻A片AAA毛片西瓜| 电影蜘蛛女| 综合久久五月| 九九视频这里只有精品| 五月天婷婷丁香社区| 大香蕉五月天婷婷丁香91| 九九Av| 激情VA视频| 99久久婷婷国产综合精品青桔| 欧美日韩精品人妻狠狠躁免费视频| 日韩在线aaa| 亚洲乱码在线观看| 色综合激情图区| 久久六月天| 蜜桃婷婷五月| 国产免费av在线| 99热都是精品| 综合五月丁香六月婷婷| 亚洲精品成人| 激情碰碰碰| 婷婷五月天激情网| 夜丁香五月婷婷| 9l视频自拍九色9l视频在线观看| 亚洲精品久久久久AV无码| 五月天播播| 五月天婷婷丁香蜜桃91| 日韩成人综合网| 五月激情婷婷在线| 五月丁香婷婷综合| 日日艹思思热| 婷婷五月天综合激情| 黄色aa观看aaguochan| 久久9视频| 能看的av网站| 337午夜福利| 天天爽天天爽夜夜爽| 丁香花大香蕉婷婷综合| 久久久97| 欧美内射AA| 狠狠干五月天| jiqingliuyuetian| 婷婷五月天com| 99热这里只有精品66| 天天操天天日天天爱| 激情性五月天免费小说视频| 色婷婷五月六月丁香综合视频| Caop在线| 狠狠色丁香婷婷| 超碰av在| 成人无码精品1区2区3区免费看| 69精品人人人人| 性热视频99精品| 麻豆123区| 亚洲综合新99视频| 久久九九免费大视频| 亚洲精品视频在线播放| 久久久久久久久99精品| 久操干| 91欧美日韩| 欧美 色婷婷| 99久久人妻精品无码二区| 色色色热热热| 综合色播| 亚洲日韩乱码一区二区三区四区 | 丁香九月综合在线| 丁香花五月天社区| 丁香五月天影院| 一本到不卡高清DVD| 国产成人AV不卡| 天堂伊人干| 五月丁香激情综合网| 欧美日韩91| 婷婷五月天网| 人妻熟人中文字幕一区二区| 亚洲第一成人无码A片| 国产精产国品一二三在观看| 午夜精品久久久久久久爽| 欧美成人AAA片一区国产精品| 内射在线CHINESE| www。久久久久一b。Cc| 天天肏视奸| 99久久色| 色碰碰视频| 欧洲激情网站| 丁香五月婷婷精品视频| 亚洲天天综合| 播五月丁香三月婷婷| 中文字幕精品在线观看| 狠狠干无码| 四LLL少妇BBBB槡BBBB| 狠狠婷婷色| 亚洲国产网站| 国产91视频| 色色色综合视频| 五月婷婷六月激情网| www激情五月天| 久婷五月| 精品婷婷| 嫩草视频。| 五月天色色婷婷| 99re99热| 丁香五月区| 色五月中文网| 婷婷久久色| 东京热五月婷婷| 久xxxx| 丁香五月天信号| 99热20| 可以直接看的av| 99视频在线精品| 懂色av粉嫩AV蜜臀AV| 狠狠爱激情网| 狠狠色婷婷7| 婷婷综合精品视频97| 九九青青草成人| 日韩一区二区A片免费观看| 婷婷久久图片| 97碰碰人人| 天天成人综合视频| 黄色五月婷婷| 在线看AV| 天天拍夜夜撸| 婷婷九月在线| co超碰在线观看| 丁香激情网| 五月婷婷五月天亚洲无码| 另类视频综合| 国产探花一片区| 六月激情久久婷婷| 五月丁香自拍| 狠狠色中色| 亚洲色色图片| 国产26uuu| 国产av天堂| 久青操| 热99只有里视频| 免费观看的av| 90色免费视频| 丁香婷婷丁香五月欧美人| 色五月欧美| 91大屁股在线| 狠狠干总合| 综合久久99| 六月色激情| av中文网站| 欧美搡BBBBB摔BBBBB| 欧美精品99| 五月综合激情视频在线| 七月婷婷色香综合网| 精品国产va久久久久| 六月丁香综合| 免費观看aV在线网址| 思思热在线视频观看精品| 1024国产| www.射伊蕉婷婷| 99久久综合| 婷婷情色激情| 99re6在线视频精品免费| 激情欧美婷婷| 国产亚洲99久久精品| 任你擦免费视频| 夜夜躁爽日日| 97婷婷丁香五月天激情图片| 亚洲 精品 综合 精品| 五月婷婷av| 丁香五月综合| 99热这里只有精品2| 五月丁香啪啪综合| 九九人人精品| 99玖玖在线视频| 色综合五月天| 99热免费精品| 久久久久久久97| 一月婷婷色色| 9久视频| 亚洲欧美成人在线| 久月婷婷| a色色片| 久久激情视频| 婷婷六月丁香1| 精品久久久久成人码免费动漫| 婷婷黄色| 欧美日韩aaa| 99精品色色| 亚洲亚洲人成综合网络| 欧美群妇大交乱婬网| 婷婷色五月丁香六月欧美啪| 综合丁香婷婷五月天| 激情婷婷| 99热这里只有精品23| 男人大jjc女人免费视频| 五月婷婷我| 婷婷丁香五月天大香蕉| 俺去也五月| 99热综合在线| 色综合五月天| 丁香五月天五码婷婷| 欧美成综合在线观看| 婷婷五月天六月丁香| 色月九九| 亚洲精品久久久久AV无码| 日日操,天天操| 5五月综合网亚洲| 丁香激情久久| 婷婷综合五月激情| 国产精品黑丝| 91精品在线看| 丁香五月98| 亚洲久艹| 五月丁香成人网| 婷婷开心激情综合五月天| 久久综合五月婷婷| 99综合视频| 亚洲乱码成人| 欧美日韩国产伦精品日韩人妻一| www.minyis.com【JT】实力收量可预付QQ2101460746 | 99色啊| 9l视频自拍九色9l黑人| 一起草无码| 99在线观看| 97日本在线播放| 91黄操| 九九这里精品| 无码碰碰| 99免费| 五月丁查人人| 日韩一区二区在线播放| 怡春院天天干| 六月婷婷激情| www.五月天婷婷| www.激情在线| 五月激情婷婷国产精品久久久久久| 丁香五月av| 天天日天天草| 久色姿源| 五月丁香性爱| 99色在线观看视频者| 激情久久久久久| 亚洲AV成人无码久久精品老人法拉利| 99免费热视频在线| 亚洲日比视频| 色婷婷基地| 九九99热| 99精品免费欧美小视频 | 婷婷六月天天| 日本三级99人妇网站| 九九热只有精品| 夜夜操夜夜操| 五月婷婷精品视频| 五月婷色| 99ri精品在线| 久久综合久色欧美综合狠狠| 九九色图| 日本五月天网站| 五月丁香激情婷婷综合| 人人爽在线视频综合网| 亚洲人妻Av| 久草五月婷| 日本一级黄色片。| 亚洲激情av| 色综合婷婷| 99成人在线观看| 午夜婷婷五月天| 伊人成人宗合网| 久久视这里只有精品| 久操福利| 日本黄色在线观看| 91传媒无码人妻精| 91嫩草国产线观看亚洲一区二区| 亚洲激情综合| 亚洲人人操| 99re这里只有| 91色情播放| 色综合综合色| 成久综合视频| 九九色热| 殴美日比视频| 欧美色偷偷大香| 日本三级99人妇网站| 亚洲春色奇米影视| 99在线观看| 91无码视频| 久久网日本| 91午夜激情| 99热在这里只有精品| 欧美丁香五月| 99热99热在线| 九九这里有精品| 婷婷五月激情丁香| 99热思思| www.色色五月天.com| 国产成人AV在线播放| 9久热这里只有精品| 天天操,夜夜骑| 亚洲激情精品| 婷婷天天色| 五月婷婷亚洲色视频| 26uuu成人网| www.婷婷六月天| 91成人电影| 大香蕉五月天| 五月婷婷丁香| 乱精品一区字幕二区| 免费视频WWW在线观看网站| 乱精品一区字幕二区| 五月激情丁香啪啪| www网站在线观看| 在线成人视频免费| 婷婷综合精品| www.minyis.com【JT】实力收量可预付TG@LXSPSW8 | 97精品人人A片免费看| 五月丁久久| 少妇AB又爽又紧无码网站| 97超碰免费超级在线观看| 香蕉曰比| 久久hd| 四月婷婷五月色综合| 色五月av伊人| 另类五月激情| 日本熟妇精品99| 激情五月激情综合网| 97色 五月天丁香| 97久久久免费福利网址| 91操熟女| 婷婷五月天99| 99爱视频| 婷婷五月花| 亚洲黄色网址| 91婷婷伊人牛牛| 丁香六月av| 激情欧美五月丁香| 能直接看的av网站| 五月丁香成人网| 97爱艹婷婷开心丁香激情综合| 国产性av| 4399人妻无码久久久| av成人在线播放| 六月婷婷天天操夜夜爽视频| 日日操,夜夜爽| 色综合久久中文| 国产人妻777人伦精品HD| 4399在线观看免费高清毛片| 综合色图区| 婷婷五月中文字幕国产| 亚洲天堂啪啪| 国产性av| 欧美日韩99| 99热这里只有免费| 91五月天| 久久久色情| 婷婷五月综合色中文字幕| 99热九九热| 五月激情啪啪| 久艹大香蕉| www激情网| 久久ww| 婷婷中文综合网| 激情欧美婷五月| 国产 码在线成人网站| 9 1大香蕉| 欧洲综合色| 成人视频网| 快乐婷婷五月天| 丁香五月婷婷激情网| 色综合久久综合| 精品色色色| 日本精品人妻无码77777| 丁香五月激情六月欧亚激情综合导航| 五月婷婷丁香婷婷| 五月婷婷激情啪啪| 天天碰天天插天天操| 思思热视频| 永久天堂日本| 少妇久久诱惑视频| 婷婷狠狠干| 亚洲秘 无码一区二区三区妃光/1| 精品99网站| 激情五月影院| www.99婷婷| 免费亚洲婷婷五月| 亚洲午夜国产成人电影VA国产欧…| 色欲色天天香综合| 噜噜视频| 99视频这里有精品| 六月丁香婷婷综合狠狠爱夜夜爱| 色99热| 婷婷五月在线影院| 亚洲色爽| 天天综合网站| 丁香九月婷婷| 色婷婷小说| 色女人久久| 日韩在线观看亚洲| 色婷婷香蕉丁丁网| 极品五月天| www.色多多婷| eeuss人妻| 99在线观看| 五月天激情综合网| 六月婷婷在线| www九九免费视频| 婷婷六月中文字幕| 婷婷精品免费久久| AV操逼网| 91精品久久久久| 丁香五月色色| 99综合免费视频| 久久99精品视频| www.99色| 美女va| 五月婷婷五月天| 五月婷婷开心激情六月蜜桃| 精品亚洲国产成AV人片传媒| 婷婷五月天.com| 天天射影院| 99热99在线| 99婷婷| 九九亚洲小视频| 久久九久久| 情久久综合五月天| 五月婷婷激情日本| 亚洲婷婷91丁香| 久久天堂色| 超碰三级片| 日本久久网| 极品少妇XXXX精品少妇偷拍| 色色丁香五月婷婷| www.99免费视频| 高清无码视频网址| 噜噜噜色噜噜| 狠狠情色| 99爱精品| www.婷婷五月| 久久永久网址| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 天天天天操| 亚洲天码视频www蛋播视频| 99在线视频色版| 欧美激情性做爰免费视频| 亚洲欧美999| 精品久热| 伊人喵咪a V| 色情五月综合婷婷| 天天干夜夜欢| 狼友视频在线观看18| 亚洲九N| 玖玖在线视| 内射激情在线| 棕合影院色色| 超碰婷婷色| 久久久久9| 丁香六月五月婷婷| 人妻性爱av网站| 人妻在线网站| 夜夜爽77777妓女免费下载 | 免费视频WWW在线观看网站| 日本va欧美va国产激情| 亚洲精品操一操、噜一噜、摸一摸、爽 | 青吴乐视频| 久久久免费精彩视频| 色久天| 五月激情开心婷婷| 大香蕉五月婷婷| 国产原创视频91九色| 久久99视频| 色色色五月婷| 人妻自慰高清合集| 激情综合5月| 啪啪操超碰| 91大屁股在线| 婷婷99狠狠躁天天躁| 五月婷婷深深爱| 欧美激情凹凸丁香网| 色热久资源| 啪啪 综合网| 3DAV亚洲香蕉久久 一区二区| 色综合色综合网| 色色激情网| 79精品视频在线观看,| 五月丁花色综合网| 天天爽在线视频| 六月丁香婷婷综合狠狠爱夜夜爱| 无码字幕中文| 9色91视频| 中文字幕 码精品视频网站| 91人人操人人| 婷婷五月天小说| 丁香涩涩爱| av免费人人| 五月噜噜| 亚洲色情激情丁香五月| 久鲁鲁色网| 狠狠爱综合网| 久久婷婷91| 91互操| 婷婷伊人75| 成人在线高清| 久久国产AV| 欧美色偷偷大香| 日韩人妻在线播放| 婷婷丁香熟女| 苗黎美女四级成人版一级二级毛片| 丁香五月性| 我爱大香蕉| 九九热AV| 99综合免费视频| 激情综合网五月婷婷| 丁香五月婷久久| 久久久18| 九九黄色网| 亚洲色频| 激情综合色| 成AV人片一区二区三区久久| 丁香五月激情网| 丁香五月社区| 亚洲国产无线乱码在线观看| 99re在线播放| 日本少妇裸体做爰高潮片| 99在线精品免费视频| 中文字幕免费高清电视剧| 三十熟女| 久久受www免费人成| 97婷婷五月| www色婷婷com| 久99久在线观看| 亚洲中文av| 丁香五月天偷拍| 亚洲激情99| 丁香五月婷婷乱| 丁香五月婷婷色| 激情五月婷婷五月| 色情久久久| 丁香五月天电影| 午夜天堂一区人妻| 色婷婷很很丝袜| 欧美123区免| 91久久精品无码一区二区三区| 97狠狠色| 欧美成人无码一区二区三区| 欧美综合丁香网| 五月婷婷 激情五月| 噜噜狠狠色综合久| 婷婷婷婷色| 色色欧美色色| 五月丁香婷色| 亚洲人妻AV| 婷婷六月天精品| www天天色天天射| 婷婷色在线观看| 日本不卡高字幕在线2019| 91a片爽| 人人操人人操919999| 26uuu色噜噜精品一区| 26uuu另类| www.maotanji.com| 婷婷五月成人| 伊人激情网| 亚洲天堂久久| 丁香六月毛片| 婷婷内射视频在线| 八戒青柠影视剧在线观看| 人妻视频一区而且二区| 最新av在线观看| 很很干在线视频| 狠狠色成人影片| www.夜夜| 五月天激情黄色网址| 99成人网一区| 婷婷丁香五月亚洲综合网在线视频观看| 婷婷综合五月| 99国产精品久久久久久久久久久| www99xxxx五月丁| 思思热闹这里只有精品 | 久久女婷| 亚洲日比视频| 五月丁香| 丁香五月综合AV在线| 99热这里只有精| 影音先锋91视频| 99综合色色色| 激情五月天网| 久久精品国产AV一区二区三区 | 伊人成人宗合网| 熟妇人妻中文字幕无码老熟妇| 五月综合精品| 91狠狠色色丁香婷婷综合久久| 亚洲妇女熟BBW| 欧美色色色色色色色| 婷婷五月天综合中文| 人人爱国产| 色原狠狠综合| 激情五月天啪啪| 一本久道综合色婷婷五月| 97色一二三| 多精窝99在线视频| 在线中文字幕av| 久久日曰| 提提热五月天婷婷| 色婷婷狠狠| 啪色综合| www、色色色| 欧美丰满熟妇BBB久久久| 日本不卡中文字幕| 婷婷色五月天在线| 狠狠色综合五月人人| www.minyis.com【JT】实力收量可预付TG@LXSPSW8 | 精品亚洲国产成AV人片传媒| 91碰碰碰| 4399亚洲视频| yiqicaoav| 激情综合色| 欧美精品中文字幕亚洲专区| 五月天激情四射| 欧美在线97| 99在线热视频| 欧美日韩AAAA| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 婷婷五月色| 99啪在线视频| 五月丁香婷爱在线| 中国无码av| 中国AV性爱观看| 国产成人网| 开心五月激情| 99视频只有精品| 丁香五月婷婷狠狠色| 97在线精品视频| 91精品综合久久婷婷九色| 激情五月久久| 9 1在线视频| 五月天综合视频| 五月色丁香婷婷综合| AV五月婷婷露脸| 91n啪啪| 五月婷婷激情四月| 91人人爱| 色婷婷丁香五月天| 中文超碰视在线| A网在线欧洲| 久久丁香婷| 丁香五月婷婷六月| 激情骚五月| 五月婷视频在线| 久久久久久99精品无码| 六月婷婷色色色| 色婷婷操逼| 丁香桃色网| 加勒比色色| 九九九干精品| 夜夜撸天天操| 中文字幕av亚洲|