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

ARTICLE DETAIL

資訊詳情

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

Python深度學(xué)習(xí)從入門到實戰(zhàn):環(huán)境配置、圖像分類與模型部署

Python深度學(xué)習(xí)從入門到實戰(zhàn):環(huán)境配置、圖像分類與模型部署 Python深度學(xué)習(xí)這兩年幾乎成了算法崗位的基礎(chǔ)技能網(wǎng)上資料多到爆炸視頻教程、開源項目、付費(fèi)課程一抓一大把。但我在實際帶人的過程中發(fā)現(xiàn)一個挺普遍的問題很多人跟著教程能跑通代碼一換數(shù)據(jù)集、一換場景就懵了模型能訓(xùn)練但不知道該改哪里報錯看得懂英文卻看不懂含義。這份“從入門到實戰(zhàn)”的內(nèi)容就是想幫還在對著屏幕發(fā)愣的朋友跨過“能跑”和“會用”之間那道坎。不管你是剛看完理論準(zhǔn)備動手的學(xué)生還是工作里需要用Python做圖像分類、文本處理、預(yù)測分析的工程師這篇內(nèi)容都值得花十幾分鐘過一遍。我不打算堆砌概念而是直接按照“環(huán)境準(zhǔn)備 → 手寫基礎(chǔ)網(wǎng)絡(luò) → 完成一個真實圖像分類項目 → 調(diào)參優(yōu)化 → 模型落地”的順序來拆解。過程中會穿插我在真實項目里踩過的坑、驗證過的參數(shù)經(jīng)驗以及那些文檔里不會明說的細(xì)節(jié)。1. 別急著跑模型先把環(huán)境和數(shù)據(jù)流程搞利索大多數(shù)入門者第一件事就是裝框架然后照著教程敲幾行代碼看著loss下降就覺得自己會了。但一遇到“訓(xùn)練到一半顯存爆炸”“讀入圖片尺寸不對”“版本更新后API變了”這類問題就完全束手無策。我建議在寫第一行模型代碼之前先花時間把環(huán)境和工作流理順這比任何算法技巧都重要。1.1 版本匹配比你想象的更關(guān)鍵深度學(xué)習(xí)框架對版本很敏感尤其是Python版本、框架版本、CUDA版本的組合。很多同學(xué)裝的是最新的框架結(jié)果發(fā)現(xiàn)某篇優(yōu)秀源碼是半年多前寫的用了一些舊API程序跑不起來第一反應(yīng)是代碼錯了其實只是接口變了。一個穩(wěn)妥的搭配是Python 3.9或者3.10配一個相對穩(wěn)定的大版本比如在實踐中大量使用的2.x版本而不是追求最新的預(yù)發(fā)布版本。這么做有兩個原因一是大多數(shù)開源項目都會被大版本兼容覆蓋你搜報錯信息時更容易找到匹配的答案二是一些第三方工具比如某些數(shù)據(jù)增強(qiáng)庫、可視化工具在大版本上驗證更充分不會突然不兼容。如果你用的是有圖形界面的操作系統(tǒng)CUDA方面我的經(jīng)驗是先看顯卡驅(qū)動支持的CUDA版本再裝對應(yīng)的計算工具包不要反過來。裝反了通常表現(xiàn)為“框架能導(dǎo)入但GPU調(diào)用報錯”這類非常磨人的問題。1.2 用一套固定的目錄結(jié)構(gòu)管理項目這是我從一個老工程師那兒學(xué)來的習(xí)慣現(xiàn)在每次開新項目都照做。一個最小可用的深度學(xué)習(xí)項目建議這樣組織project/ ├── data/ # 原始數(shù)據(jù)集 預(yù)處理腳本 ├── models/ # 模型定義文件 ├── utils/ # 通用工具函數(shù) ├── configs/ # 配置文件參數(shù)集中管理 ├── logs/ # 訓(xùn)練日志和曲線 └── checkpoints/ # 模型權(quán)重保存這種做法最大的好處是你的每個項目都長一個樣換項目時不用重新適應(yīng)。更重要的是后續(xù)你想回頭復(fù)用幾個月前的代碼時“模型定義在哪”“超參數(shù)在哪改”一目了然。我見過太多人把代碼全部堆在一個notebook里訓(xùn)練到一半重新打開連自己用了什么學(xué)習(xí)率都不記得。1.3 數(shù)據(jù)讀取的坑別再用循環(huán)一張張讀了很多初學(xué)者讀圖片是一個循環(huán)里用圖像庫一張張讀取、處理、再進(jìn)模型。數(shù)據(jù)集小的時候看不出問題一旦到了幾萬張圖訓(xùn)練速度會慢到你以為是模型結(jié)構(gòu)有問題。實際瓶頸很可能在數(shù)據(jù)讀取。正確思路是用框架自帶的Dataset和DataLoader機(jī)制配合多進(jìn)程預(yù)讀取。這里的關(guān)鍵參數(shù)是num_workers它代表用幾個子進(jìn)程幫你準(zhǔn)備數(shù)據(jù)。它不是越大越好——我測試過一個8核機(jī)器上面跑圖像分類num_workers從0調(diào)到4訓(xùn)練速度提升了近3倍從4調(diào)到8反而略有下降因為進(jìn)程調(diào)度和內(nèi)存拷貝的開銷超過了收益。另外要養(yǎng)成的好習(xí)慣是先做一個小批量數(shù)據(jù)的跑通測試。也就是只取幾百條數(shù)據(jù)把整個訓(xùn)練流程跑一遍確認(rèn)沒問題了再上全量數(shù)據(jù)。這能幫你把“代碼有問題”和“代碼沒問題但訓(xùn)練慢”區(qū)分開排查效率翻倍。2. 手寫一個兩層網(wǎng)絡(luò)先搞懂訓(xùn)練循環(huán)的每一步在干什么我第一次接觸深度學(xué)習(xí)框架時很容易產(chǎn)生一種錯覺調(diào)用框架的方法構(gòu)建模型調(diào)用框架的方法開始訓(xùn)練像魔法一樣出結(jié)果。直到有一天我需要自定義一個損失函數(shù)才發(fā)現(xiàn)自己對訓(xùn)練過程的理解其實是很模糊的。所以在這一節(jié)我想帶著你用最基礎(chǔ)的方式實現(xiàn)一個兩層全連接網(wǎng)絡(luò)目的是把訓(xùn)練循環(huán)的每個環(huán)節(jié)看個透徹。2.1 數(shù)據(jù)準(zhǔn)備問題是分類還是回歸假設(shè)我們現(xiàn)在要做的是一個二分類任務(wù)給一組二維坐標(biāo)點(diǎn)判斷它屬于紅色類別還是藍(lán)色類別。我們不用現(xiàn)成的經(jīng)典數(shù)據(jù)集而是自己生成一些數(shù)據(jù)方便觀察模型的決策邊界。import numpy as np def create_sample_data(n_samples2000, noise0.1): # 生成兩類數(shù)據(jù)中心分別在 (1,1) 和 (-1,-1) class1 np.random.randn(n_samples, 2) np.array([1.0, 1.0]) class2 np.random.randn(n_samples, 2) np.array([-1.0, -1.0]) features np.vstack([class1, class2]).astype(np.float32) labels np.hstack([np.zeros(n_samples), np.ones(n_samples)]).astype(np.int64) # 加入噪聲讓任務(wù)不是線性可分得那么完美 features noise * np.random.randn(*features.shape) return features, labels這里有個細(xì)節(jié)值得注意數(shù)組類型要用float32而不是默認(rèn)的float64。深度學(xué)習(xí)框架內(nèi)部大量計算默認(rèn)基于32位浮點(diǎn)你輸入64位浮點(diǎn)數(shù)組輕則收到類型不匹配警告重則直接報錯。養(yǎng)成習(xí)慣生成數(shù)據(jù)時就轉(zhuǎn)好類型省得后面到處調(diào)。2.2 網(wǎng)絡(luò)構(gòu)建手寫還是用高層API我們的目的是理解流程所以不急著用現(xiàn)成封裝好的全連接層而是自己定義一個簡單的兩層網(wǎng)絡(luò)import torch import torch.nn as nn class TwoLayerNet(nn.Module): def __init__(self, input_dim2, hidden_dim16, output_dim2): super(TwoLayerNet, self).__init__() # 第一層輸入維度 - 隱藏維度 self.fc1 nn.Linear(input_dim, hidden_dim) # 激活函數(shù)給網(wǎng)絡(luò)引入非線性能力 self.act nn.ReLU() # 第二層隱藏維度 - 輸出維度 self.fc2 nn.Linear(hidden_dim, output_dim) def forward(self, x): x self.fc1(x) x self.act(x) x self.fc2(x) return x這里output_dim2是因為我們要做二分類輸出兩個值分別代表“屬于類別0”和“屬于類別1”的得分后面通過Softmax換算成概率。隱藏維度hidden_dim隨便定一般取16、32、64這樣的值實踐中為了這個例子夠用就可以。有人會問為什么激活函數(shù)放在兩個線性層之間因為如果沒有激活函數(shù)兩層線性變換疊在一起還是線性變換那和一層沒有本質(zhì)區(qū)別。激活函數(shù)引入了非線性模型才有能力擬合復(fù)雜的決策邊界。2.3 訓(xùn)練循環(huán)一個完整batch要經(jīng)過哪些環(huán)節(jié)核心的訓(xùn)練循環(huán)長下面這樣我用注釋寫清每段代碼的含義import torch.nn.functional as F def train_one_epoch(model, x, y, optimizer): # 1. 前向傳播 logits model(x) # 2. 計算損失 loss F.cross_entropy(logits, y) # 3. 梯度清零 optimizer.zero_grad() # 4. 反向傳播 loss.backward() # 5. 更新參數(shù) optimizer.step() return loss.item()在你看著這段代碼發(fā)呆之前我先解釋一下幾個看起來奇怪的操作。optimizer.zero_grad()每次我們計算梯度框架會把梯度累積到每個參數(shù)的grad屬性里。如果你不清零上一次batch算出的梯度會疊加到這一次上面參數(shù)更新方向就會被污染。順序上一定在backward()之前清零。loss.backward()這是反向傳播框架自動計算每個參數(shù)對損失的梯度。你不需要手寫鏈?zhǔn)椒▌t但你要知道梯度是在這一步被算出來的。optimizer.step()拿到梯度之后優(yōu)化器負(fù)責(zé)按照某種規(guī)則更新參數(shù)。比如最樸素的隨機(jī)梯度下降就是param param - lr * grad。學(xué)習(xí)率lr乘在梯度前面控制步長。完整的訓(xùn)練循環(huán)還要涉及劃分訓(xùn)練集和測試集、打亂數(shù)據(jù)順序、分批訓(xùn)練。下面這段代碼把這些都串起來了from torch.utils.data import TensorDataset, DataLoader features, labels create_sample_data() # 按 8:2 劃分訓(xùn)練和驗證集 split_idx int(len(features) * 0.8) train_x, val_x features[:split_idx], features[split_idx:] train_y, val_y labels[:split_idx], labels[split_idx:] train_dataset TensorDataset(torch.from_numpy(train_x), torch.from_numpy(train_y)) val_dataset TensorDataset(torch.from_numpy(val_x), torch.from_numpy(val_y)) # 開 4 個子進(jìn)程準(zhǔn)備數(shù)據(jù) train_loader DataLoader(train_dataset, batch_size64, shuffleTrue, num_workers4) val_loader DataLoader(val_dataset, batch_size64, shuffleFalse, num_workers4) model TwoLayerNet() # 常見的優(yōu)化器選擇Adam 是入門階段最省心的 optimizer torch.optim.Adam(model.parameters(), lr0.001) for epoch in range(30): model.train() # 切換到訓(xùn)練模式 total_loss 0.0 for x_batch, y_batch in train_loader: loss_value train_one_epoch(model, x_batch, y_batch, optimizer) total_loss loss_value avg_loss total_loss / len(train_loader) # 每輪結(jié)束在驗證集上看效果 model.eval() # 切換到評估模式 correct 0 total 0 with torch.no_grad(): # 評估時不需要計算梯度 for x_batch, y_batch in val_loader: pred model(x_batch).argmax(dim1) correct (pred y_batch).sum().item() total y_batch.size(0) accuracy correct / total print(fEpoch {epoch1:02d} | Loss: {avg_loss:.4f} | Val Acc: {accuracy:.4f})這段代碼里有兩個容易被忽視的實際問題。一個是model.train()和model.eval()某些層如Dropout、BatchNorm在不同模式下行為不一樣訓(xùn)練時和評估時要有區(qū)分。雖然這次的小網(wǎng)絡(luò)沒用到這類層但養(yǎng)成這個習(xí)慣很重要將來換復(fù)雜模型就不容易出錯。另一個是torch.no_grad()評估的時候我們不反向傳播自然也不需要記錄計算圖上的梯度信息。用這個上下文管理器能省下大量內(nèi)存長訓(xùn)練的驗證階段特別有用。我第一次完整手動寫完這個循環(huán)時才真正理解了“梯度清零”“前向”“反向”這些詞在代碼里到底對應(yīng)哪個操作。之后使用高級工具時心里就踏實多了。3. 圖像分類實戰(zhàn)數(shù)據(jù)、模型、訓(xùn)練三件套怎么搭才不翻車過了手寫網(wǎng)絡(luò)這一關(guān)接下來就可以做一個有實際意義的項目了圖像分類。這是深度學(xué)習(xí)最典型的應(yīng)用場景各種基礎(chǔ)概念都能在實踐里對應(yīng)上。3.1 選一個不用折騰的數(shù)據(jù)集做入門實戰(zhàn)沒必要一上來就用那種幾十G的大數(shù)據(jù)集找一個小而經(jīng)典的數(shù)據(jù)集練手就夠了。我常用的是一個包含多種類別的小規(guī)模圖像數(shù)據(jù)集圖片尺寸小而規(guī)整類別是日常物品對初學(xué)者非常友好。這類數(shù)據(jù)集往往可以通過框架的下載接口直接獲取。但需要注意國內(nèi)網(wǎng)絡(luò)環(huán)境下直接從官方源下載有時候會非常慢或者中斷。我的做法是找到下載地址后用下載工具先把壓縮包拉下來再放到指定的數(shù)據(jù)目錄里讓框架直接讀取本地文件。這個過程能幫你節(jié)省半小時的無意義等待。3.2 數(shù)據(jù)預(yù)處理你動圖片的方式?jīng)Q定了訓(xùn)練效果圖像數(shù)據(jù)不能直接喂給模型原始圖片的尺寸、像素范圍、格式都需要統(tǒng)一。這一環(huán)節(jié)最常見的坑是訓(xùn)練集和驗證集用了不同的預(yù)處理流程。比如訓(xùn)練時你做了隨機(jī)裁剪、隨機(jī)翻轉(zhuǎn)等增強(qiáng)操作驗證時也做了同樣的隨機(jī)操作那驗證結(jié)果就被污染了。正確的做法是訓(xùn)練集用帶隨機(jī)性的預(yù)處理驗證集只做固定操作比如縮放、歸一化保證評估結(jié)果穩(wěn)定、可復(fù)現(xiàn)。標(biāo)準(zhǔn)的數(shù)據(jù)變換常這樣寫from torchvision import transforms # 訓(xùn)練階段包括隨機(jī)增強(qiáng) train_transform transforms.Compose([ transforms.Resize((224, 224)), transforms.RandomHorizontalFlip(), # 水平隨機(jī)翻轉(zhuǎn) transforms.RandomRotation(15), # 小角度旋轉(zhuǎn) transforms.ToTensor(), # 轉(zhuǎn)為 Tensor 并縮放到 [0,1] transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]), ]) # 驗證階段不做隨機(jī)操作 val_transform transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]), ])Normalize用的平均值和標(biāo)準(zhǔn)差是圖像領(lǐng)域常見的一套統(tǒng)計值不是隨便拍的。如果你的數(shù)據(jù)集不是自然圖像建議重新統(tǒng)計自己數(shù)據(jù)的均值和標(biāo)準(zhǔn)差。否則圖像分布被拉到奇怪的地方模型會比較難收斂。3.3 模型選型原則不是越深越復(fù)雜就越好圖像分類的模型選擇是一個糾結(jié)點(diǎn)?,F(xiàn)在的預(yù)訓(xùn)練模型很多深度從十幾層到幾百層都有。我的建議分情況數(shù)據(jù)量小每類幾百張直接使用預(yù)訓(xùn)練模型做遷移學(xué)習(xí)凍結(jié)前部分層只訓(xùn)練最后幾層或者只訓(xùn)練全連接分類頭。數(shù)據(jù)量中等可以微調(diào)更多層用較小的學(xué)習(xí)率。數(shù)據(jù)量很大從頭訓(xùn)練也不是不行但訓(xùn)練成本得想清楚。自己在Google Colab或者本地單卡上跑實驗時我的常用組合是先加載一個預(yù)訓(xùn)練網(wǎng)絡(luò)比如常見的ResNet架構(gòu)替換掉最后的全連接層輸出改為自己的類別數(shù)。加載時設(shè)置pretrainedTrue就拿到了在大型數(shù)據(jù)集上訓(xùn)練好的權(quán)重。這些權(quán)重捕捉了大量通用視覺特征邊緣、紋理、形狀遷移到你的小數(shù)據(jù)集上時效果比隨機(jī)初始化好得多收斂速度也更快。用框架實現(xiàn)遷移學(xué)習(xí)的核心就兩步import torchvision.models as models # 加載預(yù)訓(xùn)練權(quán)重 model models.resnet18(pretrainedTrue) # 替換最后一層讓輸出維度匹配我們的類別數(shù) num_classes 10 in_features model.fc.in_features model.fc nn.Linear(in_features, num_classes)這里的model.fc就是ResNet最后的全連接層。不同模型的分類頭名字不一樣有些叫classifier有些叫head查看官方文檔或者打印模型結(jié)構(gòu)就能確認(rèn)。3.4 訓(xùn)練圖像模型最容易翻車的地方圖像分類項目的訓(xùn)練過程和三件套里說的循環(huán)框架一致但有幾個細(xì)節(jié)我在實踐中反復(fù)踩坑值得單獨(dú)說一說。一個是學(xué)習(xí)率。遷移學(xué)習(xí)場景下預(yù)訓(xùn)練層的學(xué)習(xí)率要低新加的分類頭學(xué)習(xí)率可以稍高。如果統(tǒng)一用默認(rèn)的0.001經(jīng)常會出現(xiàn)預(yù)訓(xùn)練特征被破壞或者分類頭還沒學(xué)好的情況。我習(xí)慣構(gòu)造參數(shù)組時讓不同部分走不同學(xué)習(xí)率雖然代碼多寫幾行但效果穩(wěn)定很多。另一個是過擬合和欠擬合的判斷。訓(xùn)練loss下降但驗證loss上升幾乎可以確定是過擬合這時候考慮增強(qiáng)、Dropout、減小模型容量。驗證loss和訓(xùn)練loss都很高是欠擬合先別看正則化把訓(xùn)練輪數(shù)加長或者加大模型容量。還有一個是Loss不下降時的排查順序。不少人一看到loss不動就開始調(diào)學(xué)習(xí)率、換優(yōu)化器折騰半天發(fā)現(xiàn)是數(shù)據(jù)標(biāo)簽對錯了。我的排查順序是先檢查數(shù)據(jù)流隨機(jī)取一批圖片打印標(biāo)簽和圖片尺寸再檢查維度手動跑一次前向最后才考慮調(diào)參。數(shù)據(jù)錯了后面一切優(yōu)化都是空中樓閣。4. 提升模型效果的三把鑰匙學(xué)習(xí)率策略、正則化、數(shù)據(jù)增強(qiáng)模型能跑通只是起點(diǎn)要讓它在測試集上表現(xiàn)出色需要掌握幾把常用的鑰匙。這一節(jié)把它們一個一個說透也把我實際調(diào)參時的經(jīng)驗放進(jìn)去。4.1 學(xué)習(xí)率最值得花時間研究的超參數(shù)學(xué)習(xí)率是深度學(xué)習(xí)里最重要的超參數(shù)這一點(diǎn)怎么說都不過分。太大loss震蕩不收斂太小收斂慢到讓人懷疑人生。入門時無腦用0.001配Adam問題不大但當(dāng)你發(fā)現(xiàn)訓(xùn)練后期loss難以繼續(xù)下降時就該考慮學(xué)習(xí)率調(diào)整策略了。一個實用的做法是使用學(xué)習(xí)率調(diào)度器在訓(xùn)練過程中讓學(xué)習(xí)率按輪數(shù)衰減。from torch.optim.lr_scheduler import ReduceLROnPlateau # 當(dāng)驗證loss連續(xù)N個epoch沒有下降時學(xué)習(xí)率乘以 factor scheduler ReduceLROnPlateau(optimizer, modemin, factor0.5, patience3) # 每個 epoch 結(jié)束后調(diào)用 scheduler.step(val_loss)觀察了一段時間之后我發(fā)現(xiàn)這個調(diào)度器在真實項目里非常實用。patience設(shè)3的意思是驗證loss連續(xù)3輪沒有改善就把學(xué)習(xí)率砍一半給模型一個“小步慢走”的機(jī)會去翻越loss曲面上的小溝壑比固定衰減更貼合實際訓(xùn)練情況。另一種常見的是一段式衰減策略訓(xùn)練輪數(shù)到達(dá)某個比例之后學(xué)習(xí)率直接降一個量級。這種方式在進(jìn)階比賽中特別常見比如前70%輪用0.001后30%輪用0.0001。原因在于訓(xùn)練初期模型需要大步探索后期則在最優(yōu)解附近精細(xì)打磨步子太大反而容易跳過好位置。4.2 正則化不是所有任務(wù)都該上重量級手段正則化的作用是抑制過擬合但很多人一上來就在模型里堆Dropout和權(quán)重衰減結(jié)果模型欠擬合了。正則化強(qiáng)度要和模型容量、數(shù)據(jù)規(guī)模匹配。# 在優(yōu)化器里設(shè)置權(quán)重衰減 optimizer torch.optim.SGD(model.parameters(), lr0.01, weight_decay0.0005) # 在模型里加入 Dropout 層 self.dropout nn.Dropout(p0.5)weight_decay就是我們常說的L2正則化它給大的參數(shù)額外加懲罰迫使權(quán)重不要過大。遷移學(xué)習(xí)模式下我通常給新加的分類頭開一點(diǎn)權(quán)重衰減但預(yù)訓(xùn)練部分保持較小值或者不動這樣可以在保留預(yù)訓(xùn)練特征的同時降低分類頭過擬合風(fēng)險。Dropout是在訓(xùn)練時隨機(jī)丟棄一部分神經(jīng)元輸出讓網(wǎng)絡(luò)不能過度依賴某幾個節(jié)點(diǎn)。注意它的行為也是分訓(xùn)練和評估的訓(xùn)練時隨機(jī)丟評估時全部保留但按概率縮放。p0.5是常見默認(rèn)不是所有層都適合這個值。我在小網(wǎng)絡(luò)上用過p0.3效果更好這個值得自己試。4.3 數(shù)據(jù)增強(qiáng)不要為了增強(qiáng)而增強(qiáng)數(shù)據(jù)增強(qiáng)相當(dāng)于“免費(fèi)”擴(kuò)大訓(xùn)練集。圖像領(lǐng)域最常用的是隨機(jī)翻轉(zhuǎn)、隨機(jī)裁剪、色彩抖動。但這里有個隱藏的坑增強(qiáng)方式必須符合你的部署場景。如果你要識別的是衛(wèi)星圖像里的建筑物水平翻轉(zhuǎn)沒問題但如果你要識別的是數(shù)字7翻轉(zhuǎn)后可能像別的符號那翻轉(zhuǎn)就不合適。如果圖片里物體方向有語義含義比如區(qū)分前后旋轉(zhuǎn)增強(qiáng)也可能幫倒忙。經(jīng)驗法則是先列出一個測試集里面包括一些你希望模型在真實場景中正確處理的樣本然后去檢查每種增強(qiáng)方式是否可能讓原本“正常”的圖像變成現(xiàn)實中很少出現(xiàn)的形態(tài)。如果會就不要用。4.4 訓(xùn)練曲線怎么看一套簡單的判斷流程我習(xí)慣把訓(xùn)練過程里的訓(xùn)練loss、驗證loss、學(xué)習(xí)率三條曲線畫在一張圖里。判斷模型狀態(tài)有一套比較固化的流程訓(xùn)練loss高、驗證loss高模型容量不夠或?qū)W習(xí)率太小先加大訓(xùn)練輪數(shù)或調(diào)大學(xué)習(xí)率。訓(xùn)練loss低、驗證loss高過擬合。先上數(shù)據(jù)增強(qiáng)再上Dropout最后考慮權(quán)重衰減。訓(xùn)練loss和驗證loss都震蕩學(xué)習(xí)率偏大或者batch size太小導(dǎo)致梯度噪聲大優(yōu)先調(diào)小學(xué)習(xí)率。驗證loss曲線突然上升可能學(xué)習(xí)率調(diào)度觸發(fā)了過早的衰減或者訓(xùn)練數(shù)據(jù)里有臟數(shù)據(jù)檢查那一輪的訓(xùn)練樣本。這套判斷流程在我自己調(diào)參的幾年里反復(fù)使用準(zhǔn)確率高也省時間。它不能幫你自動找到最優(yōu)參數(shù)但能幫你快速定位問題方向避免瞎試。5. 模型部署與跨環(huán)境運(yùn)行的實戰(zhàn)經(jīng)驗總結(jié)訓(xùn)練出來一個精度不錯的模型只是項目的一半。模型要真正發(fā)揮作用必須能部署到目標(biāo)環(huán)境。這一節(jié)聊聊從訓(xùn)練到部署之間的常見問題和我積累的應(yīng)對經(jīng)驗。5.1 兩種保存模型的方式別把架構(gòu)和權(quán)重搞混保存模型有兩種常見方式一種是把整個模型對象都存下來另一種是只存權(quán)重參數(shù)。我強(qiáng)烈推薦只存權(quán)重參數(shù)理由有兩個一是文件體積小二是兼容性好——模型結(jié)構(gòu)如果更新了權(quán)重文件也能配合新代碼加載。保存權(quán)重的寫法# 保存 torch.save(model.state_dict(), checkpoints/model_best.pth) # 加載前提是你定義了和原來一模一樣的模型結(jié)構(gòu) model build_model(num_classes10) model.load_state_dict(torch.load(checkpoints/model_best.pth, map_locationcpu)) model.eval()這里有個很細(xì)節(jié)但很重要的點(diǎn)加載后記得調(diào)用model.eval()。如果你忘了那些訓(xùn)練時行為不同的層比如Dropout還會保持在訓(xùn)練模式部署時預(yù)測結(jié)果會帶隨機(jī)性同一個輸入兩次預(yù)測可能得到不同結(jié)果。這個問題在模型上線時非常難排查我見過有人因此懷疑數(shù)據(jù)出問題。5.2 模型導(dǎo)出的格式與推理優(yōu)化如果你要把模型放到服務(wù)里跑或者嵌入到客戶端應(yīng)用里純Python環(huán)境通常不是最優(yōu)選擇。常見的做法是把模型導(dǎo)出為一種與訓(xùn)練框架解耦的推理格式這樣部署時不需要安裝整套深度學(xué)習(xí)框架也能獲得更好的推理性能。以圖像分類為例導(dǎo)出流程大致如下將模型切到評估模式構(gòu)造一個示例輸入尺寸和真實輸入一致導(dǎo)出為開放神經(jīng)網(wǎng)絡(luò)交換格式即ONNX用專門的推理引擎如ONNX Runtime加載并推理import torch # 示例輸入與訓(xùn)練時的輸入尺寸一致 dummy_input torch.randn(1, 3, 224, 224) # 導(dǎo)出為 ONNX torch.onnx.export( model, dummy_input, model.onnx, input_names[input], output_names[output], dynamic_axes{input: {0: batch_size}, output: {0: batch_size}}, )dynamic_axes指的是允許batch維度可變這樣部署時一次推理1張圖、8張圖都可以不用重新導(dǎo)出。這個參數(shù)在實際服務(wù)場景里很實用因為請求流量不可能是恒定批量。用推理引擎做加速的核心是把模型的計算圖優(yōu)化一遍合并算子、減少不必要的重計算。同一個模型在推理引擎上跑速度往往比原始Python環(huán)境快不少尤其在CPU上的提升更明顯這對沒有GPU的部署環(huán)境是很大的優(yōu)勢。5.3 跨版本加載權(quán)重的痛苦回憶我之前接過一個老項目對方發(fā)過來一個權(quán)重文件告訴我“模型是在舊版本框架下訓(xùn)練的”。我當(dāng)時沒留意直接在新版本環(huán)境里加載結(jié)果報錯說權(quán)重鍵不匹配。查了半天才發(fā)現(xiàn)舊版本里某一層的命名是features.12.dense_attention之類新版本里改成了encoder.layer.12.attention權(quán)重文件里key對不上。這類問題的解決思路有三種一是找到和你原來訓(xùn)練版本完全一致的框架環(huán)境加載權(quán)重后重新導(dǎo)出二是寫一個鍵名映射腳本手動把新舊key對應(yīng)起來三是如果權(quán)重數(shù)量級不大直接用腳本修改權(quán)重文件里的鍵名。最后一種方法處理大量模型時不推薦但小模型很實用。為了避免這種麻煩我現(xiàn)在每次訓(xùn)練任務(wù)都會建立一個環(huán)境配置文件把框架版本、Python版本、依賴庫版本都固定下來。項目結(jié)束還會生成一個完整的依賴鎖定文件方便以后復(fù)現(xiàn)。這樣做在別人接手的時候價值更大——省去了對方大半天的排查時間。5.4 實際部署里容易忽略的邊界情況訓(xùn)練時你的數(shù)據(jù)集都是規(guī)整的、經(jīng)過預(yù)處理的但真實場景往往不這樣。部署時我吃過幾個虧分享出來提醒你注意。輸入尺寸不一致訓(xùn)練時Resize((224, 224))是固定尺寸但真實圖片可能是800x600如果你忘了在推理管線里做同樣的縮放模型可能直接報維度錯誤或者輸出垃圾預(yù)測。像素范圍不一致訓(xùn)練時轉(zhuǎn)成張量后像素范圍是0到1再Normalize。推理時如果直接用0到255的原始圖喂進(jìn)去效果會差很多。這類問題測試集上往往發(fā)現(xiàn)不了因為測試集已經(jīng)跟著訓(xùn)練預(yù)處理做了只有線上才會有用戶把原始圖直接傳上來。類別編號混亂訓(xùn)練時的類別順序是這樣的但部署時另一個人的映射表卻是那樣的預(yù)測結(jié)果就全是錯的。我在項目里固定用一個配置文件維護(hù)類別映射任何環(huán)節(jié)都從這里讀避免手寫出錯。我在實際工作中吃過這些虧之后得出的經(jīng)驗是模型部署的最佳實踐是對著訓(xùn)練數(shù)據(jù)預(yù)處理代碼把每一步都一個一個復(fù)現(xiàn)到推理流程里少一步都不行。寧可把代碼寫得啰嗦一點(diǎn)也不要用“我記得當(dāng)時大概這么處理的”這種心態(tài)上線。如果你打算把模型接到一個在線服務(wù)里還需要考慮推理延遲、并發(fā)請求處理、異常輸入過濾等工程問題。這些內(nèi)容單開一篇都說不完但基礎(chǔ)前提是你手上的模型本身能穩(wěn)定輸出正確結(jié)果——希望這篇內(nèi)容能幫你先把這一步走扎實。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
思思热思在线精品视频| 十月色综合| 大香蕉久久青青| 色色色热热热| 亚洲小说欧美激情| 成人看片网站| 色婷婷久久综| 婷婷综合另类| 五月婷婷六月婷| 无码视频国内精品久久久| 操人妻视频91| 色视五月天婷婷| 久久久精品99| 天天肏在线视频| 激情丁香五月| 99国产视频网| 亚洲 在线 性爱 | 丁香五月首页| 五月丁香婷婷啪啪网| 五月婷婷在线视频| 久久99成人性爱高清视频| 国产老熟妇亲子乱对白| www久久久久久| 日本久久天堂| 久婷| 五月丁香久| 激情网狠狠干| 色9月| JAPANRCEP老熟妇乱子伦视频 | 99re这里只有精品免费| 五月丁香色色网| 狠狠狠狠青草| 婷婷天天五月天| 天天拍天天操| 免费AV播放| 久草a片| 九九视频在线免费视频| 久久人妻情侣| 激情五月婷婷啪啪| 深爱婷婷色| 欧洲一区二区| 激情九月婷婷| 91欧美| 日韩美女在线视频19| 婷婷五月天激情四射| 操久久网| 欧美一级色| www.99热这里精品| 婷婷激情人妻| 日韩色色视频| 强辱丰满人妻HD中文字幕| 婷婷五月天色色| 在线观看欧美| 丁香五月婷婷啪啪| 六月婷婷综合| 亚洲无AV在线中文字幕| 一本大道伊人AV久久综合| 五月天激情网图片| 婷婷五月综合体验看| 天天做好综合色| 久思思久视频| 伊人色综合久久久| 超碰激情网| 激情网战码亚洲A| 午夜九九九九九九| 亚洲av网址| 九九激情网| 狠狠干无码| 岛国AV网| 99丁香五月婷| 婷婷综合激情| 国产做爰视频免费播放| 麻豆WWWCOM内射软件| 久婷五月| 99爱99操| 99在线观看视频免费| 五月天丁香网站| 六月婷欧美| 激情婷婷丁香五月天| 色婷婷综合综合网| 人妻中文在线| 五月天丁香啪啪网| 五月99久久| 影音先锋91| 色呦呦美女| 欧美六月| 激情www.98com| 精品久久久久久久人妻| 麻豆雪千夏| 日韩欧美一级大黄网站| 色伊人91在线视频| 97干视频在线| ...婷婷国产成人亚洲日韩| xxx日本东京热| 爱婷婷久久视频| 逼里香不卡| 狠狠色丁香婷婷久久综合| 色五月综合在线| 婷婷免费无视频| 99热这里只有精品69| 丁香五月天网友自拍啪啪啪视频| 91在线日| 欧美久久九九| www.婷婷亚洲基地| 99精品爱| 丁香婷婷啪啪| 91九色白丝| 久久婷婷五月综合| 国产精品国产| 久这里只有精品99| 日本熟女二区| 天天弄天天操| 香蕉乱插| 思思99热这里只有精品6| 天天做天天爱天天综合| 99精品在线| 天天色中文字幕女优AV| 欧美婷婷六月丁香综合色| 啪啪激情网站| 九九热视频精品| 风流少妇A片一区二区蜜桃| 色播色丁香五月| 丁香婷婷久久 | 五月丁香六月婷婷无码| 开心五月激情网| 伊人久久丁香狠狠婷婷综合香蕉| 香蕉久久国产AV一区二区| 三级成人网站| 中文av网| 99毛片| 大香蕉久久| 夜夜夜叫天天天做| 久久久五月天| 丁香婷婷大香蕉| 五月天激情久色| 超碰资源在线| 中国女人内射6XXXXX| 任你日热视频| 精a品a| 超碰人人色| 五月婷婷|欧美| 婷婷五月丁香综合激情小说| 色婷婷久久综合中文久久一本| 久草 tingting| 婷婷综合另类小说| 五月丁香成年黄色| 婷婷五月丁香A∨| 婷婷瑟五月天久久综合| 99综合网| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 亚洲综合欧美色丁香婷婷888月图片| 九九久久综合| 五月丁香婷婷中文| 五月激情网站| 久9热在线视频| 日韩天堂久久| ji'qi'luan'ren'lun| 99爱视频| 五月婷婷综合激情| 九九在线精品| A在线观看| 色色婷婷丁香五月天| 少妇人妻丰满做爰XXX| 99riAV国产精品视频| 亚洲精品国产精品乱码不99| 色九区| 猫咪伊人久久| 精品婷婷| 中文字幕av久久爽一区| 一区二区成人电影| 婷婷色五月丁香六月欧美啪| 久久只有18视频| 人妻免费网站| 五月天激情av| 野外99热| 五月天激情网图片| 手机在线日韩视频中文字幕| WWW,五月| 色婷婷XXXXX| www.久久久久久久| 五月丁香久久综合| 天天综合精品| 伊人超碰| 九久久九精品视频| 丁香成人视频| 激情啪啪五月| 久99| 五月激情综合激情五月| 精品一二三区久久AAA片| 97视频.干com| 97精品综合久久| 久久98| 婷婷四色五月| 婷婷五月欧美综合| 夜色.cnm| 99ri在线视频| 色色五月婷| 婷婷伊人| 五月婷婷综合色啪首页| 99视频在线看| 久婷| 色天天久婷婷| 色色色五月| 色色射| 五月激情婷婷国产精品久久久久久| 亚洲人妻电影| 天天爽夜夜爽夜夜爽精品| 色欲人妻综合aaaaaaaa网| 一起草Av| 婷婷五月天色综合翘| 一本色综合色| 婷婷色爱| 人妻VideOssS人妻| 久久综合丁香| 久综合4| 六月婷婷中文字幕| 六月综和久久| 99啪99| 色播五月网| 亚洲激情免费久久| 99婷婷五月天激情| 久操热| 色大综合| 伊人超碰| 亚洲AV久久久久久久久久久久久久久久 | 婷婷欧美综合| 2020夜夜操天天爽| 婷婷五月香蕉| 丁香婷婷老熟女综合网| 色婷婷狠狠| 亚洲 在线 性爱 | 婷婷五月av| 任你搞网站| 99色色网| 五月婷婷三级| 天天综合在线网| 久久婷婷六月天| 国产精品A片在线| 久久激情视频| 五月婷婷AV| 亚洲丁香五月深爱五月| 99re这里只有精品99| 欧洲综合一区| 成人午夜视频精品一区| 亚洲色频| 色婷婷五月综合| 亚洲色色香蕉| 天天干天天干天天干天天干天天干天天干天天 | 影音先锋偷偷色男人站| 久久五月天精品视频| 狠狠干,狠狠操| 亚洲激情综合| 五月天综合视频| 丁香六月激情综合网| 丁香婷婷九月| 日韩 中文 欧美| 97婷婷五月丁香| 色综合五月天| 久久久天堂国产精品女人| 97操碰碰无码视频| 激情五月天啪啪| 欧美欧盟性爱网| 激情五月丁香五月| 五月婷婷丁香六月| 丁香五月激情啪啪| 久久99成人性爱高清视频| 婷婷色综合| 欧美WW在线网| 色色色在线观看| 午夜激情久久| 亚洲区1| 激情综合网激情五月天| 狠狠操综合| 在线观看的av| 五月婷婷六月丁香综合| 天天搡日日搡aaaaⅩ| 天天夜夜爽| 国产美女精品| wwwwww.色| 丁香婷婷久久老熟女综合网| 五月花综合网| 久久er99热精品一区二区| av久热| www.五月天婷婷| 免费在线观看欧美激情xx小视频| 五月天婷婷乱论小说| 人妻VideOssS人妻高清| 色五月丁香婷婷| 激情五月,激情综合网| 日日撸日日操| 四月丁香五月婷婷久久| 亚洲婷婷基地| 99热在线精品观看| 桃色激情网| 99在线视频播放| 午夜成人在线免费视频| 一区二区免费看| 伊人色综合久久久| 大香蕉婷婷五月| 欧美激情综合色综合啪啪五月| 操人视频91| 五月激情婷婷国产精品久久久久久| 亚洲激情| www久久99| 97人人干| 思思99热这里只有精品6| 99re这里有精品手机在线| 婷婷综合在线观看视频| 色婷婷www| 欧美激情VA永久在线播放| 91人操人人人操人| 狠狠操天天干| 99日热在线视频| 99久久五月婷婷| 婷婷天天色| 色五月婷婷九月| 五月丁香91| 丁香六月婷| 国外亚洲成AV人片在线观看| 丁香五月婷婷久久久| 综合激情专区| 五月丁香婷婷网网网网| 五月激情丁香| 乱码操操| 六六久久黄色| 狠狠色综合网| 99热色在线精品| 亚洲热综合| 久久久WWW| 99精品成人无码A片观看金桔| 国产精产国品一二三在观看| 99热999| 激情99| 人人玩人人橾| 色五月丁香婷婷| 色狠狠色| 亚洲成人av在线观看| 日韩在线视频网站| 精久久色| 天天日,天天插| 亚洲电影在线观看| 97视频91| 天天色色天天| EEUSS鲁片一区二区三区| www.99精品日操伊人乱碰在线| 色婷婷AⅤ| 久久99热这里只有| 5五月综合网亚洲| 婷婷久久色| 99干在线视频| 五月婷婷伦理| 久久 婷婷 五月天| Av在线不卡一区| 噜噜噜噜噜在线| 婷婷色爱| 夜精品无码A片一区二区蜜桃| 欧美久人人| 梁铮版《蜘蛛女侠》在线| 97色色色色色| 无码少妇高潮喷水A片免费| 日韩美女在线视频19| 成人va在线观看视频| 婷婷丁香五月高清| 91 影音先锋| 五月婷婷五月天| 色婷婷丁香五月综合| 色综合天天综合成人网| 婷婷激情视频| 婷婷五月天伊人网| 丁香五月婷婷国产av| 狠狠色丁香| 思思热99热| 欧美成人AAA片一区国产精品| 九九色人| 91狠狠色丁香| 色婷婷色五月综合| 另类综合婷婷五月天欧美视频| 婷婷综合网站| a网站免费观看| 久久丁香五月天| 激情五月婷婷| 天天做天天爰天天爽天天无遮挡| 26UUU欧美| 色九月欧美| 亚洲欧美另类在线23p| 99碰碰| 国产综合视频婷婷| 成人免费高清在线播放| 久久网婷婷| 俺去也在线www色官网| 乱岳熟女50岁| 99色啊| 97色色婷婷| 九九99香蕉在线视频播放| 伊人啪啪网| 丁香婷婷九月在线| 天天爱天天做天天爽| 亚洲mm免费| 丁香色成人| www九月婷婷| 久久成人天| 欧美成人猛片AAAAAAA| 五月天激情综合首页| 大香蕉人妻| 亚洲综合99| 欧美 日韩 成人 在线| 激情亭亭五月| 婷婷久久丁香五月| 五月天综合久久| 夜夜资源站| 99久扒热| 99天堂网| www..com色爱| 色婷网站| 色婷婷五月天激情在线观看| 五夜丁香| 五月丁香人妻| 久久婷婷五月草视频在线播放| 五月丁香色综合| 99热99在线| 丁香五月天之婷婷影院| 777丁香六月青青草婷婷综合久月 五月丁香综合伦理片 | 久久99免费视频网站| 99久久久| 一区二区乱码视频| 99热这里只有精品免费| 丁香六月 人妻| 亚洲亚洲人成综合网络| 激情五月四色| 97热精品| 97人人草| 无码人妻一区二区三区免费九色| 久久无意婷婷| 久久九九网| 欧美丁香婷婷天天操| 日日做A爰片久久毛片A片英语| 色亚洲中文| 婷婷欠久少妇| 丁香六月激情综合| av中文在线| 精品一区二区三区四区五区六区| 色欲天天综合| 99热99在线| 丁香五月成人| 色色性爱视频| 色五月xxx| 天天色天天色天天色天天色天天色| 丁香花大香蕉婷婷综合| 色情五月婷| 婷婷丁香六月五月天| 狠狠干.com| 丁香六月综合| 久久6这里只有精品| 丁香五月天堂亚洲社区| 97自拍视频在线| 婷婷五月天AV激情| 日韩欧美成人片| 99∨VTV| 婷婷丁香六月综合激情站| 婷婷丁香花五月天| 亚州色综合| 久久免片| 日本五月天婷婷丁香| 99操逼| 九九爱激情| 色激情五月| 天天综合色丁香| 日韩久久日| www色色色com| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 久久99久久99精品免视看婷婷| 久青青久| 亚洲色色五月| 深爱五月天| 99热思思| 蜜乳国产网站| 天天色月| 在线视频99| 成人做爰黄A片免费看直播室男男| 激情五月天影院| 台湾综合丁香五月蜜桃| 久久综合婷婷五月| WWW、99热| 丁香深五月婷婷| 国产91在线视频| 五月婷婷天| 五月婷网站| 性色播| 欧美 日韩 成人| 风流少妇A片一区二区蜜桃| 婷婷五月天情色| 婷婷丁香亚洲五月天| 婷婷综合激情| 久久婷婷五月综合成人d啪| 久久人妻少妇嫩草AV| 婷婷丁香成人| 2020日日干| 久久婷婷五月综合色和| 亚洲狠狠婷婷综合久久久| 天天久综合网永久入口17v| 色9999综合久久| 八戒青柠影视剧在线观看| 欧美三日本三级少妇三99| 五月天另类小说久久小说网| 伊人六月丁香婷婷| 99热在线里有精品| 天天爽天天爽天天爽天天爽天天爽天天爽天天| 激情床戏| 日韩操逼大片| 五月丁香六月婷婷久久肏| www.久久久久久久久久.com| 色青青电影色五月| 亚洲宗合激情| 天天爽人人爽| 26uuu国产色| 婷香五月| AV中文在线| www.久久爱.com| 亚洲色综合色网| 骚逼视频一区2区| 激情五月婷婷| 久久精品A片777777| 色婷婷电影网| 国精产品一区一区三区免费视频| 欧美人与性动交CCOO| 色狠狠综合| 思思热这里只有精品| 色色五月丁香婷婷| www色色com| 狠狠色丁香| 精品久久99码| 婷婷丁香熟妇综合网| 这里只有精品免费视频| 天天草天天爽| 久久婷婷五月天| 大香蕉久久| 99视频只有精品| 疯狂做受XXXX高潮A片| 色婷婷成人做爰A片免费看网站| 大香蕉人妻| 激情丁香婷婷| 9久热精品在线视频| 超碰97在线操| 国产三级在线播放| 狠狠99| 欧美啪啪9| 色婷婷AAA| 五月丁香久久| 丁香五月网| 丁香五月激情无码视频| 色欲一二三| 伊人玖玖精品| 久热9| 亚洲精品久久久久AV无码| 国产精品A成V人在线播放| 色九九综合色| 伊人五月综合网| 黄网网站在线播放| www.夜夜夜| 欧美色色色| 色色亚洲视频| 九九热这里| 国产乱人偷精品人妻A片| 超碰免费人人肏| 視频福利乱色| 天天综合久久| www夜夜操com| 色婷婷成人| 蜜臀AV在线观看| 香港九九六区八区99| 97操女视频| 青青草六月丁香| 色停停五月天| 9久精品视频| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 亭亭玉立国色天香| 婷婷五月天BBw| 操逼六区| 人与禽A片啪啪| 无码九九九九| 丁香五月婷婷性爱| 色婷婷五月天久久| 激情综合五月| 91九色精品| 婷婷色五月偷拍| 丁香五月Av| 久热免费视频| 十区av| 丁香五月天天日| 婷婷五月天无码| 色偷偷五月天| 大香婷婷| 五月婷无码| 欧美色色色色色色色色色色| 玖玖婷婷色五月| 9l视频自拍九色9l视频在线观看| 亚洲精品一区中文字幕乱码| 97色操| 97色五月天| 99热这里全都是精品| 99极品视频| 狠狠高潮精品亚洲1| 天天日天天插| www.无码com| 26uuu亚洲色| 婷婷五月大香蕉| 色就色94欧美setu| 操操操av| 69精品人人人人| 精品视频网| 99色啊| 任你日视频| 97色五月丁香婷婷| 加勒比色色| 久久亚洲婷婷| 欧美日本国产欧美日本韩国99| 国产成人AV| 爱爱色五月天| 亚洲五月花| 深爱五月天| 久久作爱| 狠狠干综合| 五月天另类小说久久小说网| 五月婷婷久久激情 | 丁香久久久| 全亚洲最大的婷婷五月天网站COM| 深爱五月日韩| 江苏少妇性BBB搡BBB爽爽爽 | 国产,欧美,学生妹,视频| 五月婷色色| 天天干天天日天天操| 亚洲天堂婷婷丁香| 久久黄色免费视频| 激情综合网五月婷婷| 久久久久久久8| 黄色AAAAA| 香蕉网婷婷| 欧美婷婷五月激情| 99视频内射三四| 影音先锋按摩| 色99在线视频| 伊人影音无码一区二区三区| 久/久精品99看9| 久久久香| 色色婷婷五月天| 色久女| 日韩啪| wwccc久久久| 激情性爱网站| 九九热99热| 五月丁香六月综合图| 丁香婷婷久久老熟女综合网| 99热这里只有精品18| 亚洲亚洲人成综合网络| 婷婷六月丁香色| 久久在线视频免费观看| 99精品视频在线| 日日干四虎| 思思re视频在线| 超碰成人黄色网| 五月婷婷六月奇米网丁香| www婷婷色| 五月丁香婷婷激激激综合网色播| 九月色婷婷综合亚洲| 99免费热视频| 无码动漫AV| 激情六月天| 欧美色九| 亚洲五月花| 深爱女色婷婷丁香五月亚洲图区| 99国产精品久久久久久久久久久| 婷婷激情欧美| 成人一区在线观看| 97精品在线| 丁香五月激情宗合网| 久久丁香五月天| 能看的av片| 婷婷桃色网| 久久人人妻| 婷婷的99视频网站| 国产精品99久久久久久久女警| 色婷婷色五月色丁香| 综合久久婷婷99| 人妻精品一区二区三区| 九月婷婷久久久| 亚洲国产无线乱码在线观看| 毛片色五月| 伊人久久大香网| 丁香五月天啪啪| 五月天激情网页| 99精品超在线播放| 欧美人妻一区二区| 色综合色色| 99视频久久免费视频| 国产肥白大熟妇BBBB视频| 婷婷开心激情五月激情网| 五月天停停日日| 五月天综合久久| 色情五月天A片| 久色五月天| 99自拍视频| 久久偷拍综合五月天| 亚洲无码成人| 成人中文网| 一区中文字幕电影| 亚洲色五月| 丁香五月天啪啪激情综合网| 99久在线精品| 草草色情综合网| 日韩 中文 欧美| 清色五月天| 人人性久久| 一区二区成人电影免费播放| 五月丁香久久网| 婷婷丁香五月天亚洲| 九九热99视频在线| 丁香五月婷婷图片综合| 色五月网址| 精品五月天| 日韩三级片一区二区| 婷婷日本色| 五月丁香激情综合| 色久女| 欧美成人精品老美女噜噜噜| 成人五月天在线观看| 日本 色综合| 亚洲爆乳无码精品AAA片蜜桃| 99综合| 丁香五月激情澎湃一区| 九九九这里只有精品| 激情淫乱男女| 极品精品一区二区三区在线| 亚洲国产精品VA在线看黑人| 殴美日韩成人| 深爱五月婷| 婷婷另类开心| 影音先锋按摩| www.91婷婷| 无毒黄色网址| 婷婷情色开心五月天99| 九九热这里只有精品6| 九九热精品视频在线观看| 婷婷四色成人综合色视| 99在线观看免费精品视频| 婷婷久久五月天丁香| 久久久五月天婷婷成人网| 精品国产乱码久久久久久免费| 精品久久99码| 91色综合网| 人人操五月天| www,99热| 亚洲人妻五月丁香婷婷| 五月色情网| 亚洲va日| 五月丁香激情综合| 爽极品色| 婷婷五月六月丁香| 色婷婷9| 九九九九这里只有精品| 五月丁香婷婷婷婷综合网| 天天插天天狠| 99er这里只有精品| 婷婷色在线| 丁香五月婷婷啪啪啪| 亚洲AV第二区国产精品| 欧美乱码国产一级A片| 中文字幕av网站| 亚洲成人网址在线观看| 色婷婷中文| 成人AV在线中文版| 亚洲春色奇米影视| 婷婷色影音天| 91人人人人人| 色色亚洲99com| 伊人大综合| 91人妻九色大屁股| 天天日日| 操操操91| 日韩肏屄网| 日韩超碰在线| 大香蕉精品视频| 久久婷婷热| 99久久九九| 久久精品色| 涩涩五月天综合| 九九热视频首页/这里只有精品| 99综合视频在线| 成人色站,在线视频,看片-SS1AV| 五月丁香六月欧美综合| 人人综合五月人人婷婷| 这里只有精品视频一区| 综合久久五月天| 六月激情网| 亚洲综合在线播放| 婷婷丁香十月| 无码AV免费精品一区二区三区| 中文字幕免费高清电视剧| 播丁香五月婷婷欧美| 青青久久91| www.9797国产| 九九热在线观看6| 五月天婷婷自拍图片在线观看| 26uuu亚洲色| 日韩欧美一级大黄网站| 五月婷婷激情| 婷婷五月天丁香| 国产欧美精品AAAAAA片| 人妻在线观看视频| 色婷婷先锋| 丁香五月婷婷狠狠色| 天天操天天操| 熟女激情五月天| 色综合九九| 国产人妻777人伦精品HD| 日本三级第一页| 婷婷五月丁香花综合| 18av天堂| 亚城区在线| 欧洲亚洲免费视频9 | 狠狠色丁香婷婷久久综合| 丁香五月婷婷激情网| 天天干天天日天天插| 综合一本道| 亚洲成人免费电影| 懂色av粉嫩av蜜臀av| 五月天综合久久| 五月天激情黄色网址| 精品久久婷婷| 天天综合激情| 六月丁AV| 99精品视频网| 丁香五月婷婷综合激情啪啪啪| 婷婷丁香花五月天| 天天草天天舔| 色欲久久久久久综合网综合网| 99在线免费视频| av人人操| 99免费视频久久| 色婷婷五月天天天干天天操天天爽| 伊人久久大香蕉网| 婷婷丁香五月综合网| 丁香五月手机在线| 亚洲另类久久| 狠狠综合| 操婷婷基地| 蜜乳.comcom| 亚洲人妻电影| 操大屄五月天视频| 欧美色五月| 激情六月天婷婷| 国产69久久久欧美黑人A片 | 久久在这里有精品| 日韩成人免费电影| 91婷婷丁香五月天免费视频网站| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 欧美乱码国产一级A片| 午夜天堂一区人妻| 婷婷六月视频| 五月婷婷视频28| 中文AV网站| 激情久久综合网| www.久久五月天.com| 激情丁香九九五月综合网| 六月婷综合| 开心婷婷中文字慕| 熟女网站久久| 骚。com| 成人无码髙潮喷水A片| 国产精品丝| 亚洲国产精品综合色区| 久久激情视频| 丁香狠狠色婷婷久久无码视频| 91seAV| 台湾综合丁香五月蜜桃| 五月天久久综合| 四色五月婷婷| 伊人六月丁香婷婷| 天天色天天日| 91久久| 婷婷五月色播| 中文字幕精品推荐免费在线观| 狠狠久久婷五月综合色| 色情婷婷五月天| 超碰97干| 67194中文字幕| 99ri视频在线观看| 人人操人av| 色综啪啪网| 性爱电影科技贸易有限公司| 色婷婷综合网站| 婷婷色在线观看| 成人精品人妻| 亚洲小电影在线观看黄999| 五月激情婷婷在线| 色婷婷精| 丁香五月欧美激情| 婷色影院| 激情五月天小说视频| 少妇高潮呻吟A片免费看软件| 另类五月婷婷| 狠狠综合| 亚洲AV激情五月综合网| 亚洲综合另类| 日本婷婷丁香五月| 日本精品久久久久中文字幕| 亚洲精品国产精品乱码不99| 色婷婷av综合网| 久久五月丁香激情综合| 久久人妻精品| 欧美久久五月婷婷| 久久精品国产一区二区三区四区| 天堂婷婷五月在线| 五月天激情婷婷| 五月六月丁香婷婷在线观看| 九九这里只有精品| 五月天自拍网| 精品人妻在线免费观看| 色5月婷婷| 亚州第一黄网| 色色射| 亚洲AV免费国产电影| 六月婷婷综合| 久久新地址| 久久五月丁香| 丁香五月成人论坛| 日日噜噜夜夜狠狠久久丁香五月| 婷婷伊人久久综合| 9精品一区| 色色五月天婷婷丁香| 日本一级| 六月激情婷婷| www.日韩艹| #NAME?| 五月婷婷草| 丁香婷婷久久| 激情五月婷| 天天操夜夜肏| 亚洲四色五月| 99精品视频偷拍| 99精品无码视频| 人妻丰满精品一区二区A片| 岛国av电影网站| 免费操超碰| 色综合com| 丁香五月激情综合| 国产精品激情五月天色婷婷| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 国产毛片操B| 日韩aaa| 伊九九三级区| 亚洲熟妇AV乱码在线观看| 婷婷日日夜夜| 亚洲综合网 665566| 粉嫩AV久久一区二区三区| 丁香婷婷六月在线资源观看| 婷婷色在线播放| 丁香激情五月| 久久精品亚洲一级牲爱综合 | 香蕉操亚洲| 婷婷丁香六月五月天| 五月婷婷综合激情小说| 欧美性猛交99久久久99| AAAA亚洲| 天天网曰日曰夜夜综合永久免费| 99精品久久| 99思思热只有在这里看| www999日韩精品| 亚洲最大成人综合网720P| 亚洲操b| 大香蕉啪啪网| 亚洲天堂色| 337p大胆噜噜噜噜噜91Av| 深爱激情久久| 玖玖爱资源站| 久久久久9久无码视频| www.五月婷婷久久.com| 丁香五月天激情综合网| 久久婷婷色综合| 成人免费黄色短视频| 久久与婷婷| 涩涩网五月天| 色五月综合| 碰人人97| 久久婷婷内射| 99爱视频精品在线观看| 婷婷综合伊人| 91九色首页| 色五月欧美| 六月丁香婷婷网| 色色五月天网站| 丁香五月天影院| 五月丁香色情| 丁香五月手机在线| 婷婷十月丁香| 丁香五月婷婷五月天在线| 国产AV不卡福利| 91中文狠狠综合| 日韩视频99| 日本五月婷婷| 丁香五月天欧美| 91超级碰碰| 成人在线视频一区| 伊人五月婷| 99久久婷婷国产综合| 99这里只有精品| 久久这里只有精品1| 亚洲五月天综合色| 人人操人人爽成人AV| 91色综合久久| 久久99国产综合精品免费| 婷婷五月情| 婷婷五月天基地| 久久久人妻门| 色亚洲中文| 99热精品在线播放| 九九综舍久久| 操婷婷久久| 婷婷五月天桃花网| 国产激情久久| 性爱综合网| 丁香五月综合激情性爱| 亚洲成人五月天| 久久久久久综合五月婷婷| 欧美日韩大黄| 色丁香五月婷婷婷| 色优久久| 人伦30P| 五月香蕉婷婷| 综合激情在线观看| 婷婷综合干| 久久激情四射| 五月婷婷香蕉| 欧美性生交XXXXX无码小说 | 性爱激情综合网| 天天草天天日| www。狠狠干。com| 久久五月天激情美女| 日韩亚洲视频| 67194成I人在线观看线路1| 九月av| 国产精品丝| 婷婷久久内射| 亚洲AV第二区国产精品| 日本97久久久精品| 九月丁香欧美综合| 国产色99| 九月久久婷婷| 天堂爱啪啪| 99超级碰碰| 五月色丁香| 97操视频| 综合啪啪| 丁香色五月直播| 色五月之第四色| 亚洲亚洲激情| 97色色色色色色色色色色色色色| 天天噪夜夜爽| 美国天天日天天操| 99热这里只有精品18| 久久偷拍综合五月天| 天天色天天操天天射| 91九色中文| 粉嫩av懂色av蜜臀av熟妇| 色墦五月丁香| 亚洲激情在线| 中文字幕无码人妻少妇免费视频 | 天天做天天爰天天爽天天无遮挡| 激情欧美婷五月| 激情丁香五月激情婷婷| 丁香六月成人网| 激情五月综合网最新| AV性爱网| 久久99精品九九久久久婷婷| 五月婷婷激情| 激情都市另类| jiuse91在线| 色婷婷9| 日本色噜| 色综合久久久久久久久五月| 婷婷五月天亚洲| 久久人人超| 激情四射五月天| 97爱艹婷婷开心丁香激情综合| 婷婷五月天渟渟| 婷婷综合色网| 婷婷激情四射| sewuyuejiqingwang| 丁香五月婷婷免费视频| 五月婷久久| 国产精品久久久60086| 丁香婷婷婷五月| 一级二级色大片| 婷婷综合网| 精品欧美性爱超级爽| AV在线收看| www色色com| 国产美女最新VA在线免费观看| 丁香婷婷五月| 99精品久久| 九九色网专区| 玖玖激情五月天| 五月丁香综合网色欲| 巴基斯坦粉嫩无码视频| 中文字幕不卡+婷婷五月| 国产精品久久久久久妇女6080| 一婬一伦一区二区三区| a色色色色色| www.av骚货| 欧美精品999| 蜜桃婷婷丁香综合久久开心亚洲| 九色无码| 婷婷五月丁香高清无码| 狠狠人人婷婷| 六月激情网| www.激情五月天.con| 五月花婷婷在线精品视频| 婷婷色五月天在线观看| 五月天激情小说| 亚洲婷婷欧美婷婷| 色色色热热热| www.色色com| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 99色视频| 最新高清无码专区| 庭庭久久内射| wwwC0maV五月花| 国产操逼网站| 久久99这里只有精品| 亚洲色模骚货| 91精品久久久久久77777| 日韩精品VIP| 九九热只有这里是精品| 丁香婷婷91在线观看视频| 激情五月天影院| 久久婷婷激情| 少妇高潮呻吟A片免费看软件| www.色婷婷.com| 久热伊人在91| 亚州欧美国产久精国产99综合视频| 天天干天天干天天干天天干天天干| 99激情| 啪啪 综合网| 色婷婷五月天天天干天天操天天爽 | 蜜臀AV在线观看| 色婷婷六月天| 婷婷五月天激情诱惑| 国产成人精品亚洲线观看| 91九色精品女同系列| 综合久久五月天| 少妇人妻偷人精品无码视频新浪| 99热最新| 六月丁香网| 婷婷成人av| 五月婷婷六月丁香综合视频在线| 综合AV在线| 在线看黄色| 成 人 色 色| 成熟妇人A片免费看网站| 九九久久99| 丁香六月激情四射| 99在线综合视频| 99视频一区| 亚洲字幕AV一区二区三区四区| 九九亚洲视频| 4438激情网| 开心五月婷婷综合在线精品素人| 五月婷婷九月婷婷九月婷婷| 嫩BBB搡BBBB榛BBBB| 丁香亭亭久久| 五月激情偷拍| 中美日韩成人在线| 九月av| 六月激情丁香一道本7777| 五月色天情| 潘金莲AAAAAAAAAA| 天天干天天操天天干天天操天天干天天操| 五月婷婷六月天| 色色99| 国产无套精品一区二区| 六月婷婷av| 情色五月天网站| 伊人色综合影院视频| 天堂网啪啪| 4399在线观看免费毛片| 在线只有精品| 嫩草国产| 五月丁香影院| 激情中文在线| 婷婷激情在线| 在线成人网址| 超碰免费人人| 国产激情久久久| 99精品综合| 狠狠色五月激情| 丰满人妻一区二区三区| 色5在线| 91久久99久久91熟女精品| 丁香五月天色综合| 婷婷97| 色9色| 一二线视频 另类| 久热中文字幕在线线观看| 五月丁香久久综合91| 色五月婷婷内射| 激情色情五月天| 色五月五月婷婷| 国产综合视频婷婷| 婷婷金品综合视频| 五月天色婷伊人| 亚洲第一成人无码A片| www.激情五月天com| 美女被肏网站在线看| 开心婷婷五月| 欧美色色色色色色色| 26uuu日韩| 提提热五月天婷婷| 啪啪啪丁香五月| 五月丁香网站| 色v综合网| 另类激情中文| 五月激情偷拍婷婷| 91a片爽| 婷婷综合一二三| 97精品综合| 内射干少妇亚洲69XXX| 亚洲夜夜操| 99干日本| 欧美日韩91| 亚洲bt丁香五月天婷婷激情小说| 人人爽欧美婷婷久久久五月丁香| 色五月成人| 色九九一二| 五月丁香综合啪啪| 99热这里只有精品26| 国产一区二区三区影院| 五月综合缴情网| 九色 在线| 日本人妻A片成人免费看片| 天天操,天天插| 影音先锋91资源站| 538在线精品| www.丁香黄色五月天人与| 丁香六月婷婷开心婷婷网| 激情色播| 99福利视频| 2020日日干| 性无码专区无码| 色婷婷五月天激情在线观看| 亚洲1区| 激情AV网| 久久婷婷91| 五月综合亚洲| 婷婷五月天中文字幕| 操碰97| 色99视频| 五月视频日本免费观看| aaaa.黄| 五月天啪啪| 精品久久人妻| 亚洲激情图文小说| 色噜噜五月丁香婷婷| 99色热| 五月婷婷六月情| 伊人超碰| 五月丁香精品| 大香蕉视频99|