欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,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
返回資訊列表
九九亚洲| WWW.开心五月天.COM| 成人精品免费在线观看| 第五婷婷伊人丁香| 99综合免费视频| 色九月| 7EzOBIhNq85TO| 成人美女网| 天堂久热| 91久久99久久91熟女精品| 日韩色色小视频| 六月丁香婷婷网| 婷婷丁香五月亚洲综合网在线视频观看| 99成人免费热视频| 欧美婷婷综合| 碰人人97| 成人av中文字幕| 成人做爰A片免费看网站找不到了| 操笔无码| 九九色图| 曰韩少妇内射免费播放| 任你擦免费视频| 五月天色色激情综合| 南京搡BBBB搡BBBB| 五月天婷婷综合| 久热欧美| 九九99九九精品免费| 色五月婷婷91在线| 久久久久久久久久久久久久人妻视频| 黄页大全十八禁| 五月天激情网图片| 成人在线观看国产| 9久久久| 天天日天天插天天操| 99热这里只有精品最新| 99只有精品| www超碰com| 一区二区免费看| 狠狠干天天内射| 青青草搞屄视频网站| 天天爽日日爽夜夜爽| 99热这里| 天天射网站| 五月丁香狠狠爱婷婷综合| AV在线观看网站| 五月天婷婷乱| 五月丁香婷婷综合网| 99久久婷婷国产综合亚洲| 91九色精品女同系列| 五月丁香激情五月天| www.狠狠艹| 91久久电影| 亚州色色色| 第四色色色色色丁香五月天| 另类图片激情五月天| 无码区婷婷五月花开| 日本色色网| 日韩AV中文字幕在线| 亚洲婷婷视频| 9久久久久久久久久久| 乱岳熟女50岁| j久久性爱视频| 五月天激情无码| 超碰国产在线| 色婷婷导航| 狠狠操婷婷| 97人人操人人干| 五月婷婷偷拍| 亚洲天堂色| 欧洲一区二区| 天天摸天天舔| 五月丁香综合网| 天天日综合网射| 婷婷六月天天| 99惹 精品在线| 开心婷婷中文字慕| 婷婷丁香熟妇综合网| 大香人妻| 丁香五月精品| 五月停视频天堂| 99re这里只有精品9| 夜夜撸日日操| 欧美123区免| 五月丁香久久久日婷婷久久婷婷日| 婷婷五月综合社区| 亚洲综合欧美色丁香婷婷888月图片| 色婷婷中文字母五月丁香| 99爱视频| 九九色之九九色之88| 国产成人+亚洲+欧洲| 婷婷五月天在线观看| 97男人天堂| 夜夜骑日日操| 亚洲欧美成人在线| 日日夜夜狠狠婷婷色| 久re热视频| 欧美激情 日韩无码 婷婷 五月天| 久热这里只有精品99re,久热这里只有精品7| 丁香色五月天| 99热伊人| 婷婷成人五月天| 色色色色色色色色五月先| 六月丁香婷啪射| 婷婷开心激情| 成人深爱丁香五月| 色婷婷电影| 综合色99| 亚韩在线视频| 久操大香蕉| 色婷婷88| 亚洲精品字幕在线观看| 丁香六月婷婷综合色| 天天摸天天肏| 亚洲午夜AV| 日韩啪| 超碰无码老师| 婷婷丁香五月激情| 丁香 久久| 天天日天天摸| 日韩AV片| 四色永久成人网站| 综合久久婷婷五月丁香| 国产精品99久久久久久久女警| 99啪视频在线观看| 综合网啪| 婷婷第一页| 五月天最新网| 五月丁香最新| 超碰在线精品| 久久综合这里只有精品1| 可以直接看的AV| 五月丁欧美| www.狠狠| 日韩无码人妻一区二区三区综合| 色婷久久| 婷婷五月噜噜| 久久性操| 丁香五月Av| 一本久道综合99| 国产成人99久久亚洲综合精品| 五月视频日本免费观看| 六月丁香婷婷尤物| 99在线精品免费视频| 欧美日韩国产一二区| 色五月色五天色情网| 91欧美日韩综合| 中文字幕成人| 影音先锋91网站在线观看| 婷婷日韩| 噜噜狠狠色综合久| 五月丁香爱婷婷深深| 综合色99| 天天在线久久综合| 91久久日日| 俺去也五月天婷婷| 色婷婷丁香五月天| 婷婷激情久久| 9999三级片| 激情文学 综合 色| 色吧网综合| 色婷婷偷拍| 日本久久精品| 六月丁香五月婷婷| www.狠狠艹| 日韩 中文 欧美| 国产激情综合五月久久| 亚洲国产成人裸舞| 亚洲在线资源| 色www久视频| 91干在线| 色婷婷狠狠| 婷婷爱五月天人人爱| 97涩婷婷婷婷基地| 99热这里只有精品青草| 婷婷五月丁香久久| 五月丁香啪啪啪啪| 国产干逼片| 99精彩视频| 婷婷综合五月| 天天久久婷婷| 99热官网| 色永久| 99视频在线播放大全| 婷婷色在线| 激情小说视频图片网| 久久久久久9| 五月丁香亭亭| 激情五月天啪啪| 2025中文在线视频字幕免费观看| 欧洲S级在线观看| www久| 天天色天天爱天天爱天天爱y| 91九色欧美| 婷婷五月花| 激情深爱五月| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 婷婷六月激情综合| 俺去也五月天| 91九色欧美| 五月婷婷色播网| 日本97久久久精品| 日韩国产在线精品| 激情五月综合| www.yw色| 国产精品日韩十五区| 色九月| 五月丁香在线看| 中文精品久久久久人妻不| 色婷青青| www.婷婷| 亚洲成人在线免费| 天天干天天日天天操| 婷婷的五月天另类视频| 五月婷色色| 熟妇国产| 99精品国产在热久久| 日本一级一片免费视频| 五月亭亭六月天| 色五月丁香总合网| 九九热黄色| 久99久视频精品| 六月婷婷久久| 五月天 无码| 五月婷人妻| 婷色五月天| 秋霞网在线免费基地五月婷婷丁香| 91久久久久久久久18| 91九色中文| 丁香五月色情| 丁香五月激情六月综合| 这里只精品| 婷婷狠狠18禁久久| caopeng97人人| 久热大香蕉| 亭亭色网| 狠狠干综合网| 激情五月天综合网| 人人爽天天爽| 五月婷婷丁香社区| 狠狠五月天激情| 丁香六月亚洲| 77799热| 99九九久久| 39视频第二区| 国产操逼视频网站| 久久久噜噜噜操操操| 国产在线aaa片一区二区99| 狠狠丁香| 大香蕉人妻| 激情四射网| 9 1在线视频| 超碰人人摸AV| 99在线看视频| 日日干四虎| 婷婷激情五月| 欧美黑人巨大性生话| 亚洲热综合| 天天插天天爽| 天天天天干| 亚洲另类噜噜| 国产激情婷婷| 天天干天天插| 色婷另类| 玖玖爱综合网| 久久九区| 狠狠干狠狠色| 欧美色五月| 99re思思久久| 亚洲乱码w在线观看| 婷婷99狠狠躁| 超碰不卡在线| 久久久www| 九色视频91疯狂| 色婷婷a| 99性爱视频| 66成人网| 黄色三级日本| 丁香婷婷五月天激情四射| 99精品综合视频| 婷婷五月色亚洲| 久久这里99| 巴基斯坦粉嫰无码视频| 99热只有精| 亚洲精品国产精品乱码不99| 国产色色色色| 久久伦乱| www.夜夜操.com| 色婷婷六月天| 色婷婷电影网| 丁香婷婷五月份| 色五月丁香五| 色呦呦在线| 久久99三级在线视频| 日韩在线成人电影| 欧美久热| 久久99久久99精品免视看婷婷| 五月丁香六月色婷婷| 婷婷丁香五月天狠狠| 激情婷婷五月天在线观看| 99热日韩| 激情小说五月丁香在线视频观看视频| 成人看片网站| 天天做天天视天天谢| 99r久久这里只有精品| 亚洲婷婷丁香五月亚洲| 国产色色色色| 人人播| 五月婷啪| 国产成人精品一区二三区熟女在线| 色综合色| 97久久精品视频| 色婷婷色| 国产伦理精品高清在线观看网站一区二区| 五月丁香婷婷激情在线| 天天色视频| 亚洲国产成人综合| 日本视频不卡123区| 日韩人人操| 大香蕉Av在线| 亚洲AV激情五月综合网| 色综合色综合色综合色综合| 深爱开心激情| 免费色婷婷| 99九九在线视频| 色情性爱视频网址| 久热这里只有精品99re| 色五月综合在线| 97人人草| 91啦丨九色丨刺激中文| 97色色-99久久| 麻豆五月丁香婷婷| 草草操操| 五月丁香婷婷激情图片| www.99热| 欧美日韩AAAA| 亚洲中文字幕av| 国产九月婷婷| 九九视频这里是精品五月| 婷婷激情五月天视频在线| 五月丁香色综合| www.狠狠操| 婷婷丁香五月基地| peg 2区三区四区的| 欧美成人精品老美女噜噜噜| 精品久久99码| 日本一区二区三区精品视频| 入口五月婷婷六月香| 人人爽亚洲| 99热手机在线精品| 激情国产综合| 五月丁香成人| 婷婷在线精品| 9999热精品| AV伊人青草丁香六月| 亚洲精品国产精品乱码不99| www.狠狠干com| 91丨九色丨丰满人妖| 久久综合九九| 日本久久天堂| 色丁香五月| 丁香五月大香蕉| 秋霞丝袜啪啪啪| 婷婷五月综合欧美在线播放| 色婷婷成人网| 婷婷成人av| 婷婷丁香六月综合激情站| 婷婷夜夜操| www超碰| 五月天大香蕉视频| 五月永久激情| 开心五月天激情网| 先锋资源91| 婷婷综合成人五月天| 狠狠爱激情网| 五月叮香啪| 狠狠色婷婷丁香六月| 五月天久久婷婷| 亚洲综合色激情色五月| 丁香五月日本| 国产成人网站在线观看| 99在线视频精品| 天天操狠狠操| 精品一二三区久久AAA片| 99日本精品视频热| 久9无码视频| 婷久久久| 日韩AV色色色| 这里只有精品免费| 99九九精品| 精品色色| 丁香五月天堂网AV| 久久性爱视频这里只有精品| 在线看九一V图片| 中文字幕在线aⅴ免费观看| 成人日韩欧美| 91操人视频| 五月婷婷日本| 五月丁香六月天| 五月婷婷先锋| 婷婷五月精品中文字幕| 久久人妻超碰一区| 婷婷 亚洲图片 丁香| 99热在线观看免费精品| 婷婷伊人中文字幕| 五月婷婷丁香综合| 日本在线视频www色| 性生活久久朋友人妻| 国产SUV精品一区二区883| 亚洲色啪| 久久久婷| 丁香五月婷婷深五月| 久色网址| 第四色激情网| 99热超碰在线| 五月天激情四射| 成人在线精品| 成片免费观看视频大全| 婷婷五月情| 日本69日人视频| 猫咪伊人久久| 色婷婷五月在线| 五月婷婷真爱激情网| 综合另类激情| 夜夜操天天干| 狠狠情色| 五月天激情久久| 综合一区二区三区| WWW.99热| 五月丁香日本片| 婷婷五月激情综合| 五月色无码| 狠狠精品干练久久久无码中文字幕| 五月丁香婷婷综合在线| 欧美大肥婆大肥BBBBB| WWW夜夜| 亚洲视频在线观看| 开心五月婷婷在线| 超级碰人人操人人干| 人人视频色| 黄色91在线观看| 婷婷五月激情六月| 亚洲AV网址| 91色色色| 亚洲欧美日韩另类| 亚洲五月婷婷| 97久久久久| 69精品人人人人| 激情综合五月激情17| 97色婷| 色婷婷丁香五月天在线视频| www.丁香黄色五月天人与| ss视频xx91| 色婷婷玖玖影院| 99热精品在线观看| 秋霞免费三级片| 大香蕉综合网| 丁香五月婷婷激情蜜桃| 另类激情码| 国产超碰在线| 99热精品综合| 九热电影av| 99日本在线| 亚洲va欧美| 202丰满熟女妇大| 欧美性丁香色色五月天| 99热 在线播放| 久久精品4| 天天日天天插天天操| 国产69久久久欧美黑人A片| 色五月丁香在线| 97操男人的天堂| 亚洲六月色婷婷| 五月亭亭六月色| 日韩人妻AV在线| 婷婷五月色天| 天天综合久久| 亚洲人成网站999综合| 色色色在线观看| www.天天色综合| 五月婷婷色欲| 中文字幕综合| 婷婷五月天六月综合| 国产亚洲成AV人片在线观黄桃| 久久久精品色色色| 夜精品无码A片一区二区蜜桃| 丁香五月开心五月激情| 久操大| 精品欧美一区二区三区久久久| 天天操比比| 婷婷丁香六月综合激情站| 色色欧美。| 91凹凸在线| 免费99情趣网视频| 中文久久婷婷| 亚洲视频一区| 久久99综合网| 五月丁香婷婷婷婷综合网| 99热只有精品在线| 婷婷五月天激情网| 另类激情综合| 婷婷五月激情丁香激情| 玖玖婷婷色五月| 午夜性做爰电影| 久久丁香五月| 天天在线久久综合 | 天天狠狠干| 中文字幕在线免费观看视频| 欧美色激情四射| 9精品在线| 六月丁香射婷婷欧美色图片| 97色啪| 午夜天堂一区人妻| 欧美婷婷丁香五月社区| 99热这里只有精品在线播放| 婷婷丁香视频在线观看免费| 一区三区视频有限公司| 9精品久久999| 色爱五月天| 国产性爱亚洲是图| 激情综合网,五月| 任我鲁这里有精品视频| 精品综合网在线| 丁香五月天激情视频| 婷婷五月天电影区小说区| 亚洲无码成人网| 五月婷婷七月丁香| 六九色综合婷婷五月天| 森林影视大全,最好看的2019年视频 | 亚洲AV电影美洲AV电影| 成 人片 黄 色 大 片| 久久总和99| 久久婷婷丁香五月一二三| 一二区成人电影| 大香蕉久久视频久久视频| 欧美色图天堂网| 五月婷婷真爱激情网| 丁香婷婷免费| 欧美色图45678| www.com.色色| 免费超碰在线观看| 婷婷五月天激情网| 婷婷五月天小说网| 激情综合区| 这里只有精品在线观看视频| 日韩久久这里只有精品| 婷婷成人综合免费视频| 五月天色色色| 综合久久婷婷| 五月天天堂久久| 婷婷新网址| 色婷婷性爱网| 激情内射人妻1区2区3区| 色情五月综合婷婷| 99热99色| 婷婷五月色| 色五月激情综合| 99热在线精品观看| 激情五月www| 色婷婷综合中心| 桃色Av色哟哟| 六月丁香婷婷视频综合在线观看| 婷婷丁香六月| 国产成人av在线| 日韩超碰在线| 激情啪啪五月| 色色色色色五月丁香| 偷偷操九九| 丁香八月综合激情| 婷婷激情五月天激情小说| 五月婷婷之综合激情| 婷婷丁香五月欧美人| 丁香五月大片| 六月丁香婷婷色综合| 亚洲色爽| 六月色婷婷欧美| 大香蕉AV在线| 日本色色网| 日本三级日本三级99| 伊人久久大香线蕉av一区| 丁香五月综合无码趴趴| 色综合色婷色基地| 激情五月色综合网| 月色色综合婷婷网| av在线激情| 99A级片| 激情六月丁香| 69精品人人人人| 日本三级中国三级99人妇网站| ww久久| 婷婷五月综合啪| 色婷婷久久综合久色综| 欧美影院婷婷| 九九国产视频| 色五月之第四色| 79亚洲精品少妇| 天天在线天天综合网色| 99综合99| 色爱亚洲| 青青草轻轻操| 99视频久久| 亚洲成人在线播放| 五月婷丁香| 98国产精品综合一区二区三区| 亚洲综合色网| 婷婷丁香成人色综合| 色婷婷91激情小说| www,com,五月色色| 亚洲精品国产成人AV在线| 婷婷丁五月| 色色色99韩| 天天色天天爱天天爽| 五月丁香基地| 久久思思热| 九月丁香亭亭| 五月天黄色激情小说| 五月婷婷精品无在线| 99热这里只有精彩| 97精品欧美91久久久久久久| 九九成人视频| 五月婷婷香蕉| www久久久久| 97视频91| 激情欧美婷五月| 天天色天天色天天色天天色天天色| 五月草视频| 日本婷久久| 99久久综合| 成人精品免费在线观看| 色娸娸综合网| 激情丁香五月婷| 成人色色视频| 综合久久综合久久| 欧美69久成人做爰视频| 综合99在线| 久热一本| 激情婷婷另类| 六月丁丁香| 99精品网| 天天日P天天射P| 色色色色五月天| 婷婷伊人激情婷婷| 丁香五月天堂| 五月婷婷综合网| 97luluse| 97视频久久| 夜夜夜叫天天天做| 99狠狠| 婷婷伊人綜合中文字幕小说| 亚洲欧美日韩另类| 久久精彩综合视频| 99er精品视频| 91色五月| 超碰免费观看| 亚洲色五月| 热99热9| 人人操91| 日韩99无码| 99九九中文字幕视频| 99这里只有免费的小视频在线观看| 丁香五月乱中文字幕| 久久98| 久久9情免费| 五夜婷婷| 激情人妻综合| 色五月丁香伊人| 99在线观看| 亚洲成人av中文| 99re66热这里只有精品| 综合色色色色色色| www.超碰| 最新久久网址| 亚洲五月天婷婷在线| 激情六月综合| 亚洲精品成人片在线播| 激情伊人六| 激情久久肏屄视频| 色yeye欧美| 久久99热这里只有| 狠狠色五月| 激情6月| 婷婷五月在线免费| 五月婷婷丁香五月| 欧美五月婷婷综合| 精品久久人妻热| 天天综合久久| www.9操| 9er热在线精品视频| 丁香五月天色婷婷| 亚洲狠狠色丁香婷婷综合久久| 亚洲AV成人精品日韩在线播放| 亚洲视频伍月婷婷| av中文在线| av第一二区| 亚洲五月天婷婷综合| 婷婷丁香五月综合| 综合久久9| 日婷婷| 国产3p露脸普通话对白| 欧美色婷婷| 日本在线99| 一区二区你懂的| 五月天成人在线视频丁香| 五月色色色| 影音先锋 一区| 思思久热| 精品人妻午夜一区二区三区四区 | AV中文字幕夜夜操b天天摸bb | 精品99只有。| 99视频| 他改变了拜占庭| 伊人网碰碰| 日本人妻操| 婷婷五月骚厕所| 国产乱子轮XXX农村| 婷婷五月丁香五月丁香| 午夜性爱影视一区77| www.色99| 久久精品63| 激情五月天小说网| 国产亚洲成人综合| 婷婷五月天激情基地| 狠狠爱青青草| 青娱乐美女福利视频美臀| AA丁香综合激情| 激情综合啪啪啪| 色色射| www,久久久| 亚洲最大在线| WWW99热| 9热精品| 综合精品啪啪| 天天爱天天做天天操| 大香久久综合网| 五月之婷婷| 日碰日| 天天天天做夜夜夜夜做| 欧美一级a| 色婷婷色人人射| 婷婷丁香综合网| 99热大片| 日韩丁香涩| 色天天综合| 99热每日| 久久99热久久99精品| www.1024久久| 激情五月天激情小说| 综合日本婷婷| 五夜丁香| AV在线资源| 综合色播| 久久久妻人人人| 99无码视频| 日批在线看| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 99综合免费视频| 国产va在线视频| 久久婷婷五月天| 六月色婷婷欧美| 国产亚洲精品久久久久久久久动漫| 五月综合777| 九月丁香久久网| 久热网站| 9有码中文| 六月婷婷激情| 五月天五月色婷婷综合| av亚洲国产小电影| 五月涩涩网| 婷婷激情啪啪| 成人婷婷桔色| 国产精产国品一二三在观看| 色噜噜狠狠狠综合曰曰曰| 91n网站cad入口在线观看| 五月天伊人| 色一情一乱一乱一区91| 超碰在线成人| 79亚洲精品少妇| 69超碰在线| 五月婷婷丁香狠狠撸久久| 丁香婷婷五月人体| 久久9视频欧美| 五月丁香色色综合| 碰99在线| 激情综合色图| 五月婷婷六月丁香激情深爱| 婷婷在线网| 国产欧洲欧洲精品久久| 草一草avb| 五月天丁香网| 99久超碰| 日韩一区二区A片免费观看 | 风流少妇A片一区二区蜜桃| 五月天夜夜爱夜夜操| 视频久久9| 99精品久久| 婷婷综合伊人丁香| 色五月婷婷大香蕉| 男女啪啪做爰高潮无遮挡| 久热这里只有精品在线| 丁香五月日韩| 少妇AB又爽又紧无码网站| www.五月.com| www.久久爱| 曰韩五月丁香色婷婷无码| 五月天成人小说| 色色婷| 影音先锋男人女人| 丁香五月激情网| 丁香五月婷婷少妇| 欧美久久久久久久久中文字幕| 婷婷永久在线| 婷婷狠狠五月综合| 激情视频综合| 亚洲精品一区中文字幕乱码| 五月婷婷啪啪| 五月婷婷深深爱爱| 欧美碰碰| 9久精品| 五月婷婷丁香五月婷婷丁香| 亚洲五月丁香综合网| 久久丁香婷婷色情综合| 色色五月天婷婷| 伊人午夜综合色啪| 九九無碼| 色婷综合| 国产成人网| AV性爱网| 四月婷婷五月色综合| 欧亚中文A V| 天天干天天干天天干| 噜噜精品| 婷婷基地成人五月天| 久久aaaaa| 99国产精品白浆在线观看免费| 尔尔AV一区| 五月激情精品视频| 免费97碰碰| 91九色超碰| AV性爱在线| 熟女激情五月天| 青青热久精品视频在线观看| 久久婷婷色色| 男女av免费看| 99精品热| 丁香五月综合激情啪啪| 丁香五月婷婷综合网| 精品99这里有| 婷丁香五月天| 天天干天天日蜜臀av| 伊人五月天在线| 成人va在线播放| 颜射 精品性爱av| 丁香综合网| 亚洲精品444久久久久久| 丁香五月社区| 狠狠综合久久| 婷婷狠狠操| 五月天自拍视频| 玖玖国产视频一区| 激情综合在线观看| 在线成人国产| 99re热视频这里只精品| www.婷婷| 九九精品网| 天天干天天干天天干天天干天天| 亚洲综合在线伊人婷| 加勒比日本一区二区三区| 激情5月婷婷| 99精品无码| 五月丁香色色网| 天天日夜夜爽| 九九视频这里只有精彩| 九玖欧洲亚洲| 久久亚洲色导航| 99啪啪视频| 色婷婷五月影院| 1024操逼| 天天日天天插| 亚洲色热| 99操逼| 亚洲日日操| 婷婷五月天成人基地| 成人婷婷五月天| 无码四色色色| 影音先锋一区二区三区| 五月婷婷人人人操| 91人碰| 久99久视频精选| 亚洲岛国电影| 操精品9| 国产真实乱对白精彩| 色爱综合网| 免费精品99| 色五月AV| 人妻久久久久久久 | 色五月第四色| 天天综合亚洲| 色综合色综合网| 六月丁香五月激情婷婷| 九九视频精品在线免费| 99热这里只有精品23| 天天日人人| 婷婷另类开心| 99人这里只有精品| 六月丁香婷婷天堂| 五月婷婷开心激情六月蜜桃| 亚洲色激婷| 久久这里在精品视频| 久久丁香| 色五月激情视频在线综合| 亚洲网视屏| 色婷精品91| 亚洲无码猫咪| 中文字幕天天干| www,99色| 婷婷五月天丁香激情| 欧美A片在线视频免费观看| www...com黄在线观看| 七月丁香婷婷 色色| 5月丁香美女影院| 日韩AC在线免费观看| 丁香五夜激情四射夜夜夜| 九九综合五月欧美| 亚洲欧洲一二| 71在线精品视频一区| 国产日韩av片| AV在线观看网站| 一起草AV| 亚洲精品乱码久久久久久综合| 激情综合激情五月| 激情婷婷五月天在线观看| 丁香五月激情无码视频| 婷婷五月天高清无码| 精品人妻在线| 狠狠香蕉| 伊人久久艹| 日本强伦片中文字幕免费看| 任我干视频在线观看| 婷婷六月久久| 看全色黄大色大片| 亚洲av免费在线| 成人超碰AV| 五月综合六月丁| 婷婷久久亚洲| 婷婷五月天激情网| 五月开心激情| 亚洲经典三级| av五月天婷婷丁香| 久久五月婷综合网| 97人人看| 五月天婷亚洲综合在线嫩草网| 天天射射夜| 欧洲免费视频色| 婷婷婷婷婷开心无码播放| 1024操逼视频| 激情丁香五月婷婷| www.ywav| 97碰碰在线观看视频| 婷婷激情五月| 狠狠操天天日| 激情五月天视频| 91久久婷婷| 无码激情AAAAA片-区区| 激情五月天婷婷播播久久综合91| 五月天丁香欧美激情| 91在线日| 青草久久五月婷伊人| 夜夜夜夜夜骑撸| 亚洲无码另类| 777影视理论片大全在线观看| 狠狠色婷| 色综合色综合网| 成人婷婷五月| 婷婷成人五月天成人文学| 99操逼| A短视频免费在线观看| 一区二区三区XXXXXX| 天天情天天狠天天透| 伊人五月天日日夜夜久久久天天| 久久婷婷五月综合伊人| 丁香大香蕉| 黄桃AV无码免费一区二区三区| 久久婷婷激情四射五月天| 五月丁香网视频| 狠狠草综合网| 五月丁香六月香香蕉| 久久性爱网| 日本成人综合| 久久996re热这里只有精品无码| 婷婷激情五月天小说校园| 超碰人人射| 中日韩美欧成人一区二区精品在线| 五月丁香婷婷啪啪综合| 婷婷五月 丁香六月| 可以免费看的AV网站| 色综合久久888| 999九九九久久久99HD| 久久色在线视频| 色综合久久88色综合天天| 五月婷婷综合激情| 伊综合蕉| 久久五月婷婷电影| 激情开心五月天婷婷基地丁香社区| 久久婷婷伊人| Av免费网站在线| 婷婷五月中文在线| 婷婷激情小说| 97啪啪| 色婷在线视频| 五月天激情在线视频| 另类视在线| 91丨九色丨首页| 婷婷丁香六月| 久久人妻视步| 国产av天堂| 玖玖99免费视频| av在线色五月丁香婷区久| 九月婷婷久久久| 五月丁香综合久久夜夜| 激情五月第四色| 色婷婷久久| 色色网站日本91| 天天骑日日爽| 99热只有| 婷色五月| 欧美婷婷日本| 操人妻视频91| 99精品偷自拍| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 婷婷综合丁香| 99国产小视频2013| 狠色色狠网| 免费亚洲婷婷| www一起操| 停停五月丁香| 天堂成人A片永久免费网站| 99自拍视频网站| www夜夜| 在线18av | 这里只有精品免费在线视频| 五月婷婷,狠狠操| 丁香九月激情在线视频| 丁香婷婷丁香五月欧美人| 欧洲亚洲免费视频9| 亚洲AV免费国产电影| 色5月婷婷| 国产精品久久久久久久久久| 9久热| 噜噜操操| 人妻在线网站| 79色色色色| 国产精品激情AV久久久青桔| 色色操| 国产色色视频| 久久爱综合| 操丝袜视频影院导航| 99无码视频| 亚洲精久久| 欧美大香蕉视频| 免费啪啪啪网站| 99热精品在线播放| 伊人婷婷大香蕉在线| 五月情四婷婷| 人妻av在线| 日本久久网| 欧洲不卡视频| 五月色婷婷影院| 女人天堂AV| 性爱五月婷婷| 色综合激情| 亚洲AV成人一区二区在线观看| 青草久久五月婷伊人| 五月停停色色丁香| 99视频九九热| 五月天久久网站| 欧美毛卡| 成人在线99| 99伊人婷婷在线| 九九这里都是精品| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 四川女人毛多水多A片| 开心激情色婷婷五月天| 99热这里只有精品99| 五月天激情综合网站| 99热这里是精品| 丁香婷婷五月综合影院| 中文成人在线| 先锋资源91| 日本一毛片| 任我鲁这里有精品视频| 成人五月天丁香| 色婷婷9| 色综合网址| 亚洲成人网站在线观看| 五月丁香婷婷啪啪| 色色丁香| 99婷婷| 性小说五月天| 超碰v| 5月丁香六月情| 六月色丁香婷婷| 丁香网五月天激情| 六月婷婷操逼| 六月婷婷中文字幕| 亚洲无aV在线中文字幕| 日本啪啪天堂| 亚洲九九夜夜| 九色婷婷| 丁香五月天婷婷中文| 久久精品凹凸分类| 丁香五月婷在线观看| 日韩无码乱轮| 精品女人九九九| 91日本在线| 五月大香蕉| www.日日夜夜| 婷婷五月综合社区在线| 五月天久久婷婷| 玖玖午夜视频| 九九Av| 丁香五月日本| 久久久全国免费视频| 岛国AV网| A1片久久久| 99视频在线精品免费观看2| 日本3级片偷拍网站| 色色色热| 精品久久久久久久久久久久人妻| 99久久人妻精品无码二区| 五月激激激情综合网| 亚洲成人av在线播放| 丁香在线视频| 99热18| 99热这里有精品| 日日夜夜爽| 天天肏高清在线| 丁香五月天啪啪| 91啪级电影| 六月丁香开心婷婷欧美| 亚洲成人高清在线| 五婷婷六月合| 国产原创视频91九色| 97欧美在线| 丁香五月婷婷综合视频| 久久人人添人人爽添人人片αV| 婷婷色五月情| 老妇操B| 天天插综合网| 婷婷六月天亚州| 婷婷综合一二三| 综合网亚洲| 五月天激情av| 伊人久久大香线蕉av一区| 六月婷婷色综合| 亚洲色激情| 婷婷五月丁香久久| 五月丁香啪啪网| 欧美爆乳一区二区三区| 欧美色99| 国内一级片| 日韩黄色电影| 操笔无码| 69精品人妻不卡视频| 色色性爱视频| 久久婷婷五月综合色和| 高清视频一区| 国产伦亲子伦亲子视频观看| 99九九热视频| 五月天激情在线视频| 青青999| 超碰99在线观看| 日本久久视频| 国产AV一区二区三区最新精品| 欧美婷婷五月丁香| 狠狠色婷婷| 狠狠综合久久综合| 99re8在这里只有精品| 亚洲激情区| 婷婷丁香九月| 黄色片久久| 日韩啪啪视频| 久久成人天| 97操视频| 精品热青草| 120分钟婬片免费看| 天天天天天日| 嫩草AV久久伊人妇女超级A| 九久热| 97人人干| 五月丁香久久| 久热中文字幕在线线观看 | 五月天色婷伊人| 色色影院黄大片| 三男玩一女三A片| 4399在线日本A片| 五月丁香婷庭在线| 99久久99视频只有精品| 激情婷婷丁香色五月| 成片免费播放| 五月婷婷色播| 丁香五月网在线观看| 97人妻碰碰碰久| 国产成人高清| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | 激情伊人五月天| 色XX综合网| 天天做天天爱天天爽在| 综激情网| 色综久久久| 婷婷色五月激情| 久久婷婷五月天激情四射| 丁香五月天啪啪激情综合网| 爱性综合网| 二级黄色毛片| 色婷丁香91| 婷婷色综合| 久久久久亚洲AV无码网影音先锋| WWW.99热| 人妻性爱| 99熟女视频| 婷婷激情啪啪| 成人av在线网| 在线播放中文字幕| 91人人操人人爱| 操射国产日本| 第二色AⅤ| 日韩黄黄| 久久视频婷婷| 亚洲无码性爱| 超碰v| 色色五月丁香| 亚州操操| 久久ab| 五月中旬婷婷丁香六| 欧洲亚洲免费视频9| 激情久久久久久| 97碰碰在线观看视频| 五月做爱| 大香蕉九九| 99色色视频| 99久在线精品| 99性爱| www激情婷婷com| 婷婷五月六月丁香综合| 狠狠va| 在线视频另类| 成人Av在线大片| 成人人操| 丁香综合久久| 婷婷五月天渟渟| 97色综合| 五月丁香久久久| 91男女视频在线观看| 99热在线观看| Av大香蕉| 91精品久久久久久77777| 亚洲成人中心| 51国精产品自偷自偷综合| 五月婷婷开心丁香| 激情5月天天天| 六月色五月天天婷婷| eeuss人妻| 99re在线视频精品,这里只有精品18,| 日日干天天射| 亚洲在线资源| 天天搡日日搡aaaaⅩ| 国产白丝在线一区|