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

ARTICLE DETAIL

資訊詳情

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

用Pytorch實(shí)現(xiàn)Transformer時(shí)間序列預(yù)測(cè):從單步到多步的完整指南

用Pytorch實(shí)現(xiàn)Transformer時(shí)間序列預(yù)測(cè):從單步到多步的完整指南 簡(jiǎn)介本資源是一套基于PyTorch實(shí)現(xiàn)的Transformer時(shí)間序列預(yù)測(cè)完整實(shí)驗(yàn)方案面向機(jī)器學(xué)習(xí)初學(xué)者與時(shí)間序列建模實(shí)踐者聚焦單步與多步預(yù)測(cè)兩大核心任務(wù)適用于氣象、能源、金融等領(lǐng)域的時(shí)序數(shù)據(jù)分析場(chǎng)景。壓縮包共10個(gè)文件3.21MB包含2個(gè)核心訓(xùn)練腳本transformer-singlestep.py與transformer-multistep.py、1個(gè)真實(shí)溫度數(shù)據(jù)集daily-min-temperatures.csv、1張預(yù)測(cè)效果可視化圖transformer-future200.png、1個(gè)動(dòng)態(tài)訓(xùn)練過程演示gifresult.gif、1份環(huán)境依賴說明requirements.txt及README文檔等結(jié)構(gòu)清晰、開箱即用。已有2909人學(xué)習(xí)下載所有代碼均經(jīng)實(shí)測(cè)可直接運(yùn)行附帶每日最低溫度數(shù)據(jù)上的100輪訓(xùn)練結(jié)果與多步預(yù)測(cè)對(duì)比分析便于讀者理解模型輸入構(gòu)造、位置編碼設(shè)計(jì)、掩碼機(jī)制應(yīng)用及輸出解碼邏輯是深入掌握Transformer在時(shí)序領(lǐng)域落地的優(yōu)質(zhì)實(shí)踐素材。 拿到一個(gè)時(shí)間序列預(yù)測(cè)需求時(shí)很多人第一反應(yīng)是先套LSTM。我一開始也是這么干的但項(xiàng)目數(shù)據(jù)拉長(zhǎng)到幾百個(gè)時(shí)間步后LSTM訓(xùn)練慢不說往后預(yù)測(cè)的曲線像一個(gè)被壓扁的彈簧越來越“平”。朋友建議試試Transformer我?guī)е鴮⑿艑⒁傻膽B(tài)度用Pytorch從零搭了一套單步和多步預(yù)測(cè)實(shí)驗(yàn)。沒想到的是模型把長(zhǎng)距離依賴抓得很穩(wěn)預(yù)測(cè)結(jié)果比LSTM明顯更貼合趨勢(shì)。這篇文章就是這次實(shí)驗(yàn)的記錄從為什么選Transformer、單步/多步怎么設(shè)計(jì)到Pytorch完整實(shí)現(xiàn)和踩坑實(shí)錄都會(huì)拆開講。適合已經(jīng)會(huì)上手Pytorch、但還沒用Transformer處理過時(shí)間序列的同學(xué)也適合做量化、銷量預(yù)測(cè)、設(shè)備監(jiān)測(cè)等場(chǎng)景的工程師參考。我會(huì)盡量把每個(gè)關(guān)鍵選擇背后的原因?qū)懬宄皇侵粊G代碼。1. 整體設(shè)計(jì)與思路拆解1.1 為什么用Transformer而不是LSTM在時(shí)間序列上做預(yù)測(cè)本質(zhì)上是在建模“過去的時(shí)間點(diǎn)如何影響未來”。LSTM和GRU的思路是遞歸地、逐步地把信息往后傳這種過程的優(yōu)點(diǎn)是參數(shù)少、可解釋性強(qiáng)但缺點(diǎn)也很明顯訓(xùn)練是串行的序列一長(zhǎng)梯度消失和長(zhǎng)期依賴丟失的問題就會(huì)顯現(xiàn)。Transformer的設(shè)計(jì)是直接計(jì)算序列中任意兩個(gè)位置之間的關(guān)聯(lián)度通過多頭注意力機(jī)制一次性看到全局信息。放在時(shí)間序列里這就意味著模型可以自己學(xué)會(huì)“第1個(gè)時(shí)間點(diǎn)對(duì)第50個(gè)時(shí)間點(diǎn)很重要”而不是像RNN那樣靠門控一路“背”過去。不過話說回來Transformer也不是沒有代價(jià)。它不像LSTM自帶順序概念必須靠位置編碼把順序信息硬塞進(jìn)輸入而且注意力矩陣的空間復(fù)雜度是O(n^2)窗口特別長(zhǎng)的時(shí)候會(huì)吃顯存。這決定了我們?cè)趯?shí)驗(yàn)里不能無腦堆窗口需要在數(shù)據(jù)長(zhǎng)度和模型容量之間做取舍。但總體上對(duì)于中等長(zhǎng)度幾十到幾百個(gè)時(shí)間點(diǎn)的時(shí)間序列Transformer的精度和訓(xùn)練效率都很有競(jìng)爭(zhēng)力。我在做實(shí)驗(yàn)對(duì)比時(shí)同一個(gè)數(shù)據(jù)切了兩份一份用兩層LSTM一份用兩層Transformer encoder。LSTM訓(xùn)練了接近200個(gè)epoch才收斂Transformer在100個(gè)epoch左右就已經(jīng)更好了尤其在后半段的預(yù)測(cè)曲線上Transformer更貼近原始趨勢(shì)。這其實(shí)不難理解時(shí)間序列里“之前一段時(shí)間的形態(tài)”往往比“最后一個(gè)點(diǎn)的值”更重要而注意力機(jī)制天生擅長(zhǎng)捕捉這種形態(tài)。1.2 單步預(yù)測(cè)和多步預(yù)測(cè)的差異單步預(yù)測(cè)是經(jīng)典的監(jiān)督學(xué)習(xí)任務(wù)輸入過去一段序列輸出下一個(gè)時(shí)間點(diǎn)的值。多步預(yù)測(cè)的難度要高一個(gè)檔次因?yàn)檩敵龅氖且粋€(gè)連續(xù)的未來區(qū)間不只是“下一個(gè)點(diǎn)”的精確值還要考慮未來多個(gè)點(diǎn)之間的疊加誤差。我在實(shí)驗(yàn)中分別實(shí)現(xiàn)了兩種多步方案這里先做一個(gè)直觀對(duì)比指標(biāo)直接多步遞歸多步實(shí)現(xiàn)復(fù)雜度輸出層維度設(shè)為horizon簡(jiǎn)單需要把預(yù)測(cè)值拼回輸入循環(huán)推理推理速度快一次forward得到K個(gè)點(diǎn)慢要連續(xù)forward K次誤差累積幾乎沒有因?yàn)镵個(gè)點(diǎn)同時(shí)輸出明顯越往后越偏訓(xùn)練難度需要同時(shí)擬合K個(gè)標(biāo)簽數(shù)據(jù)量小時(shí)難度大訓(xùn)練時(shí)仍是單步難度低適用場(chǎng)景horizon較大、訓(xùn)練數(shù)據(jù)充足小規(guī)??焖賹?shí)驗(yàn)、模型迭代期直接多步Direct Multi-stepTransformer輸出層的維度直接設(shè)為horizon長(zhǎng)度讓模型一次生成未來K個(gè)點(diǎn)。缺點(diǎn)是模型要同時(shí)擬合K個(gè)輸出訓(xùn)練難度高但推理快。遞歸多步Recursive Multi-step先用單步模型預(yù)測(cè)出下一個(gè)點(diǎn)再把這個(gè)預(yù)測(cè)值當(dāng)輸入滑進(jìn)窗口繼續(xù)預(yù)測(cè)下下個(gè)點(diǎn)。實(shí)現(xiàn)簡(jiǎn)單但誤差會(huì)隨著步數(shù)累積越往后越偏。還有一種Teacher Forcing的訓(xùn)練方式只在訓(xùn)練時(shí)用真實(shí)值替代預(yù)測(cè)值喂養(yǎng)模型推理時(shí)再用預(yù)測(cè)值這個(gè)后面在訓(xùn)練循環(huán)里會(huì)講。這兩個(gè)方案我都跑了也記錄了各自的loss曲線和誤差指標(biāo)。直接多步在horizon比較大時(shí)會(huì)比遞歸更穩(wěn)但前提是訓(xùn)練數(shù)據(jù)要充足遞歸多步在小樣本上更靈活適合快速迭代。建議你在自己的數(shù)據(jù)上都試試對(duì)比后再選。2. 核心細(xì)節(jié)解析與實(shí)操要點(diǎn)2.1 位置編碼不能省但不要照搬NLPTransformer本身沒有順序感。把序列順序打亂注意力算出來的結(jié)果是一模一樣的。所以位置編碼是Transformer做時(shí)序預(yù)測(cè)繞不開的基礎(chǔ)。NLP里常見的是正弦位置編碼把位置索引用sin/cos函數(shù)映射到embedding維度上。在時(shí)間序列里這個(gè)方式一樣能用但我測(cè)試下來直接把時(shí)間戳比如間隔、周幾、小時(shí)作為額外特征拼進(jìn)輸入效果往往更好尤其是數(shù)據(jù)有明顯周期性的場(chǎng)景。實(shí)用的做法是“加”而不是“拼”把正弦位置編碼加到輸入embedding上然后額外把標(biāo)準(zhǔn)化后的時(shí)間特征拼在輸入特征維度后面。這樣模型既能感知絕對(duì)位置也能感知周期性信息。代碼實(shí)現(xiàn)時(shí)位置編碼的維度要和d_model一致否則維度對(duì)不上沒法加。為什么要乘sqrt(d_model)這是Transformer原論文里的一個(gè)細(xì)節(jié)。輸入經(jīng)過embedding后數(shù)值范圍通常會(huì)比較小直接往上面加位置編碼位置信息很容易蓋過原始特征。乘上sqrt(d_model)相當(dāng)于把輸入embedding放大到和位置編碼一個(gè)量級(jí)讓兩者在相加時(shí)都能保留有效信息。我在實(shí)驗(yàn)里試過不乘這個(gè)系數(shù)訓(xùn)練loss收斂明顯變慢所以這個(gè)細(xì)節(jié)不建議省。2.2 數(shù)據(jù)預(yù)處理決定模型上限先講一個(gè)我踩過的坑一開始我直接用整個(gè)序列的均值和方差做歸一化訓(xùn)練loss很漂亮但測(cè)試特別差。后來才意識(shí)到這是把未來信息透漏給了訓(xùn)練過程也就是典型的數(shù)據(jù)泄漏。正確的做法是只在訓(xùn)練集上fit scaler再用同一套scaler去transform驗(yàn)證集和測(cè)試集?;瑒?dòng)窗口的構(gòu)造也值得細(xì)品。單步預(yù)測(cè)時(shí)每條樣本是[look_back, feature_dim]的輸入和[1]的標(biāo)簽多步預(yù)測(cè)時(shí)標(biāo)簽就變成[horizon]或者[horizon, feature_dim]。窗口長(zhǎng)度look_back一般取序列長(zhǎng)度的10%~20%不能太短也不能太長(zhǎng)。我常用look_back24或48來預(yù)測(cè)未來6~12個(gè)點(diǎn)效果比拍腦袋定的窗口好不少。另外如果數(shù)據(jù)有缺失不要用均值填充盡量用前向填充或插值避免引入錯(cuò)誤的局部趨勢(shì)。關(guān)于歸一化我一般用MinMaxScaler。它在數(shù)據(jù)有明顯上下界時(shí)非常穩(wěn)能讓模型更快收斂。StandardScaler也不是不行但對(duì)異常值更敏感。如果數(shù)據(jù)里有特別大的尖峰MinMax可能把正常值壓得太扁這時(shí)候可以先做一輪異常值截?cái)嘣儆谩2灰簧蟻砭桶阉袛?shù)據(jù)丟進(jìn)模型先畫圖看分布這個(gè)習(xí)慣能省掉后面很多麻煩。2.3 核心超參數(shù)怎么定才有得跑下面是這次實(shí)驗(yàn)里的核心超參數(shù)可以直接照抄參數(shù)數(shù)值說明d_model64輸入embedding和注意力投影的維度nhead4多頭注意力頭數(shù)需能被d_model整除num_encoder_layers2標(biāo)準(zhǔn)Transformer里encoder層數(shù)我用了2層dim_feedforward256前饋網(wǎng)絡(luò)隱藏層維度dropout0.1防止過擬合batch_size64顯存不大就調(diào)小建議32~128learning_rate1e-3初始學(xué)習(xí)率配合cosine調(diào)度epochs100早停耐心值建議設(shè)20注意nhead一定要能整除d_model否則Pytorch會(huì)直接報(bào)錯(cuò)。層數(shù)不是越多越好我試過4層在數(shù)據(jù)量不大的情況下反而更容易過擬合。學(xué)習(xí)率建議用AdamW 余弦退火Transformer對(duì)學(xué)習(xí)率比LSTM敏感固定學(xué)習(xí)率容易震蕩。dim_feedforward我習(xí)慣設(shè)成d_model的4倍左右太大參數(shù)量漲得快太小表達(dá)能力受限。還有一個(gè)常被忽略的參數(shù)是dropout。時(shí)間序列訓(xùn)練數(shù)據(jù)一般不會(huì)特別大dropout設(shè)太小容易過擬合設(shè)太大又可能欠擬合。0.1到0.2之間是個(gè)安全區(qū)間。如果你的數(shù)據(jù)量超過十幾萬條可以把dropout降到0.05加快收斂。3. 實(shí)操過程與核心環(huán)節(jié)實(shí)現(xiàn)3.1 環(huán)境搭建與項(xiàng)目結(jié)構(gòu)動(dòng)手前先把環(huán)境理順。我習(xí)慣用conda建一個(gè)獨(dú)立環(huán)境避免跟其他項(xiàng)目打架。conda create -n ts_transformer python3.9 -y conda activate ts_transformer pip install torch2.1.2 --index-url https://download.pytorch.org/whl/cu118 pip install numpy pandas matplotlib scikit-learn如果你用的是GPU機(jī)器裝完后第一時(shí)間檢查一下CUDA是否可用python -c import torch; print(torch.cuda.is_available(), torch.cuda.device_count())輸出“True 1”就說明Pytorch能用GPU了。如果輸出False不是驅(qū)動(dòng)問題就是Pytorch版本沒選對(duì)。我還在Jetson等嵌入式設(shè)備上裝過那又得單獨(dú)挑適配版本不建議新手一上來就碰。項(xiàng)目目錄我習(xí)慣這樣組織time_series_transformer/ ├── data.csv # 原始數(shù)據(jù) ├── dataset.py # 數(shù)據(jù)集與預(yù)處理工具 ├── model.py # Transformer模型定義 ├── train.py # 單步/多步訓(xùn)練腳本 ├── evaluate.py # 評(píng)估與可視化 └── requirements.txt這個(gè)結(jié)構(gòu)看著簡(jiǎn)單但足夠用。實(shí)驗(yàn)迭代時(shí)最怕把所有代碼堆在一個(gè)文件里改一個(gè)地方牽一發(fā)動(dòng)全身。把數(shù)據(jù)、模型、訓(xùn)練、評(píng)估拆開后面換數(shù)據(jù)集或者換模型會(huì)輕松很多。3.2 數(shù)據(jù)準(zhǔn)備與Dataset類為了把實(shí)驗(yàn)說透我用了一段周期信號(hào)疊加噪聲的數(shù)據(jù)模擬傳感器讀數(shù)或者銷量曲線。你也可以換成自己的csv只要確保日期列按時(shí)間升序排列。import numpy as np import pandas as pd from torch.utils.data import Dataset, DataLoader # 生成示例數(shù)據(jù)正弦 線性趨勢(shì) 噪聲 np.random.seed(42) t np.arange(0, 1200) signal 10 * np.sin(2 * np.pi * t / 50) salary t * 0.01 noise np.random.normal(0, 1, sizet.shape) data signal salary noise注意這個(gè)數(shù)據(jù)只是示例真正項(xiàng)目里數(shù)據(jù)要復(fù)雜得多但處理和建模邏輯是一樣的。這里我故意加了一個(gè)單調(diào)趨勢(shì)是想看Transformer能不能在趨勢(shì)和周期并存時(shí)學(xué)出結(jié)構(gòu)。接下來是滑動(dòng)窗口。我寫了一個(gè)繼承Dataset的類輸入是[look_back, feature_dim]序列標(biāo)簽是未來horizon個(gè)點(diǎn)。class TimeSeriesDataset(Dataset): def __init__(self, data, look_back24, horizon6, step1): self.x, self.y [], [] for i in range(0, len(data) - look_back - horizon 1, step): x data[i:i look_back] y data[i look_back:i look_back horizon] self.x.append(x) self.y.append(y) self.x np.array(self.x, dtypenp.float32) self.y np.array(self.y, dtypenp.float32) def __len__(self): return len(self.x) def __getitem__(self, idx): return self.x[idx], self.y[idx]需要注意這里的data是一維數(shù)組所以我構(gòu)建x時(shí)每個(gè)時(shí)間點(diǎn)只有1個(gè)特征。如果有多維特征沿著最后一個(gè)維度拼接即可上一節(jié)的“拼時(shí)間戳”也是在這里做。構(gòu)造好的樣本可以用DataLoader加載look_back, horizon 24, 6 dataset TimeSeriesDataset(data, look_back, horizon) # 按時(shí)間順序切分 train_size int(0.7 * len(dataset)) val_size int(0.15 * len(dataset)) test_size len(dataset) - train_size - val_size train_data, val_data, test_data torch.utils.data.random_split( dataset, [train_size, val_size, test_size], generatortorch.Generator().manual_seed(42) )這里要特別提醒random_split會(huì)在內(nèi)部做隨機(jī)打亂但因?yàn)槲覀儤?gòu)造樣本時(shí)本身就是按時(shí)間順序滑動(dòng)窗口生成的可能不太合適。更穩(wěn)妥的做法是直接按索引切分不調(diào)用random_split具體看你自己需求。如果是嚴(yán)格的時(shí)序預(yù)測(cè)建議手動(dòng)切片保證訓(xùn)練集在時(shí)間上完全早于驗(yàn)證集和測(cè)試集。3.3 Transformer模型核心實(shí)現(xiàn)標(biāo)準(zhǔn)Transformer結(jié)構(gòu)里包含Encoder和Decoder。但時(shí)間序列預(yù)測(cè)不一定需要Decoder尤其是單步預(yù)測(cè)和直接多步預(yù)測(cè)用Encoder堆疊后接一個(gè)全連接輸出層就能取得不錯(cuò)的效果。我在實(shí)驗(yàn)中選的是Encoder-only方案結(jié)構(gòu)更輕訓(xùn)練更快。如果想做遞歸多步同樣可以復(fù)用這個(gè)Encoder只是在推理時(shí)多繞幾圈。下面是完整的模型定義位置編碼和Encoder主體都放進(jìn)去。import torch import torch.nn as nn import math class PositionalEncoding(nn.Module): def __init__(self, d_model, dropout0.1, max_len5000): super().__init__() self.dropout nn.Dropout(pdropout) pe torch.zeros(max_len, d_model) position torch.arange(0, max_len, dtypetorch.float).unsqueeze(1) div_term torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model)) pe[:, 0::2] torch.sin(position * div_term) pe[:, 1::2] torch.cos(position * div_term) pe pe.unsqueeze(0) self.register_buffer(pe, pe) def forward(self, x): x x self.pe[:, :x.size(1), :] return self.dropout(x) class TimeSeriesTransformer(nn.Module): def __init__(self, feature_dim1, d_model64, nhead4, num_layers2, dropout0.1): super().__init__() self.d_model d_model self.input_proj nn.Linear(feature_dim, d_model) self.pos_encoder PositionalEncoding(d_model, dropout) encoder_layer nn.TransformerEncoderLayer( d_modeld_model, nheadnhead, dim_feedforward256, dropoutdropout, batch_firstTrue, ) self.transformer_encoder nn.TransformerEncoder(encoder_layer, num_layersnum_layers) def forward(self, x): # x: [batch, seq_len, feature_dim] x self.input_proj(x) * math.sqrt(self.d_model) x self.pos_encoder(x) x self.transformer_encoder(x) return x在單步任務(wù)里輸出層可以只取編碼序列的最后一幀再接一個(gè)Linear。在多步任務(wù)里要么對(duì)最后一幀輸出horizon維要么把整個(gè)編碼序列壓平再接全連接。后者參數(shù)量大一般用前者class SingleStepHead(nn.Module): def __init__(self, d_model): super().__init__() self.fc nn.Linear(d_model, 1) def forward(self, enc_output): return self.fc(enc_output[:, -1, :]) # 取最后一個(gè)位置的編碼 class MultiStepHead(nn.Module): def __init__(self, d_model, horizon): super().__init__() self.fc nn.Linear(d_model, horizon) def forward(self, enc_output): return self.fc(enc_output[:, -1, :])為什么取“最后一個(gè)位置的編碼”而不是所有位置的編碼因?yàn)門ransformerEncoder每一層都會(huì)做全局注意力也就是說每個(gè)位置的輸出都已經(jīng)包含了對(duì)整個(gè)序列的“總結(jié)”。最后一個(gè)位置在時(shí)間上離預(yù)測(cè)目標(biāo)最近拿它做輸出頭的信息瓶頸最合適。如果要保留更多細(xì)節(jié)也可以把最后幾幀拼起來但代價(jià)是參數(shù)量增加收益不一定明顯。3.4 單步預(yù)測(cè)訓(xùn)練流程訓(xùn)練循環(huán)本身不復(fù)雜但有幾個(gè)地方我會(huì)特別注意。第一個(gè)是loss單步用MSE這是回歸任務(wù)的標(biāo)配。第二個(gè)是優(yōu)化器AdamW配合余弦退火幾乎是當(dāng)前Transformer訓(xùn)練的標(biāo)準(zhǔn)配置比單純用Adam穩(wěn)定。def train_model(model, train_loader, val_loader, epochs50, lr1e-3): device cuda if torch.cuda.is_available() else cpu model model.to(device) criterion nn.MSELoss() optimizer torch.optim.AdamW(model.parameters(), lrlr) scheduler torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_maxepochs) for epoch in range(epochs): model.train() train_loss 0.0 for x, y in train_loader: x, y x.to(device), y.to(device) optimizer.zero_grad() enc_out model(x) pred model.output_head(enc_out) loss criterion(pred, y) loss.backward() optimizer.step() train_loss loss.item() scheduler.step() val_loss evaluate(model, val_loader, criterion, device) if (epoch 1) % 10 0: print(fEpoch {epoch1}, Train Loss: {train_loss/len(train_loader):.6f}, Val Loss: {val_loss:.6f}) return model寫這段代碼時(shí)要注意model.output_head是我們?cè)谕獠繏焐先サ?。一個(gè)更方便的做法是在TimeSeriesTransformer里增加一個(gè)head_type參數(shù)直接在構(gòu)造函數(shù)里決定使用單步頭還是多步頭這樣訓(xùn)練代碼可以共用。訓(xùn)練時(shí)如果loss長(zhǎng)時(shí)間不下降先查兩件事學(xué)習(xí)率是不是太大數(shù)據(jù)有沒有標(biāo)準(zhǔn)化。絕大多數(shù)奇怪現(xiàn)象都出在這兩處。3.5 多步預(yù)測(cè)實(shí)現(xiàn)方式直接多步訓(xùn)練起來和單步幾乎一樣只是y的維度從1變成horizon輸出頭換成MultiStepHeadloss仍然用MSE。推理的時(shí)候一次拿到的就是未來horizon個(gè)點(diǎn)非常直接。遞歸多步需要額外寫一個(gè)推理函數(shù)把模型預(yù)測(cè)出的下一個(gè)值拼到輸入序列尾部同時(shí)丟掉最前面的點(diǎn)讓窗口“滑”起來。def recursive_forecast(model, history, steps, devicecpu): # history: [look_back, feature_dim] model.eval() history torch.tensor(history, dtypetorch.float32).unsqueeze(0).to(device) preds [] with torch.no_grad(): for _ in range(steps): enc_out model(history) pred model.output_head(enc_out) # [1, 1] preds.append(pred.item()) pred pred.unsqueeze(-1) # [1, 1, 1] history torch.cat([history[:, 1:, :], pred], dim1) return preds這個(gè)思路很直觀但坑也在這輸入用的預(yù)測(cè)值本身就是不準(zhǔn)的誤差會(huì)隨著步數(shù)增多不斷放大。我實(shí)測(cè)下來horizon6時(shí)還能看horizon24時(shí)后面基本變成一條平滑直線。緩解誤差累積有幾個(gè)實(shí)用技巧訓(xùn)練時(shí)用Teacher Forcing即以一定概率用真實(shí)值替代預(yù)測(cè)值去喂下一步讓模型適應(yīng)自己的預(yù)測(cè)對(duì)輸出做clip限制預(yù)測(cè)值的合理范圍避免極端值把窗口帶偏推理階段用確定性策略比如取中位數(shù)而不是單次路徑。3.6 評(píng)估與可視化評(píng)估指標(biāo)我用三個(gè)MAE、RMSE和R2。MAE好解釋RMSE對(duì)大誤差更敏感R2則能反應(yīng)模型對(duì)真實(shí)趨勢(shì)的擬合程度。from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score def evaluate_metrics(y_true, y_pred): mae mean_absolute_error(y_true, y_pred) rmse mean_squared_error(y_true, y_pred, squaredFalse) r2 r2_score(y_true, y_pred) return {MAE: mae, RMSE: rmse, R2: r2}畫圖建議用matplotlib把測(cè)試集真實(shí)值和預(yù)測(cè)值畫在同一張圖里。多步預(yù)測(cè)時(shí)我會(huì)把每個(gè)預(yù)測(cè)窗口的起點(diǎn)和終點(diǎn)連起來畫成階梯狀能更清楚地看到誤差累積發(fā)生在哪個(gè)階段。import matplotlib.pyplot as plt plt.figure(figsize(12, 5)) plt.plot(y_true, labelTrue) plt.plot(y_pred, labelPred) plt.legend() plt.title(Time Series Prediction) plt.show()這張圖是判斷模型有沒有“學(xué)到東西”的最快方式。如果pred和true的相位都對(duì)不上先檢查窗口長(zhǎng)度是否合理如果趨勢(shì)對(duì)但局部抖動(dòng)不對(duì)考慮加更多特征或調(diào)d_model。4. 常見問題與排查技巧實(shí)錄4.1 數(shù)據(jù)泄漏最隱蔽也最致命數(shù)據(jù)泄漏是時(shí)間序列預(yù)測(cè)里出現(xiàn)頻率最高的“幽靈問題”。除了歸一化泄漏還有一種是數(shù)據(jù)集劃分時(shí)不注意時(shí)間順序把未來樣本混進(jìn)訓(xùn)練集結(jié)果模型在測(cè)試集上表現(xiàn)“超神”一到線上就崩。處理辦法是嚴(yán)格按時(shí)間順序劃分且在構(gòu)造滑動(dòng)窗口時(shí)讓訓(xùn)練集只使用該時(shí)間點(diǎn)之前的數(shù)據(jù)。另外如果數(shù)據(jù)來自多個(gè)實(shí)體比如多個(gè)城市或設(shè)備的序列不能把它們混在一起打亂劃分應(yīng)該按實(shí)體分組切分否則也會(huì)出現(xiàn)實(shí)體級(jí)別的泄漏。我自己的判斷標(biāo)準(zhǔn)很簡(jiǎn)單如果訓(xùn)練集和測(cè)試集的MAE差距小得離譜或者測(cè)試集比訓(xùn)練集還好那大概率是泄漏了。正常情況訓(xùn)練誤差應(yīng)該略低于測(cè)試誤差這個(gè)經(jīng)驗(yàn)雖然不絕對(duì)但能幫你快速發(fā)現(xiàn)問題。4.2 訓(xùn)練Loss不降或變成NaN我遇到過一次Loss變成NaN的情況查了半天發(fā)現(xiàn)是沒有對(duì)輸入數(shù)據(jù)做歸一化數(shù)值稍微大一點(diǎn)經(jīng)過多頭注意力里的softmax后就爆炸了。解決方法是先把數(shù)據(jù)縮放到[0, 1]或標(biāo)準(zhǔn)化到均值0方差1再開始訓(xùn)練。如果標(biāo)準(zhǔn)化后還是NaN檢查一下學(xué)習(xí)率Transformer的訓(xùn)練不太吃固定的大學(xué)習(xí)率建議從1e-4或者3e-4開始試。還有一種可能是位置編碼的max_len不夠序列長(zhǎng)度超過上限導(dǎo)致pe切片出問題這種一般會(huì)直接報(bào)IndexError不太會(huì)靜默NaN。另外一個(gè)容易忽視的點(diǎn)是batch_first。Pytorch的TransformerEncoderLayer默認(rèn)batch_firstFalse如果輸入維度是[batch, seq_len, feature]必須顯式設(shè)置batch_firstTrue否則會(huì)對(duì)seq_len維度做batch維處理雖然不報(bào)錯(cuò)但結(jié)果完全不對(duì)。這種錯(cuò)誤很難排查因?yàn)樗憩F(xiàn)成loss一直在下降但驗(yàn)證曲線不對(duì)勁。4.3 多步預(yù)測(cè)后期曲線“平”了多步預(yù)測(cè)的誤差累積問題前面提過這是所有遞歸式預(yù)測(cè)的通病。處理思路有兩個(gè)方向一是把模型換成直接多步輸出一次性預(yù)測(cè)完整未來區(qū)間從根源上避免遞歸累積二是引入機(jī)器學(xué)習(xí)里的魯棒性技巧比如訓(xùn)練時(shí)對(duì)輸入加小噪聲、預(yù)測(cè)時(shí)對(duì)輸出做平滑。我自己的經(jīng)驗(yàn)是如果horizon不超過10遞歸多步能省顯存且效果不差如果horizon到了24以上直接多步會(huì)更穩(wěn)定。建議在實(shí)驗(yàn)設(shè)置里同時(shí)保留這兩種模式用驗(yàn)證集決定到底用哪個(gè)。有時(shí)“曲線平了”也不全是誤差累積的問題可能是數(shù)據(jù)本身的信噪比太低。我畫過頻譜圖之后發(fā)現(xiàn)數(shù)據(jù)里真正可預(yù)測(cè)的成分只占很小一部分模型很容易傾向于輸出均值附近的值。這時(shí)候考慮對(duì)數(shù)據(jù)做差分或季節(jié)分解把趨勢(shì)和周期拆開建模再對(duì)殘差做預(yù)測(cè)。4.4 顯存和訓(xùn)練速度問題注意力矩陣的大小是平方級(jí)增長(zhǎng)的窗口長(zhǎng)度從24改成96顯存占用可能直接翻好幾倍。如果顯存不夠優(yōu)先調(diào)小batch_size或者用梯度累積gradient accumulation模擬更大的batch。Pytorch的自動(dòng)混合精度AMP也值得開torch.cuda.amp里封裝得已經(jīng)很成熟能省不少顯存還能加速訓(xùn)練。下面是一個(gè)簡(jiǎn)化的混合精度訓(xùn)練片段scaler torch.cuda.amp.GradScaler() for x, y in train_loader: optimizer.zero_grad() with torch.cuda.amp.autocast(): pred model(x) loss criterion(pred, y) scaler.scale(loss).backward() scaler.step(optimizer) scaler.update()AMP在NVIDIA GPU上用Pytorch 2.x已經(jīng)非常穩(wěn)定CPU上不用開。還有一個(gè)建議盡量用batch_firstTrue的TransformerEncoderLayerPytorch默認(rèn)是False如果搞錯(cuò)了維度雖然報(bào)錯(cuò)你會(huì)知道但排查起來很煩。4.5 長(zhǎng)序列窗口的改進(jìn)空間標(biāo)準(zhǔn)Transformer處理幾百甚至上千的時(shí)間步時(shí)顯存和效率都會(huì)遇到瓶頸。我這次實(shí)驗(yàn)主要用的是中等長(zhǎng)度窗口但如果你遇到超長(zhǎng)序列建議看看Transformer的改進(jìn)變體比如Informer的稀疏注意力、Autoformer的分解機(jī)制、PatchTST把時(shí)間序列切成patch再編碼。這些都在標(biāo)準(zhǔn)Transformer的思路上做了針對(duì)性優(yōu)化很適合高頻金融數(shù)據(jù)、長(zhǎng)時(shí)間傳感器監(jiān)測(cè)這類場(chǎng)景。我后續(xù)也在計(jì)劃把PatchTST并進(jìn)這套實(shí)驗(yàn)框架里做對(duì)比。另外提醒一句模型調(diào)參不是全部。數(shù)據(jù)質(zhì)量、特征工程、異常值處理對(duì)最終預(yù)測(cè)效果的影響往往比換模型更明顯。我在做這套實(shí)驗(yàn)時(shí)花了將近一半時(shí)間在清洗和構(gòu)建特征上模型本身雖然重要但絕不是唯一變量。做完整套單步、多步實(shí)驗(yàn)后我最深的體會(huì)是Transformer不是一個(gè)“萬能開關(guān)”它適合的是長(zhǎng)依賴和多變量交互明顯的時(shí)間序列。在這套實(shí)驗(yàn)中我用Pytorch從數(shù)據(jù)預(yù)處理、模型搭建到評(píng)估可視化完整走了一遍也踩了不少坑。如果你正打算在自己的數(shù)據(jù)上復(fù)現(xiàn)建議先把數(shù)據(jù)好好看一眼再按文中的代碼結(jié)構(gòu)一點(diǎn)點(diǎn)搭別急著直接套大模型。先把單步跑通再多步最后再回頭調(diào)超參這樣每一步都能定位到問題。希望這篇記錄能幫你少走點(diǎn)彎路。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
狠狠色激情在线| 婷婷综合av| 五月婷婷六月色| 99热资源在线| 爆乳熟妇一区二区三区爆乳| 激情五月天色色网| 天天婷婷| 丁香五月香蕉在线| 久久五月婷天天干| 亚洲熟女色| 婷婷中文无码| 热久久色| 天天爱天天做天天操| 久月婷婷| 久久电影五月天丁香电影| 男人的天堂五月丁香| 超级碰 久久9| www狠狠| 亚洲AV无码成人精品电影| 国产激情在线| 五月天精品综合在线| 香蕉久久五月| 能看的AV| 伊人五月综合网| 99在线观看精品| 99re在线观看| 色情五月停停丁香| 亚洲激情高潮| 91丨九色丨熟女高潮| 婷婷久久综合| 久久人操| 五月丁花六月丁香综合| 欧美色色色色色| 六月丁香五月激情网| 国产美女主播vip| 久激情网| 超碰国产AV| 99re6热在线精品视频播放速度| 色激情五月天| 99精品久久久久久久| 久久色9| 丁香五月婷婷在线视频| 67194线路二在线观看| jiZZdr| 91超级碰碰| 丁香五月婷婷色| 1024操逼视频| 丁香五月天电影| 婷婷五月骚厕所| 四五月婷婷| 91色干| 丁香99| www.亚洲激情.com| 色涩影院六月丁香| 热99国产精品| 五月婷婷亚洲综合网| 五月丁香爱婷婷深深| 人人操婷婷| 91人久| 26uuu亚洲欧美| 97在线精品| 999热在线视频| 婷婷五月天最新网址| 久久加勤综合| 丁香六月在线综合| 欧美性猛交XXXX乱大交极品| 丁香五月天激情综合| se99视频| 99精品视频在线观看| 九九热视频精品| 九九色热| 亚洲精品字幕在线观看| www.夜夜爱.com| 五月激情婷婷四射| 亚州色综合| 丁香五月婷婷五月| 欧美激情久| 91 九色 入口| 亚洲精品五十一区| 成人婷婷五月天| 日日婷婷不卡| 中文字幕AV网址| 五月婷天天搞视频| www.婷婷.com| 色色性爱视频| 婷婷五月天丁香激情| 五月天综合激情网| 综合五月天天天天天五月| 性色播| 97在线精品视频| 亚洲狠狠婷婷| 伊人激情综合网| 日本色频| 久久这里只有欧美| 久久色9| 色婷婷丁香五月| 91av传媒高清在线视频网| 久久五月天免费网站| 色九区| www,五月丁,com| 99碰网站| 色婷婷色综合| 天天干-天天日| 久久久91| 粉嫩AV久久一区二区三区| 高清国产一级婬片a免费| 无码四色色色| 婷婷五月丁香啪啪| 天天狠天天叉| 9热成人在线视频| 久热黄色| 狠狠干综合网| 亚州色综合| 一个色的综合| 丁香六月激情综合| 婷婷五月黄色激情在线| 狠狠爱综合| 伊人网色婷婷五月天| 91超碰人人操| 99热久久这里只有精品2010| 国产成人AV不卡| 国产免费一区二区三区三州老师F1F1.CC | 极品人妻VIDEOSSS人妻| 欧美天堂婷婷日韩| w婷婷五月婷婷w| 九热...av| 99精品丰满| 色色色99韩| 亚洲综合视频网| 中文字幕在线免费观看视频| 99热大| 色五月丁香五月| 丁香五月天AV| 久久精彩视频| 美妞av| 五月天深爱激情网| 丁香五月色激情| 五月丁香啪啪拍| 丁香五月婷婷啪啪啪| 五月婷婷综合影院| 久热免费视频| 日韩五月婷婷久久| 婷婷五月天激情偷拍| 九九婷婷综合| 婷婷五月综合激情| 99成人| 五月天综合在线| 婷婷丁香五月天狠狠| 99a级片| www91色网站| 婷婷综合在线观看视频| 91久久精品视频| 桔色成人在线| 九九热re99re6在线精品| 99这里只有精品在线| 欧洲色色| 色色色99| 男妓跪趴把舌头伸进我的嘴巴| 久青草大香蕉| 丁香五月色五月| 热99精品视频五月| 欧美电影在线播放| 婷香五月激情视频| 99超级碰免费视频| 婷婷在线五月综合| 久久婷网| 另类综合激情| 99精品成人无码A片观看金桔| sisi热国产| 久色网址| 中文字幕簧片| 国产成人精品一区二区三区视频 | 中文字幕无码人妻少妇免费视频| 亚洲成人人人操| 综合超碰熟| 成人视频在线免费播放| 色噜噜,噜噜色| 69热91天堂| 国产成人99久久亚洲综合精品| 久久日曰| 五月丁香六月色| 国产亚洲成AV人片在线| 操操碰| 玖玖五月| 久久99激情| 精品无码久久久久久久久| 99,色| 亚洲视频在线观看| 婷婷色色播五月天| 99在线免费视频| 激情五月影院| 国产在这里只有精品| www久久艹| 九热视频| 26.uuu丁香五月婷婷| 激情小说五月天社区丁香| 色婷婷色综合久久精品V| 国内裸舞二区| 第四色网婷婷| 五月丁香婷婷钟和色图| 婷婷五月天伊人| 五月四色婷婷| 丁香蜜臀黄色婷婷五月天| 激情婷婷丁香五月天| 99视频精品视频| 激情五月天情色| 夜夜爽天天爽| 丁香五月激情六月欧亚激情综合导航 | 超碰97在线观看免费| 色天五月天在线观看视频| 大香网伊人久久综合| 亚洲妇女熟BBW| 日日婷婷不卡| 五月天天丁香婷婷在线中| 西西4r午夜剧场| 色欲婷婷五月天| 五月婷婷丁香在线视频| 亚洲旡码| 日韩国产在线精品| 成功精品影院| 亚洲九九视频| 亚洲综合在线视频| AV在线观看网站| 九九热这里只有国产精品| 九九色热| 五月天丁香网| 丁香五月91| 日操夜操天天操不卡| 五月丁香六月激情在线| 91热99| 色五月激情五月天| 日日.c| 五月色婷婷综合丁香精品无遮挡| 人人草公开操| 狠狠色丁香久久久婷| 五月丁香六月婷婷综合| 一级无码作爱片| 久久久久er热| 亚洲日日日| 五月 成人 婷婷| 中文字幕乱轮| 五月天激情久久| 丁香五月激情婷婷| xxx.色婷婷| 日日夜夜噜噜爽爽| 婷婷的激情五月| 一逼色综合| www.99久久久| 人人爽人人射-美女久久久久久久久久-成人AV | 色色99| 五月天淫乱视频| 五月婷俺去也| 综合久色五月| sewuyuejiqingwang| 色婷婷五月天天天天天| 午夜精品777| 六月婷五月丁香| 色九月国产| 操比激情五月| 色婷婷免费观看| 99日本黄站| 在线中文字幕视频| 九九视频这里只有精品在线播放 | 国产欧美精品AAAAAA片| 丁香狠狠干| 99热传媒| 69久久99精品久久久久婷婷| 99er这里只有精品视频| 91啪级电影| 天天干、天天日日| 亚洲视频五区| 风流少妇A片一区二区蜜桃 | 97精品综合| 婷婷激情小说网| 久青青久| 五月婷婷69| 五月色欧洲| 久久婷婷操| 久久综合五月| 欧美操人| 色色哒五月婷婷六月丁香| 色色色图| 精品久久人妻| 粉嫩AV久久一区二区三区| 久久人妻熟女一区二区| 久久大香免费| 亚洲激情丁香五月基地| 色偷偷色婷婷| 成人做爰A片免费看网站找不到了| 久久九九激情五月天| 月色色综合婷婷网| 99热无码精品| 九九人人精品| 丁香六月天婷婷色| 欧美日韩999| 先锋资源996| 久久丁香五月| 日韩艹比| 九九视频网| 五月天色婷婷网| 亭亭色网| 操婷婷基地| 丁香5月激情网| 亚洲丁香五月| 另类在线| 色色色色丁香| 思思热精品在线视频| 在线理论片| 色月丁| 久热这里只有精品6官网亚洲| 亚洲另类婷婷五月综合| 婷婷五月在线视频| 五月丁香色| 亚洲色色色色| 婷婷五月天丁香花| 久久伊人大香蕉| 香蕉AV777XXX色综合一区| 色婷久久| 激情五月天婷婷| 久久五月综合| 日韩黄在免| 99久久婷婷| 日屌日日操日日色| 操逼电影免费看| 婷婷丁五月| 日日干日日| 操老逼综合网| 一根材五月婷成人| 另类天堂| xxxx五月| 六月丁香六月婷婷欧美| 激情婷婷五月丁香啪啪啪| 亚洲国产婷婷色五月 | 色九九综合| 综合超碰熟| 99性爱无码| 日本高清久久| 99精品视频在线6| 无码激情| 久热这里只有精品3| 五月天综合| 日韩野外 无套| 五月婷婷和六月| 五月天婷婷久久视频| 色婷久九| 超碰99热| 五月婷婷激情综合在线| 色婷婷五月天偷拍| 日本女天天爽| 无码少妇高潮喷水A片免费 | www,com,五月色色| 9精品视频在线| 天天狠天天狠| 国产日韩欧美| 99热大片| 亚洲无码免费看| 婷婷五月成人系列| 五月婷婷导航| 亚洲av成人在线| 网色99| 99九九在线| 精品人人操| 人人妻人人澡| 91精品电影18T| 日产精品一线二线三线芒果| 日韩精品色| 激情五月婷婷综合网| 色五月开心开心五月激情五月| 国产看真人毛片爱做A片| 97色色色视屏| 五月丁香另类网| 色五月影视| 丁香五月婷婷亚洲激情四射| 伊人婷婷大香蕉| 人人妻人人澡| 欧美搡BBBBB摔BBBBB| 色婷婷六月开心中文字| 人人妻人人澡人人爽| 女人天堂久久| 国产色婷婷亚洲| 爱穴久久| 综合色色网| 99热精品在线播放观看| 综合久久六月| 婷婷五月天网| 99视频只有这里精品| www久久久久| PORNY九色9l自拍视频成人| 综合色情网| 婷婷五月花| 婷婷基地成人五月天| 大香伊人婷婷| 丁香五月欧美| 五月婷婷丁香俺日污视频| 99久久精品国产色欲| 91九色在线| 精品无码色| 国产原创视频91九色| 五月色婷婷影院| 日本天天综合| 丁香五月中文字幕| 香蕉久日夜| 超碰免费99| 日本婷婷网| av在线观看网址| 激情小说视频图片| 综合网激情| 激情深爱婷婷网| 日韩精品VIP| 色婷婷九月综合| 丁香五月激情月| 九九久久综合| 欧洲不卡视频| 久草五月天| 人人爽天天莫| 人人性久久| 天天射影院| 五月激情综合网| 日韩狠狠色婷婷| 婷婷爱五月| 97碰碰碰免费公开在线视频| 99热在线观看| 亚洲五月丁香六月婷婷| 国产婷婷五月天| 亚洲成人精品三区| 蜜臀AV在线观看| 五月婷婷色影院| 婷婷五月丁香久久| 五月色情婷婷开心五月色情| 色综合久久888| 久久的爱大香蕉| 亚洲V国产V欧美V久久久久久| 五月丁香精品| 亚洲成人av在线| 噜噜久| 99热精品在线播放观看| 日本综合色图| 丁香五月婷婷黑人妻黄色电影院| 一区三区视频有限公司| 欧美婷婷综合| 大香蕉视频婷| 久久99草五月婷婷| 婷婷干| 中文字幕无码人妻少妇免费视频| 欧美在线视频99| 九九综合九九| 色三级色三级| 色999五月色| 五婷婷六月合| 99热这里只有精品98| 五月激情视频| 天天操夜夜爽天天操| 超碰免费大香蕉| 亚洲精品中文字幕成人片| 一级黄色片看看| 双性美人被调教到喷水A片| 色婷婷六月天| 色啪网| 天天射影院| 很很干天天干| 成人做爰高潮A片免费视频| 丁香五月成人社区| 九九在线视频| 69凹凸成人综合网| 色婷婷狠狠18yy| 日韩人妻在线播放| 性色av大香综合| 九色 在线| 天天操中文字幕| 久久综合丁香| 狠狠色丁香久久久婷| 九九视频免费| 五月丁香色婷婷熟女| 五月天婷婷深深爱| 日本色狠狠| 日韩淑女人妻luan伦激情精品一区二| 婷婷五月天天aV| 99re热免费观看视频精品| 欧美婷婷色五月| 五月天婷婷在线AN| 人人综合久| 激情丁香五月天| 亚洲乱码日产精品BD| 亚洲乱码日产精品BD| 日本综合99| 九九九九九九综合| 九九热这里只有精品首页| 日日操,日日爽| 九九视频这里有精品| 天天做天天爱天天爽综合网| 欧美性爱五月天| 婷婷伊人网| 99ri网站在线观看| 另类视频综合| 婷婷五月丁综合| 色色99| 日日色综合| 成人五月天综合网| 欧洲一区二区| 天天摸夜夜爽天天做| 天天狠狠干| 日韩综合久久| 夜色热久| 九九热这里只有精品首页| 六月婷婷日| 五月婷婷开心五月| 大香蕉婷婷| 超碰99热在线观看| 99热这里只有精品手机在线观看| 美女天天爽| 中文av网| 天堂五月婷婷| 99精品在线下载| 99riAV国产精品视频| 五月婷婷激情| 99热亚洲精品| 国产裸舞表演WWWW| 国产肥白大熟妇BBBB视频| 青青色com久久| 六月婷婷深深爱| 岛国AV网| 日本熟妇乱妇熟色A片蜜桃| 亚洲色综合色网| 天天插天天草人人玩| WWW.桔色成人.COM| 亚洲综合视频八| 欧美丁香婷婷天天操| 色五婷婷开心缴| 丰满人妻一区二区三区| 大香蕉网站,大香蕉综合| 色五月天天| 久99热| 成人免费视频一区| 天天舔天天摸天天透| 五月天婷婷在线播放| 丁香九月综合在线| 婷婷五月天堂一本在线| 成人亚洲精品久久久久 | 婷婷中文字幕欧美| 丁香五月亭亭六月综合激情网| 啪色综合| 色婷婷影| 精品久久人妻| Av在线资源| 色婷婷五月婷婷五月婷婷五月| 玖玖资源在线视频| 综合久久综合| av色婷婷| 五月丁香婷中文| 五月婷婷视频| 大香蕉 伊人夜| 婷婷五月天啪啪| 日韩二区搞逼插逼毛片| 天天操夜夜玩!| 五月天婷婷色色| 思思久久网| 黄网免费看| 色色色97| 在线观看av网站| 亚洲无aV在线中文字幕| 亚洲第一综合| 九九热99免费视频| 97久久久久| 99手机在线精品视频| 99色视频在线| 超级黄色片| 色婷婷天堂| 五月婷婷深深爱| 91色操| 性生活视频98791| 久操福利| 久热久色| 夜夜嗨一区二区三区直播内容 | av大香蕉| 激情二色月| 610018岁成人视频| 深夜A片| a毛片二逼wwwwwwwwww| 九一99| 免费看片在线观看| 亚洲操精品| 色色综合色视频| www久久久| 欧美丁香六月激情视频| 亚洲激情六月| 亚洲综合1024| 五月丁香直播| 青青草婷婷久久| 婷婷99狠狠躁天天躁中| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 777精品成人a v久久| 激情婷婷狠狠干综合| 综合五月天完整| 九九人人精品| 婷婷五月天成人网| 综合久久五月天| 色七七九九| 99综合视频| 九九色热视频| 99碰超| 四川女人毛多水多A片| 五月婷婷六月丁香色| 91色噜噜狠狠狠狠色综合| 天天狠狠夜夜狠狠2023| 九九热视频免费| 99碰网站| 99色爱| 亚洲一区二区无遮挡A片| 五月婷婷色播视频| 91精品啪| 中文中文在线| 五月婷精品| 久久在线人妻| 99久久久免费| 高清av在线国产| 操骚货在线| 四色AVwww| 97人人干| 婷婷色偷拍| 中文成人在线| 激情婷婷丁香五月天| 五月婷婷免费| 亚洲色色色色色色色色色| 成人精品免费在线观看| 99色色网| 精品网站:999WWW| 日本性激情色播| 九九热啪啪| 色婷婷8| 丁香五月伊人| 亚洲99在线| 色婷婷先锋| 色五月丁香六月资源站| ′久久99一| 在线五月婷| 亚洲精品又粗又大又爽A片| 九九99香蕉在线视频播放| 五月婷婷和六月| 67194成I人在线观看线路1| 丁香五月伊人| 婷婷色五月大香蕉在线| 99精彩视频| 淫视馆aV二区一区| 五夜丁香| 亚洲丁香婷婷丁香五月天激情| 六月丁香五月激情网| 丁香色五月婷婷17C| 中文字幕综合| 五月丁香综合中文| 伊人五月天久久| 一级黄在线| 亚洲精品无码一区二区| 亚洲精品99| 久久激情综合| 六月99天天婷婷激情综合| 五月婷婷开心五月| 欧州色色| 深爱激情丁香| 婷婷五月天国产在线播放| 色丁香婷婷| 综合六月激情婷婷| 人人人舔人人人操人人人摸人人人97| 五月天婷爱综合| 天天操天天操| 热99这里只有精品视频| 五月丁香六月欧美| 激情婷婷五月基地| 婷婷五月深爱五月| 五月天亚洲色| 另类 在线| 色色五月天网站| 色色激情网| 亚洲超碰在线| 操碰97| 国产亚洲成AV人片在线观黄桃| 五月色综合| 亚洲V国产V欧美V久久久久久| 国外亚洲成AV人片在线观看| 狠狠五月婷婷| 9色在线视频精品观看| 9一精品视频观看| 色色色色色色色色色色色色色五月天| 99热99草97| 婷婷97碰碰| 97天堂| 99re思思在线视频| 都市激情小说婷婷| 女人被男人吃奶到高潮| 大香蕉综合| 人人操AV| 草久私拍| 久久色婷婷| 天天日夜夜高潮| 九九热思思热| 人人爽天天爽| 婷婷五月色| 被男人添B超爽视频| 67194线路二在线观看| 五月间天堂综合| 色色五月天激情| 亚洲综合干| 五月激情综| 91欧美日韩综合| 八戒青柠影视剧在线观看| 五月婷婷亚洲天堂97色婷婷| 噜噜狠狠色综合久| 丁香婷婷综合精品六月初| 丁香五月激情月| 婷婷婷婷色| 97色色婷婷| 亚洲亚洲人成综合网络| 丁香五月激情综合婷综| 这里只有精品视频国产| 人人干av| 国产肥白大熟妇BBBB视频| 无码一级片| 99re66热这里只有精品| 深爱激情网五月天| 亚洲va成人va成人va在线观看| av免费在线看不卡无毒| 91精品久久久久久久久久久久| 涩综合在线| 亚洲热视频| 九九色色| www,久久久| 久久婷婷色五月| 思思热精品在线视频| 综合另类激情| 99热国产国产| 六月丁香啪啪啪| 20253AV| VA婷婷| 噜噜噜久久| 天堂伊人干| 蜜臀丁香黄色婷婷五月天| 日本人人xxx| AA片在线观看视频在线播放| 99在线播放视频| 丁香六月成人| 日本V在线观看不卡视频网站| 久久九九网| 久久婷婷五月天蜜桃| 99视频| 激情五月深爱五月观看| 婷婷综合视频| 中文网婷婷字幕婷| SS丁香五月婷婷| 成人在线日韩| 久久之人妻| 久久狠狠干| 另类丁香综合| 操人妻视频91| 抽插特写| 五月涩涩网| 欧美搡BBBBB摔BBBBB| 九九AV| 伊人干综合| 日本久久精品18| 综合久久99| 超碰A V在线| 开心五月婷| 一级片操逼视频| 激情综合网,婷婷| 任你爽视频| 色五月婷婷狠狠撸| 啊v视频在线观看| AV九九| 五月婷婷色| 丁香六月婷婷开心| 九九99在线免费在线观看视频| 色色狼人综合| 大香蕉婷婷五月天| 亚洲永久四色| 天天综合色| 日韩欧美一区二区三区四区| 播播网色播播| 欧美va国产va| 性按摩玩人妻HD中文字幕| www.日日日.com| www.9操| 色婷婷五月综合网| 91色色色视频| 五月婷视频在线| 91精品婷婷国产综合| 综合久久综合久久| 五月天无码| 极品人妻VIDEOSSS人妻| 久久婷婷亚洲五月天| 日韩欧美成人网| 99热在线只有精品| www.色色五月天.com| 久草A片| 另类激情五月天。| 国产精品a无线| 婷婷开心激情综合五月天| 色婷婷91激情小说| 婷婷欧美激情综合| 激情小说五月天社区丁香| 超碰人人在线| 综合色综合| 久久狠婷婷| a在线观看| 99热6这里之有精品| 欧美婷婷丁香社区在线播放| 五月丁香六月婷婷欧美综合| 亚洲AV日韩无码| 成人短视频在线观看| Www.婷婷五月| 99热在线资源| 丁香五月天激情综合| 五月婷婷手机在线| 日韩黄色电影| 久久99综合| 精品久久66| 色欲天天综合网| 久久精品99国产精品日本| http://www.sd-xiangsu.com/| 丁香激情五月| JAPANRCEP老熟妇乱子伦视频| 国产资源91在线| 99热99精品| 成人国产欧美大片一区| 色五月AV| va中文资源在线观看| 91九色PORNY中文啦| 日本综合色图| 九九色视频| 99热国产| 开心久久网婷婷| 99色视频| 五月丁香六月激情综合| 六月婷伊人| www.久久99热地址发布| 9久热精品在线视频| 夜夜躁婷婷AV| 日逼免费视频| 亚洲va欧美| 五月婷婷丁香综合,亚洲天堂| 夜夜爽天天爽| 99激情视频| 欧美熟女乱又伦| 中文字幕婷婷| 日韩五月婷婷| 免费视频WWW在线观看网站| 丁香五月综合激情性爱| 婷婷五月天激情五月天网站| 午夜丁香丁香婷婷| 9伊人网| 婷婷在线五月综合| 日本欧美成人片AAAA| 激情五月综合婷婷| 六月五月婷婷| 色月视频| 色情综合网| 九九十99视频| 中文字幕av网站| 精品久久久久成人码免费动漫| 在线婷婷| 五月婷婷视频在线观看| 影音先锋人妻出差| jiujiu无码五区| 五月丁香啪| 日韩色久| 久久婷婷五月综合啪| 精品AV无码超碰| 五月色情| 国产精品久久久久久久久久| 日韩AV大全| 99热爱爱干干日| 婷婷日欧美在线观看| 婷婷丁香五月天在线| 熟女五月天久久综合| 婷婷五月天美女| 久久女婷| 欧美日综合| 久久婷.com| www99在线观看视频| 激情伊人网| 五月丁香六月婷婷综合| 色五月av| 五月婷婷官网色| 久久er99| 99热这里全是精品| 天天高潮夜夜爽| SESE无码AV| 色偷偷狠狠| 丁香五月欧美色综合| 9999热这里只有精品| 99精品7| 激情五月视频| 天天色综合网吨吧| 九九精品在线观看视频6| 五月婷婷之美女图片| www.五月天激情| 99热在线只有精品| 激情亭亭五月| 婷婷五月电影| 六月丁香啪啪| 婷婷五月成人| 久久一级AV| 六月婷综合| 激情文学 综合 九月| 一操久久| 情色五月天网站| 五月开心婷婷极品激情| 99热20| 人人干Av| 色综合另类| 成人短视频在线| 五月综合视频| 中文字幕视频色婷婷| 碰久久精品w| 在线观看免费狠狠色丁香香综合| 欧美日韩123| 激情六月下句是什么| www.人人操人人看人人想人人摸 人人人人操,COM| 色五月丁香激情| 色婷婷小说| 狠狠人妻色综合| 91久久久久久| 182无码| 国产avapp 网| 九九综合网| 狠狠99| 丁香五月婷婷无码AV| 丁香五月婷婷成人网| 五月天亚洲色| 天天干天天操天天爽| 日本黄 色 片| 久久激情五月网| www.天天干.com| 十月丁香九月婷婷综合| 五月色婷| 极品精品一区二区三区在线| 91人人操人人看| 丁香五月婷婷五月天在线| 五月丁香激情婷婷综合| 91无码高清| 熟妇内谢69XXXXXA片| 伊人久热91| 婷婷激情五月天综合| 99re视频精品| 成年人丁香五月| 激情超碰网| 91精品熟女| 婷婷六月激情| 亚洲乱码日产精品BD| 婷婷丁香综合色AV| 激情五月天婷婷图| 韩国天天婷婷| 色婷五月| 在线资源av-超碰中文在线-成人AV| 伊人大香五月天| 成功精品影院| 91久久久久久久久久18| 99热最新精品| 深爱五月日韩| 日日噜噜夜夜狠狠久久丁香六月| 大香蕉丁香婷婷| 婷婷五月天成人娱乐| 99综合| 日本二级毛片二级毛片| 97干在线视频| 婷婷丁香五月亚洲17cao| 中国女人做爰A片| 婷婷五月电影院| 五月天六月婷婷| 国产毛片精品一区二区色欲黄A片| 六月丁香综合| 五月丁香色六月激情干大屄| 国产精品久久久久久久久久| av网址在线| 六月丁香五月婷婷| 两性婷婷丁香五月| mmm1717.6dbm人人爱人人操| 五月丁香久久网| 精品九九网| 亚洲国产精品综合色区| JAPANRCEP老熟妇乱子伦视频 | 国产XXXX搡XXXXX搡麻豆 | www天天干| 婷婷爱五月天| 激情五月综合网最新| 婷婷精品综合| 在线看九一V图片| 天天肏屄夜夜爽| 五月丁香成人| 久久激情五月网| 99热在线这里| 色吧网91| 五月婷婷久久网| 99re6在线视频精品免费| 五月丁香手机在线| 999热在线视频| 91精产品自偷自偷综合| 深爱综合网| 9色免费网| 婷婷五月天久久久| 久久久久久久久久久久久久久久久精典| 成人婷婷五月天| 大香蕉520| 五月伊人综合| 日韩成人综合网| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 欧美婷婷九月| 79精品视频在线观看,| 色色色色色色色色色色色色色色,网站| 婷婷玉月丁香五月在线视频| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 九月婷婷综合八月丁香在线观看 | 日本婷婷色| 青青草原精品久久| 伊人久久大香线蕉亚洲五月天,| 五月花丁香婷婷| 色欲色香综合网站| 国产欧洲欧洲精品久久| 久久婷婷丁香视频网| 人妻久久婷婷| 婷婷午夜| 日日日日日| 五月开心啪啪| 精品操逼一区二区| 97操碰在线视频| 久久久久9| 色色五月天婷婷| 26uuu国产精品| 日韩中出视频| 六九色综合婷婷五月天| 国产9色在线/日韩| 99热97| 五月天婷婷激情小说| 老师高潮流白浆喷水的A片| 97婷婷五月天| 99九九玖玖| 99re这里只有| 五月丁香六月停停| 色月丁| 大香蕉伊人久久| 欧美久久五月婷婷| 五月六月丁香激情| 国产精品操| 99自拍视频在线观看| 激情亚洲色图片丁香综合| 五他月天啪啪啪| 中文字幕在线资源| 激情黄色五月天| 久久区区一二三av| 久久婷婷视频| 1995年关宝慧版蜘蛛女| 蜜乳人妻一区二区三区| 丁香五月天啪啪| 深爱激情五月天婷婷网| 久婷婷五月天影院| 91操碰| 99在线观看视频| jiujiu热在线视频| 婷婷五月成人社区| 五月丁香综合啪啪| 九九热视频免费的| 国产.亚洲.欧洲视频在线| 亚洲激情AV| www.com五月天| 五月丁香爱婷婷深深| 在线免费观看激情视频| 国产成人+综合亚洲+天堂| 国产片色| 色色色五月婷婷| 日韩AC在线免费观看| 香蕉婷婷| 亚洲成人噜噜| 亚洲另类婷婷五月丁香在线播放| 日韩AV在线免费| 日本九九九九| 国产.亚洲.欧洲视频在线| 五月天婷婷青青| 亚洲激情综| www.com久久久久久久久久久久久久久久久| 99啪啪网| 久久机热思思热| 激情网站五月| 色婷婷五月影院| 五月婷婷视频| 99精品无码| 九月婷婷色色| 激情五月综合网最新| 99热这里只有精品21| 亚洲 视频 导航 一区| 国内自拍97在线| 色优久久| 婷婷五月综合在线| 丁香五月六月综合欧美| 五月丁香欧美综合免费视频| 五月天婷婷色| AV动漫不卡无码免费| 丁香婷婷综合影院| 国产欧美精品AAAAAA片| 久久婷婷五月| 九月激情综合| 99免费| 色婷亚洲| 天天干天天操天天上| 五月丁香网av| 99视频内射三四| 大香蕉中文| 婷婷色偷拍| 99久久終合| 婷婷五月天亚洲综合网| 五月日韩中文字幕| 亚洲精品字幕在线观看| 激情五月婷婷五月| 狠狠综合久久| 成人 视频免费观看网站| 综合色播| 99热精品中文字幕| 色欲色香伊人| 99热这里只有精品最新网址| 99色一| 玖久精品视频9| 79成人网| 丁香五月天激情综合网| 日韩AAA| 亚洲人人干| 热久久66| 中文字幕 久久9999| 天天舔天天插天天干| 精品九九视频| 亚洲性色XXXXX| 色五月婷婷啪啪五月| www.五月激情红色| anquye五月| 激情九九这里只有精品| 丁香六月天之亚州热女 | 亚洲另类电影| 深爱激情六月天| 五月丁香啪啪| 天天插天天插| 超碰国产在线播放| 狠狠久久婷五月综合色| 久久月天堂| 日韩五月婷婷| 久久久jd| 开心五月激情网| 日韩欧美一区二区三区四区| 五月人人丁香婷婷五月人人丁香| 伊人婷婷激情| 国产另类综合| 狠狠草在线观看| 久久草中文日韩欧美| 九九久久99| 天天做天天爱天天高潮| 激情小说色五月| 色原狠狠综合| 亚洲综合色色| 99在线免费视| 婷婷五月天亚洲丁香| 青青草成人网| 91在线日| 第九色区av天堂| 九九热狼人| 97碰人人操| 高清无码.com| 日日操,天天操| 五月天婷婷综合网| 久久人人妻| 五月天丁香色色| 六月婷基地| 性色播| 都市激情五月婷婷亚洲| 久久久久网站| 精品国产AV色一区二区深夜久久| 九色视频九色九色91jiuseshipin| 成人啪啪色婷婷久| 五月天丁香六月综合| 九九婷婷五月天影视| 激情五月激情综合网| 欧美激情五月天| 色域五月丁香| av在线资源| 久热中文字幕在线线观看| 综合婷婷都市激情| 91ncom.色| 九九热区一区二区三区| 色播五月天激情| 婷婷伊人綜合中文字幕| 伊人在线大香蕉网| 91丨九色丨大屁股| 丁香五月在线观看完整版| 婷婷伊人久久| 五月久久丁香| 久久香蕉网| 午夜五月天| www.五月天| 综合99在线| 婷婷丁香视频在线观看免费| 99热在线免费| 亚洲激情综合| 久久婷婷激情久久| 色的色综合| 亚洲天堂啪啪| 久热99视频在线观看| 激情丁香五月天综合| 天天婷婷色六月| 97干在线| 99九九在线视频| www激情网| 欧洲色色| 欧美三级黄色片久久| 天天夜天天色天天| 成功精品影院| 人人性久久| 亚洲天码视频www蛋播视频| 久久伊人大香蕉| 色综合久久99色| 夜丁香综合| 国产精品第一国产精品| 亚洲中文字幕av| 99热国产免费| 婷婷丁香成人色综合| 色五月丁香五月五月婷婷| 狼人婷婷久久| www九月婷婷| 婷婷综合在线观看视频| 99色婷婷| 激情综合五月| 91干视频| 综合精品99| 开心五月深爱五月丁香五月激情五月 | 99热这里只有精品8| 182无码| 79成人网| 熟女人妻一区二区三区免费看| 五月激情啪啪| 综合久久综合久久| 99人妻碰碰碰久久久久| 婷婷五月18永久免费视频| 国产精产国品一二三在观看| 人人澡天天色天天做| 99久久九九| 日韩AV片| 丁香色综合| 久久婷婷综合国产| 人人草人人爱| 亚洲国产网站| 丁香色五月天| 五月丁香婷婷综合网色欲| 丁香五月激情视频| 激情五月黄色| 99久久er| 丁香五月天AV在线 | 视频久久9| 五月天色区| 欧美WW在线网| 色色色婷婷| 91青娱乐青青草| 91啪啪网| 香蕉国产2013| 大香蕉精品视频| 久久婷色| 九九这里有精品| 玖月婷婷爱丁香| 俺去也婷婷| 综合色五月天| 九色亚洲| 5月婷婷6月六月丁香| 亚洲无aV在线中文字幕| 91玖玖|