久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

PyTorch 實(shí)戰(zhàn)避坑指南:從動(dòng)態(tài)圖、訓(xùn)練循環(huán)到模型部署

PyTorch 實(shí)戰(zhàn)避坑指南:從動(dòng)態(tài)圖、訓(xùn)練循環(huán)到模型部署 搞深度學(xué)習(xí)的人大概率都經(jīng)歷過那個(gè)靈魂拷問到底該用哪個(gè)框架我的答案一直是 PyTorch而且用了好幾年期間帶過新人、做過項(xiàng)目、踩過無數(shù)坑。這篇不是什么官方文檔的翻譯也不是手把手從零教學(xué)而是一個(gè)長期使用者對 PyTorch 的真實(shí)經(jīng)驗(yàn)匯總——從環(huán)境配置到訓(xùn)練循環(huán)從數(shù)據(jù)加載到模型導(dǎo)出把那些論壇里反復(fù)被問的問題一次性講透。如果你是剛開始學(xué) PyTorch這篇文章能幫你避開我當(dāng)年走過的彎路如果你已經(jīng)用了一陣子文末的避坑清單大概率能讓你會(huì)心一笑。1. 為什么最后選了 PyTorch動(dòng)態(tài)圖、生態(tài)與調(diào)試體驗(yàn)1.1 動(dòng)態(tài)圖與靜態(tài)圖的世紀(jì)之爭早些年各大主流框架走的基本都是先定義計(jì)算圖再喂數(shù)據(jù)的靜態(tài)圖路線。靜態(tài)圖的好處是性能好、容易做部署優(yōu)化但壞處也非常致命——你沒法在計(jì)算過程中打斷它沒法用普通的 Python 邏輯去控制流程遇到報(bào)錯(cuò)時(shí)給出來的信息也是編譯層面的離你的業(yè)務(wù)邏輯隔了十萬八千里。PyTorch 走的是動(dòng)態(tài)圖路線計(jì)算圖是在每次前向傳播時(shí)實(shí)時(shí)構(gòu)建的。這意味著你的模型就是一段普通的 Python 代碼你可以想怎么控制就怎么控制for 循環(huán)、if 判斷通通可以直接寫在網(wǎng)絡(luò)上。調(diào)試的時(shí)候直接打斷點(diǎn)、直接打印中間張量的維度沒有魔法沒有抽象所見即所得。對于做研究、做實(shí)驗(yàn)、快速驗(yàn)證想法的人來說這是降維打擊級(jí)別的優(yōu)勢。動(dòng)態(tài)圖和靜態(tài)圖的差別就好比寫代碼時(shí)用 Python 和用 C 寫模板元編程的區(qū)別前者犯錯(cuò)時(shí)報(bào)錯(cuò)信息直接定位到行后者犯錯(cuò)時(shí)編譯器彈出一大堆模板展開信息你還得先學(xué)會(huì)翻譯那些報(bào)錯(cuò)。1.2 生態(tài)就是最大的護(hù)城河選框架選到最后其實(shí)是在選生態(tài)。這幾年 PyTorch 的生態(tài)已經(jīng)形成一種贏家通吃的局面主流的開源模型庫幾乎都優(yōu)先提供 PyTorch 版本學(xué)術(shù)論文的開源代碼默認(rèn)就是 PyTorch各類預(yù)處理模型、工具庫你幾乎能找到所有需要的現(xiàn)成實(shí)現(xiàn)。只要模型是 PyTorch 訓(xùn)練的后面不管是要轉(zhuǎn)部署、做量化、剪枝還是蒸餾都有大量的現(xiàn)成工具可以直接接上。背后有一個(gè)活躍程度相當(dāng)高的社區(qū)在持續(xù)維護(hù)版本更新的節(jié)奏、對新一代硬件的支持速度都很快。某大廠和某知名互聯(lián)網(wǎng)公司的內(nèi)部訓(xùn)練平臺(tái)也先后把默認(rèn)框架切到了 PyTorch這本身就是某種風(fēng)向標(biāo)。1.3 誰適合讀這篇文章這篇文章主要面向以下幾類人剛學(xué)完 Python 基礎(chǔ)、想入門深度學(xué)習(xí)的初學(xué)者從其他框架切換過來的老手以及已經(jīng)用了一陣 PyTorch、但總覺得自己只是會(huì)調(diào)用 API、不懂原理的中間層選手。我會(huì)盡量兼顧原理和實(shí)操篇幅不短但你讀完之后應(yīng)該能自己搭一個(gè)完整的訓(xùn)練流程并且知道每個(gè)環(huán)節(jié)為什么這么寫。2. 環(huán)境搭建踩坑記錄版本對應(yīng)關(guān)系是第一道坎2.1 PyTorch、Python、CUDA 三者如何對齊很多初學(xué)者第一個(gè)坑不是寫代碼而是裝環(huán)境。PyTorch 不是一個(gè)獨(dú)立運(yùn)行的軟件它對 Python 版本、顯卡驅(qū)動(dòng)版本、CUDA 運(yùn)行時(shí)版本都有要求。裝之前先搞清楚這三者的對應(yīng)關(guān)系后面會(huì)省掉很多麻煩。我的經(jīng)驗(yàn)是先查官方安裝頁確認(rèn)版本組合再動(dòng)手裝。常見的穩(wěn)定組合是 Python 3.9~3.11 配 CUDA 11.8 或 12.1裝 PyTorch 2.x。不建議一上來就追最新版 Python有些擴(kuò)展庫的預(yù)編譯輪子還沒跟上容易在裝依賴時(shí)卡住。CPU 上的 bool 這個(gè)比較特殊常見組合可以先用這張表確認(rèn)自己的環(huán)境是否靠譜組件建議版本說明Python3.9、3.10、3.113.12 之后部分?jǐn)U展庫兼容性有坑PyTorch2.1 及以上2.x 性能與 API 穩(wěn)定性都更好CUDA 運(yùn)行時(shí)11.8 或 12.1跟隨 PyTorch 官方輪子即可顯卡驅(qū)動(dòng)最新穩(wěn)定版驅(qū)動(dòng)向后兼容舊驅(qū)動(dòng)不認(rèn)新 CUDA2.2 pip 安裝還是 conda 安裝這個(gè)問題我反復(fù)被問到。我的態(tài)度很明確能 pip 就 pip除非你已經(jīng)被 conda 綁定得死死的。pip 的依賴解析更干脆包和 PyTorch 的版本對應(yīng)關(guān)系也更直接。用 conda 的玩家經(jīng)常遇到的一個(gè)問題是conda 為了滿足依賴關(guān)系會(huì)把 numpy、torch 之類的核心庫降級(jí)或升級(jí)到某個(gè)詭異版本然后出現(xiàn)各種我的環(huán)境壞了的帖子。GPU 版本我建議從官方源裝。具體來說用命令行指定 PyTorch 官方源不要用默認(rèn)的公共鏡像源去裝這些大型包否則容易裝到 CPU 版本或者版本組合不對。2.3 常見報(bào)錯(cuò)排查裝完跑不動(dòng)的三種原因裝好后寫兩行代碼測試最常見的報(bào)錯(cuò)有三類。第一類Illegal instruction (core dumped)。這類報(bào)錯(cuò)基本可以確定是硬件問題——要么是 CPU 不支持某些指令集要么是顯卡太老不被當(dāng)前 CUDA 版本支持。核心原因是 PyTorch 官方發(fā)布的新版本逐漸放棄對老硬件的支持。排查方法也很直接先跑 CPU 版本能不能正常執(zhí)行能的話再排查 CUDA 相關(guān)項(xiàng)。第二類ImportError: libcudart.so ...這就說明 CUDA 運(yùn)行時(shí)庫找不到常見原因是顯卡驅(qū)動(dòng)太老或者裝的是裸 pip 包但系統(tǒng)里根本沒有 CUDA 的庫。解決辦法是先檢查驅(qū)動(dòng)是否支持當(dāng)前 CUDA 版本再?zèng)Q定是升級(jí)驅(qū)動(dòng)還是降級(jí) PyTorch 版本。第三類裝了 GPU 版但torch.cuda.is_available()返回 False。這個(gè)要分幾種情況一是你裝成了 CPU 版二是驅(qū)動(dòng)問題三是權(quán)限問題導(dǎo)致無法訪問顯卡。建議按順序檢查這幾項(xiàng)不用一上來就重裝環(huán)境。3. 張量與自動(dòng)求導(dǎo)PyTorch 最核心的兩塊地基3.1 張量不只是多維數(shù)組PyTorch 里所有數(shù)據(jù)都繞著torch.Tensor轉(zhuǎn)。你可以把它理解成帶設(shè)備信息和梯度信息的 NumPy 數(shù)組——它跟 NumPy 一樣支持各種切片、數(shù)學(xué)運(yùn)算、維度變換但多了兩個(gè)非常關(guān)鍵的東西一個(gè)是.requires_grad這個(gè)開關(guān)另一個(gè)是.device這個(gè)歸屬信息。初學(xué)者最容易忽略的是 dtype。PyTorch 的默認(rèn)浮點(diǎn)類型是torch.float32但你的數(shù)據(jù)如果是從 NumPy 轉(zhuǎn)過來的很可能是float64于是模型參數(shù)是 float32、輸入數(shù)據(jù)是 float64雖然 PyTorch 會(huì)自動(dòng)做類型提升但你必須清楚的知道有些操作對不同 dtype 的張量并不兼容。最典型的例子是 embedding 層或者某些 GPU 上的操作數(shù)據(jù)精度不一致就會(huì)報(bào)數(shù)據(jù)類型不匹配的錯(cuò)誤。寫代碼時(shí)顯式轉(zhuǎn)換一下能省很多事。3.2 requires_grad 與 autograd 的工作機(jī)制自動(dòng)求導(dǎo)是 PyTorch 的核心特色。它的底層實(shí)現(xiàn)可以這樣理解每次你在一個(gè)打開了requires_grad的張量上做操作時(shí)PyTorch 會(huì)同時(shí)建立一張計(jì)算圖圖的節(jié)點(diǎn)是數(shù)據(jù)邊是操作。當(dāng)你調(diào)用.backward()的時(shí)候它根據(jù)鏈?zhǔn)椒▌t從最終結(jié)果反向推算每個(gè)中間變量的梯度然后存儲(chǔ)在對應(yīng)張量的.grad字段里。有一點(diǎn)必須強(qiáng)調(diào)只有在浮點(diǎn)數(shù)張量上設(shè)置requires_grad才有意義。整數(shù)類型的張量不支持自動(dòng)求導(dǎo)因?yàn)榍髮?dǎo)數(shù)這個(gè)概念只在連續(xù)實(shí)數(shù)上有意義。我的建議是默認(rèn)不要給任何張量開requires_grad只在模型參數(shù)或極少數(shù)需要手算梯度的中間變量上開啟它。道理很簡單計(jì)算圖會(huì)額外記錄所有操作這在內(nèi)存和計(jì)算上都是一種負(fù)擔(dān)。你在訓(xùn)練模型時(shí)模型參數(shù)自動(dòng)開了你的輸入數(shù)據(jù)根本不需要開。3.3 一個(gè)最小梯度示例用十幾行代碼感受一下自動(dòng)求導(dǎo)import torch x torch.tensor([2.0, 3.0], requires_gradTrue) w torch.tensor([[1.0, 0.5], [-1.0, 2.0]], requires_gradTrue) b torch.tensor(1.0, requires_gradTrue) y x w.t() b # 矩陣乘法 偏置 z y.sum() # 一個(gè)標(biāo)量結(jié)果 z.backward() # 反向傳播自動(dòng)計(jì)算梯度 print(x.grad) print(w.grad) print(b.grad)注意backward()只能對標(biāo)量調(diào)用如果z是向量會(huì)提示你必須傳入一個(gè)與z形狀相同的初始梯度。如果你的任務(wù)需要非標(biāo)量反向可以先loss.sum().backward()這是一個(gè)很常用的技巧。4. nn.Module 使用指南定義模型的正確姿勢4.1 繼承 nn.Module 后發(fā)生了什么幾乎所有 PyTorch 模型都是torch.nn.Module的子類。它幫你做的最重要的事情有三件第一自動(dòng)收集參數(shù)。你在__init__里賦值給self的任何nn.Parameter或nn.Module都會(huì)自動(dòng)注冊進(jìn)這個(gè)模型的參數(shù)表。這也是為什么model.parameters()能拿到全部參數(shù)而不用你自己維護(hù)一個(gè)列表。第二提供訓(xùn)練/驗(yàn)證模式切換。model.train()和model.eval()會(huì)遞歸地把模塊里的所有子模塊都切換對應(yīng)模式像Dropout、BatchNorm這類行為參數(shù)分訓(xùn)練和推理兩種狀態(tài)。第三提供狀態(tài)字典的保存與加載。model.state_dict()可以拿到所有參數(shù)的字典配合torch.save和torch.load幾行代碼就完成了模型持久化。4.2 forward 里別寫太重的邏輯子類化nn.Module時(shí)你需要實(shí)現(xiàn)forward方法定義前向傳播的邏輯。我的建議是forward 里只負(fù)責(zé)把計(jì)算流程串起來不要寫太多業(yè)務(wù)邏輯。原因很簡單當(dāng)你后面要做模型導(dǎo)出、服務(wù)化部署時(shí)TorchScript 和 ONNX 對 forward 代碼的兼容性是有要求的。你在 forward 里寫一個(gè)那種高度依賴 Python 特性的復(fù)雜 if 判斷后面導(dǎo)出階段大概率要重寫模型。如果只是寫個(gè)測試分類器代碼看起來是這樣import torch.nn as nn class SimpleMLP(nn.Module): def __init__(self, in_dim784, hidden_dim256, out_dim10): super().__init__() self.fc1 nn.Linear(in_dim, hidden_dim) self.relu nn.ReLU() self.fc2 nn.Linear(hidden_dim, out_dim) def forward(self, x): x self.fc1(x) x self.relu(x) x self.fc2(x) return x這里有個(gè)細(xì)節(jié)我在__init__里把ReLU賦值給了self.relu。即使它沒有可學(xué)習(xí)參數(shù)我也把實(shí)例掛上去這樣model.to(device)時(shí)這個(gè)子模塊也會(huì)被跟著移動(dòng)。實(shí)際上 ReLU 是無狀態(tài)操作不帶參數(shù)也不受設(shè)備影響掛不掛問題都不大但養(yǎng)成所有子層都掛在 self 下的習(xí)慣是好的。4.3 容器模塊Sequential、ModuleList、ModuleDict除了自己逐行組織層PyTorch 還提供了三種容器方便管理模塊。nn.Sequential是最常見的它會(huì)按順序執(zhí)行每一層適合前饋網(wǎng)絡(luò)。nn.ModuleList適合那種需要在 forward 里循環(huán)處理的層比如多個(gè)注意力頭并列nn.ModuleDict適合按名字索引子模塊的場景。容器模塊之間的選擇有一個(gè)坑需要注意**nn.Sequential內(nèi)部的模塊會(huì)被它自動(dòng)管理但如果你在一個(gè)普通的 Python 列表里存放子模塊PyTorch 不會(huì)自動(dòng)收集它們**。這是我見過很多新手踩過的坑——寫了一個(gè)列表然后把模塊放進(jìn)去結(jié)果model.to(device)后這些模塊還留在 CPU 上訓(xùn)練時(shí)直接報(bào)設(shè)備不匹配。5. 手寫訓(xùn)練循環(huán)每一步都在做什么5.1 完整訓(xùn)練代碼與逐行拆解用 PyTorch 訓(xùn)練一個(gè)模型最不依賴高階 API 的方式是自己寫循環(huán)。先給出一段完整可跑的代碼import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset # 造一點(diǎn)假數(shù)據(jù)模擬一個(gè)分類問題 X torch.randn(1000, 10) y torch.randint(0, 2, (1000,)) dataset TensorDataset(X, y) loader DataLoader(dataset, batch_size64, shuffleTrue) model SimpleMLP(in_dim10, hidden_dim32, out_dim2) criterion nn.CrossEntropyLoss() optimizer optim.SGD(model.parameters(), lr0.01) for epoch in range(5): for batch_x, batch_y in loader: optimizer.zero_grad() # 1. 清空舊梯度 logits model(batch_x) # 2. 前向傳播 loss criterion(logits, batch_y) # 3. 計(jì)算損失 loss.backward() # 4. 反向傳播計(jì)算梯度 optimizer.step() # 5. 更新參數(shù) print(fepoch {epoch}, loss: {loss.item():.4f})這個(gè)循環(huán)看起來簡單到不像話但每個(gè)步驟都有其不可替代的作用。5.2 zero_grad 為什么要放在 backward 之前程序邏輯上optimizer.zero_grad()必須在backward()之前執(zhí)行。原因在于PyTorch 默認(rèn)會(huì)在每次 backward 時(shí)把梯度累加到.grad字段里而不是覆蓋。如果你不清空舊梯度那么第二輪迭代計(jì)算的梯度會(huì)加在第一輪的梯度上梯度值會(huì)越滾越大優(yōu)化過程極不穩(wěn)定。這種設(shè)計(jì)本身是為了一些特殊場景服務(wù)的比如梯度累積——有時(shí)候你顯卡內(nèi)存不夠一個(gè) batch 拆成多個(gè)小塊分別前向/反向計(jì)算但希望這些梯度和成一個(gè)梯度再更新這樣正好利用了累加機(jī)制。但絕大多數(shù)訓(xùn)練場景下你不需要這種累加所以老老實(shí)實(shí)每次迭代清空梯度。這三行代碼的執(zhí)行順序是訓(xùn)練循環(huán)里最重要的一件事我見過太多新手在loss 不下降的困惑里折騰很久最后發(fā)現(xiàn)就是zero_grad寫漏了。5.3 訓(xùn)練模式與驗(yàn)證模式的切換訓(xùn)練完一輪后要驗(yàn)證模型效果很多人直接拿到測試集上去跑然后發(fā)現(xiàn)結(jié)果忽高忽低難以復(fù)現(xiàn)。原因就是沒切eval()模式。model.eval()會(huì)把 Dropout 關(guān)閉、讓 BatchNorm 使用累計(jì)的均值方差這樣推理結(jié)果才穩(wěn)定。另外在驗(yàn)證階段還需要用torch.no_grad()包住代碼它的作用是關(guān)閉自動(dòng)求導(dǎo)的計(jì)算圖構(gòu)建顯著減少顯存占用和計(jì)算開銷。推理本來就不需要梯度開著requires_grad完全是浪費(fèi)。model.eval() total_correct 0 total_samples 0 with torch.no_grad(): for batch_x, batch_y in valid_loader: logits model(batch_x) pred logits.argmax(dim1) total_correct (pred batch_y).sum().item() total_samples batch_y.size(0) print(faccuracy: {total_correct / total_samples:.4f})一個(gè)很容易記混的點(diǎn)是model.eval()和torch.no_grad()是兩個(gè)不同層面的東西。model.eval()改變的是模型的內(nèi)部行為torch.no_grad()改變的而是張量運(yùn)算的求導(dǎo)行為兩者通常搭配著用但都不能替代對方。6. 數(shù)據(jù)加載的性能問題Dataset 與 DataLoader 的配合6.1 Dataset 只做一件事torch.utils.data.Dataset是一個(gè)描述數(shù)據(jù)在哪里、怎么取出來的接口。你只需要實(shí)現(xiàn)兩個(gè)方法__len__返回樣本總量__getitem__給定索引返回一組(輸入, 標(biāo)簽)。PyTorch 會(huì)在訓(xùn)練時(shí)按序號(hào)訪問你的數(shù)據(jù)。對于圖片、文本這些需要預(yù)處理的數(shù)據(jù)__getitem__里通常要做解碼、裁剪、轉(zhuǎn) tensor、歸一化這么一條流水線。這里有一個(gè)重要的經(jīng)驗(yàn)不要在__getitem__里做重計(jì)算。比如每個(gè)樣本都從磁盤重新解碼一遍大圖你的數(shù)據(jù)加載會(huì)直接成為訓(xùn)練瓶頸。最好的做法是先把數(shù)據(jù)預(yù)處理成輕量級(jí)格式存起來或者用更高效的解碼方式。數(shù)據(jù)加載變快后整輪訓(xùn)練時(shí)間會(huì)肉眼可見地下降。6.2 DataLoader 的 worker 經(jīng)驗(yàn)DataLoader負(fù)責(zé)把 Dataset 組織成可迭代的 batch。它提供了 batch_size、shuffle、num_workers、pin_memory 等參數(shù)。num_workers 是第一個(gè)需要被關(guān)注的參數(shù)它決定使用多少個(gè)子進(jìn)程來并行加載數(shù)據(jù)。把它從 0 調(diào)到 4通常訓(xùn)練速度會(huì)有明顯提升。但它也不是越大越好因?yàn)榫€程/進(jìn)程切換也是開銷而且每個(gè) worker 都會(huì)把數(shù)據(jù)復(fù)制到自己的內(nèi)存里設(shè)置過大會(huì)把內(nèi)存吃滿。另一個(gè)參數(shù)是pin_memoryTrue它會(huì)讓數(shù)據(jù)加載到鎖頁內(nèi)存從而在 GPU 訓(xùn)練時(shí)數(shù)據(jù)搬運(yùn)到顯存的速度更快。這個(gè)參數(shù)對性能的影響在數(shù)據(jù)量大時(shí)很明顯新手通常容易忽略。如果訓(xùn)練時(shí) GPU 利用率出現(xiàn)周期性斷崖多半是數(shù)據(jù)加載跟不上。優(yōu)先調(diào)整 num_workers 和 pin_memory 這兩個(gè)參數(shù)。6.3 數(shù)據(jù)增強(qiáng)的注意事項(xiàng)圖像任務(wù)的標(biāo)配是數(shù)據(jù)增強(qiáng)PyTorch 里一般用變換組合來實(shí)現(xiàn)。需要留意的幾個(gè)點(diǎn)增強(qiáng)只應(yīng)該在訓(xùn)練集上做驗(yàn)證集和測試集只做標(biāo)準(zhǔn)化即可否則會(huì)嚴(yán)重干擾評估指標(biāo)有些增強(qiáng)操作會(huì)改變目標(biāo)值比如旋轉(zhuǎn)、翻轉(zhuǎn)這類幾何變化要注意確保變換邏輯同時(shí)作用在 label 對應(yīng)的坐標(biāo)或 mask 上保持同步。隨機(jī)種子一致性也是數(shù)據(jù)加載一個(gè)很容易踩的坑。PyTorch、NumPy、Python 的 random 模塊分別維護(hù)各自的隨機(jī)狀態(tài)如果你不做全鏈路隨機(jī)種子固定即使模型訓(xùn)練代碼完全一樣結(jié)果也復(fù)現(xiàn)不了。要固定隨機(jī)性需要在腳本最前面統(tǒng)一設(shè)置同時(shí)注意可能存在數(shù)據(jù)加載順序上的隨機(jī)性。7. 從原型到部署模型導(dǎo)出踩過的那些考驗(yàn)7.1 模型保存的幾種姿勢訓(xùn)練好的模型要落地部署第一步是保存。最常用的方式是torch.save(model.state_dict(), model.pth)加載時(shí)先實(shí)例化模型再load_state_dict。但是要留一個(gè)坑如果有人只給了你一個(gè).pth文件而沒有給模型定義代碼偶爾會(huì)碰到版本更新后權(quán)重名對不上的問題這時(shí)權(quán)重結(jié)構(gòu)可能不匹配。我自己的習(xí)慣是除了保存權(quán)重還會(huì)把模型結(jié)構(gòu)定義文件、預(yù)處理邏輯一起歸檔免得三個(gè)月后自己都忘了當(dāng)時(shí)怎么構(gòu)造的輸入。如果要導(dǎo)出成一種與 Python 解耦的格式常用的是 TorchScript 和 ONNX。TorchScript 有兩種導(dǎo)出方式torch.jit.trace用一個(gè)示例輸入追蹤計(jì)算流程對動(dòng)態(tài)控制流支持有限torch.jit.script則直接以腳本方式解析模型代碼,約束更嚴(yán)格但對控制流支持更完整。7.2 ONNX 導(dǎo)出的動(dòng)態(tài)維度問題ONNX 是一種跨框架的模型表示格式很多部署框架都支持它。但在導(dǎo)出時(shí)新手最容易出問題的點(diǎn)是動(dòng)態(tài)維度。比如你訓(xùn)練時(shí)輸入的 batch size 是 32導(dǎo)出 ONNX 時(shí)默認(rèn)就把 batch 維度固定成 32 了上線后實(shí)際請求一次只來了 1 條樣本直接報(bào)維度不匹配。解決辦法是在導(dǎo)出時(shí)指定動(dòng)態(tài)軸import torch dummy_input torch.randn(1, 3, 224, 224) torch.onnx.export( model, dummy_input, model.onnx, input_names[input], output_names[output], dynamic_axes{input: {0: batch_size}, output: {0: batch_size}}, )動(dòng)態(tài)軸的命名和數(shù)量需要提前規(guī)劃好因?yàn)橐坏┒撕罄m(xù)推理服務(wù)端的代碼也會(huì)依賴這個(gè)名字改起來麻煩。7.3 導(dǎo)出時(shí)遇到的控制流問題如果你的模型 forward 里有條件判斷或循環(huán)比如根據(jù)序列長度變化做不同處理torch.jit.trace可能會(huì)出錯(cuò)——它只追蹤樣本實(shí)際走的那條路徑其他分支根本沒有被捕捉。遇到這種情況要么改用torch.jit.script要么想辦法把控制流改成支持動(dòng)態(tài)計(jì)算的算子組合。作為一個(gè)長期做部署對接的人我的建議是如果你預(yù)知模型要導(dǎo)出一開始寫 forward 就盡量只寫標(biāo)準(zhǔn)的張量運(yùn)算別寫那些花哨的控制流否則后面返工的成本很高。8. 實(shí)戰(zhàn)中反復(fù)踩過的坑與最終建議8.1 設(shè)備不一致的經(jīng)典錯(cuò)誤Expected all tensors to be on the same device 可能是 PyTorch 里最常見的報(bào)錯(cuò)。核心原因很簡單模型的參數(shù)在 GPU 上但你喂進(jìn)去的輸入數(shù)據(jù)還在 CPU 上或者兩個(gè)張量一個(gè)在 GPU:0 一個(gè)在 GPU:1。排查思路要養(yǎng)成習(xí)慣拿到數(shù)據(jù)先to(device)模型初始化的同時(shí)to(device)損失函數(shù)一般不帶參數(shù)可不用管但里面某些模塊的緩沖區(qū)有時(shí)也在設(shè)備上有要求。寫到后期我基本是把 device 作為全局變量或者模型方法的一個(gè)參數(shù)傳避免寫死cuda這樣切到 CPU 調(diào)試時(shí)也方便。8.2.detach()、.item()和原地修改的混淆有時(shí)候你會(huì)需要拿出張量里的純數(shù)值。.item()只能用在單元素張量可以取出 Python 原生數(shù)值.detach()則是返回一個(gè)新的、不參與自動(dòng)求導(dǎo)的張量。兩者經(jīng)常弄混的場景是你想用某個(gè)中間變量的值來做 log 或繪制曲線如果直接打印張量控制臺(tái)里會(huì)顯示一個(gè)大對象而且如果這個(gè)張量還處于計(jì)算圖里后續(xù)某個(gè)操作可能還會(huì)改變它導(dǎo)致你打印的數(shù)值看起來莫名其妙。一個(gè)相關(guān)的坑是原地修改操作比如x 1、x.clamp_()。這類操作在某些情況下會(huì)被自動(dòng)求導(dǎo)機(jī)制攔下來或者導(dǎo)致計(jì)算圖異常因?yàn)樘荻鹊逆準(zhǔn)角髮?dǎo)假設(shè)張量值不再被修改。遇到梯度為 None這種詭異問題時(shí)建議把用了原地操作的位置都過一遍。8.3 訓(xùn)練過程異常的表象與本質(zhì)訓(xùn)練多次之后我發(fā)現(xiàn)模型訓(xùn)練出現(xiàn)問題時(shí)先去懷疑自己的數(shù)據(jù)管線再懷疑模型結(jié)構(gòu)。loss 不下降、準(zhǔn)確率不動(dòng)八成是因?yàn)閿?shù)據(jù)增強(qiáng)太強(qiáng)、標(biāo)簽錯(cuò)位、數(shù)據(jù)分布不平衡只有少數(shù)情況是梯度爆炸、學(xué)習(xí)率過大這類優(yōu)化問題??梢园延?xùn)練過程想象成拼裝數(shù)據(jù)是原料模型是加工流水線優(yōu)化器是調(diào)節(jié)器任何一個(gè)環(huán)節(jié)出錯(cuò)最終產(chǎn)品都會(huì)出問題。而 debug 的順序一般也是數(shù)據(jù)能否被正確遍歷、模型 forward 輸出形狀是否匹配、損失函數(shù)計(jì)算是否正確、優(yōu)化器是否連接到模型參數(shù)、梯度是否正常。8.4 工具箱層面的老建議最后分享幾個(gè)多年用下來的小習(xí)慣。第一訓(xùn)練腳本從一開始就加上隨機(jī)種子固定和確定性設(shè)置這樣能讓你自己以后排查問題時(shí)有條件復(fù)現(xiàn)已經(jīng)不知道多少次幫我在同樣的代碼里對比修改前后的差異。第二每隔固定輪數(shù)保存一次檢查點(diǎn)比如 checkpoint-best.pt 和 checkpoint-last.pt 同時(shí)保存磁盤空間不值錢但一次中途崩潰讓你重跑三天的訓(xùn)練才是真正的損失。第三模型驗(yàn)證時(shí)用確定性較高的指標(biāo)比如分類準(zhǔn)確率、回歸的 MAE在驗(yàn)證集上固定樣本順序一旦指標(biāo)出現(xiàn)異常波動(dòng)先懷疑數(shù)據(jù)加載隨機(jī)性再懷疑模型本身。PyTorch 本身的設(shè)計(jì)哲學(xué)就是讓你能用最 Pythonic 的方式完成深度學(xué)習(xí)任務(wù)真正復(fù)雜的地方往往不在框架的 API而在于你如何處理數(shù)據(jù)、組織訓(xùn)練、保證復(fù)現(xiàn)性和應(yīng)對部署問題。這篇文章里的內(nèi)容基本是一條主線串下來的坑和經(jīng)驗(yàn)希望你讀完至少能少走幾次彎路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日产中文字幕2020| 美欧老女人97| 少妇三P| 日韩一级性爱无码| 日韩在线性爱免费视频| 欧美情色贴图| 另类一区| 秋霞午夜成人福利片片| 可以看的av| 1769成人国产精品视频| 亚洲九九视频在线观看| 91动漫操逼视频| 好爽免费视频,| 亚洲无吗在线视频| 中文字幕免费在线观看| 色五月婷婷麻豆在| 亚洲乱色熟女一区| 97在线/亚洲| 九九视品黄色| 国产免费久久久久| 我想要 啊 啊 啊| 天天色香欲综合网| 久久婷婷综合国际产色怕| 亚洲黄色电影| 淫乱图区 | 久久99网站| 精品人妻一区二区三区四区不卡在| 日本一级一级一级一级| 久久精品中文字幕观看| w w w.久久精品| 97伦综合| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 久草加勒比一区在线| 亚洲综合色在线| 欧美在线视频99| 成人性爱全视频观看| 波多野结衣被操50分钟免费视频| 亚洲啪AⅤ永久无码| 波多野结衣之双飞调教在线播放| 欧美激色| 午夜福利在线视频1000| 97综合激情| 欧美视频第二页| 一区在线观看中文字幕| 性爱av网站| 伊人热综合| 国产日韩怡红院| 色五月激情AV在线| 欧色网址| JIZZJIZZ亚洲女人被躁| 国产狂喷潮在线精品| 久久国产AⅤ| 伊人久久大香线蕉无码| 久久精品亚洲成a人天堂| 人人爱人人操人人性| 亚洲中文日韩欧美大香蕉视频| 91无码西班牙视频在线| 九九热AV| 久久青青草在线视频| 九九九九一级| 91高清欧美| 91亚洲情色| 亚洲图片偷拍欧美| 中文字幕一区二区三区蜜桃视频| 亚洲久草AV色图| 天综合网欧美| 素颜老阿姨乱情色| 亚洲免费97免费| 久久国99999| 色偷偷超碰亚洲| 久久久九九九九| 女同性恋一区二区三区精品视频| SS久久| 97在线日韩中文字幕| 欧美的精品的视频| 天天弄天天操| 97操97色| 久久熟妇五十路一区| 97色色国产视频| 九七毛片九九毛片| 97爱| 99视频精品| 在线人妻熟女一区二区三区四区五区| 亚洲国产综合久久天堂| 亚州欧美总和| 91国产操逼视频| 丰满人妻无码一区二区三区| 亚洲激情综合| 人妻少妇精品久久久| 欧美色网络| 亚洲无码日韩电影| 亚洲,日韩,欧美,成人播放| 青娱乐淫乱1314| 日本成人电影资源网| 精品无码一二三四区| 丁香婷婷激情五月天无毒不卡| 久久精品操| 无码精品久久| xxx0国产在线播放| 国内91熟女人妻丝袜天天精品视频在线 | 大香蕉伊然在亚洲91| 亚洲97在线观看| 国产成人欧美精品在线| 福利伊人玖玖国产| 亚洲国产青青| 色天使亚洲综合在线观看| 欧美亚洲| 日韩精品人妻中文字有码在线| 欧美色图片色哟哟| 久久久久久国产精品| 天美传媒av 在线| B049AV在线播放| 777超碰| 日韩中文字幕二区| 羞涩视频| 国产日本熟女顶级一区二区三区视频 | 蜜桃成人1区2区3区| 亚洲一区二区三区麻豆传媒| 国产精品99999| 五月天激情小说网| 91天天综合在线观看| 玖玖久久久| 午夜精品久久久久久久99蜜桃一| 乱操9999| 视频二区美腿丝袜制服人妻欧美| 99蜜桃臀亚洲成人在线观看| 国产精品午夜福利亚洲综合网| 久久免费精品视频免一| 黄色不卡视频| 老熟妇一区二区三区…| 77国产精品| 无码逼| 国产亚洲色婷婷99精品91| 欧美人与动性人交a| 素人播放一区| www.亚洲成人一区| 天天综合网AV91| 91丨豆花丨熟女| 欧洲精品久久| 国产剧情AV不卡在线观看| 狠色婷婷久久一区二区三区_| 日本一区二区三区免费观看| 亚洲精品蜜桃久久久久久久| 日韩国产乱子伦App| 精品久久大胆人体| 日韩啪啪啪啪啪| 综合久久99| 97碰久久| 亚洲综合一| 亚洲欧美成人在线| 亚洲欧美变态| 日本伦理一区二区| 亚洲成人贴图| 久久天天躁日日躁狠狠躁 | 亚洲 一区二区 自拍| 久9久9久9久9久9久9| 超碰在线看| 久久免费少妇| 中文字幕人乱码中文字的预防方法 | 人人操人人肉久久精品| 爱欲AV| 亚洲 一区二区 自拍| 婷婷丁香人妻 | 五月丁香六月| 国产精品原创巨作?v网站| 国产亚热在线久久| www鬼畜国产男人的天堂| 香港澳门日本三级网站| 亚洲男人在线观看天堂| 欧美情色男人的天堂| 丝袜熟女一区二区三区| 啪啪视频免费在线观看| 啪啪啪男女亚洲中文字幕99| 成人A片男人的天堂| AV一起草在线| 天堂无码| 激情婷婷丁香网| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 黄污污污污| 人妻一区二区三区四区视频| 91n免费处女| 国产剧情一区在线观看| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 大香蕉97久久| 国产一区二区三区导航| 夜夜草天天| 九九超碰综合网| 久久9 9 9精品| 综合 青草 伊久久 影院 综合| 亚洲一卡2卡3卡4卡乱码网站 | 不卡在线观看视频| 欧美丝袜91| 青青欧洲黑| 800zy一区二区| 人妻啊啊人妻啊| 国产第12页| 日本一道在线播放高清| 精品一国2| 亚洲色图加勒比| 精品一区二区啪啪啪| 在线观看av区| 91人妻人人澡人人爽人人精品| 精品制服美女中文一区二区三区| 欧美一级专区免费大片| 免费网色网站| 新视频sss国产| 亚洲男人天堂网久久| 亚洲欧美校园另类春色| 殴美大黄片| 黄片qw| 日韩精品碰碰| 久操网无码在线| 精品午夜福利国产一区二区在线观看| 久久久久久久国产视频| 久久久久人妻二区精品叶可怜| 国产呦精品系列在线观看| 91欧美综合| 97日亚洲欧美| 青娱乐休闲视频在线观看| 国产sv美女内射| 久久激情四射婷婷丁香五月天| 久久久久久裸体| 国产青青综合伊人| 蜜臀久久久99久久久久| 亲子敌伦对白在线播放| 亚洲一区日韩精品| 欧美亚洲色图另类国产| 天天天天天天天天天天干美女 | 综合性视频99| 91成人18| 中文字幕亚洲永久精品| 福利在线黄片| 日韩AV电影网站 | 91免费看一区二区三区| 国产啊v在线免费播放| 国产精品一级毛片不卡视| 韩三级a视频在线观看| 亚洲久9| 国产乱伦一二三区| 青青草日韩无码| 亚洲人精| 干妹子| 久久久久久久97| 天天影视色香欲综合网小说| 久草网站免费在线观看| 夜夜爽33333| 综合色图区| 天美一二三在线观看Av| 涩涩涩综合| 日韩一级免费性爱| 北京专精特新企业招聘信息| 九九九九免费视频| 精品蜜乳AV免费观看| 国产精品久久久久亚洲av| 亚洲操人| 天天性射网| 欧美高清18A片| 久久毛卡| 一区中文字幕二区日韩| 亚洲中字慕不卡| 岛国爱情动作片在国产AV无码专区亚洲AV漫画 | 大香蕉伊人75| 乱伦1色页| 91久久久久久| 土豪酒店各种姿势玩弄极品幼稚| 国产成人欧美精品在线| 99熟女| 9999亚洲精品| 91AV入口| 美女露胸露尿口| 九九九只有精品| 国产日韩色综合| 欧美区亚洲区偷拍区| 国产综合操逼高清| 中文字幕乱偷人妻久久艾草网| 亚洲高清综合网| 亚洲五码一区二区三区| 1024手机看片欧美日韩| 国产成人精品必看| 亚洲综合99999| 中国AAAAAA黄色片| 九九毛片这里只有精品| 超碰免费97| 99久久久久| 蜜桃臀一区二区aV| 国内毛片无码一级毛片| 一区二区三区男女操逼黄色小电影| 人妻色情天天操| 激情抓乳插进去啪啪啪日韩 | 欧美洲精品一级| 1人人看人人摸人人操| 91 丝袜在线| 国产一区二区三区高清视频| 成年男人的天堂| 超碰九7免费| 黄污污污污| 久久久久久加勒比| 久久久蜜桃一区二区三区| 欧色网址| 国产少妇与亚洲av| 亚洲成aⅴ人片不卡无码| 午夜天堂精品久久| 亚洲精品白浆高清久久久久久 | 成人26uuu| 天天影视综合色| 黄色av片三级三级三级免费看| 老女人91| 色婷婷综合视频| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 9999久久久| 午夜人妻精品综合在线| 亚州综合网| 久久熟女人| 一本色道无码DVD中文字幕| 亚洲日韩青青草色月| 中文字幕黄片在线| 天天舔天天日天天射| 口爆吞精在线观看| 亚91网| 97久久久久久久精| 亚洲国产婷婷在线播放| 91丝袜美女视频| 91殴美大片| 盗摄女人妻在线| 久久99久久99精品天美传媒棢·纸:. | 在线不卡视频| 亚洲色婷婷久久91| 内射中国少妇高清视频免费视频 | 啊好爽快点-国产一区二区三区撒尿在线-成人AV | 欧美视频一| 色婷婷久久综合超碰| 婷婷丁香五月天亚洲天堂网| 久久超碰97| 久久久久久久国产| 大香蕉97久久| 黑人无码一区二区| 91国产操逼视频| 综合大香蕉美。| 日韩精品 资源| 欧美一区二区三区互相| 国语精品av| 91九九九小逼| 精品 码产区一区二-1080P高清在线www-B029AV| 九九九九精品| 97国产精选| 蜜桃传媒一区二区亚洲| 国产农村一一级特黄毛片| 欧美亚洲情色| 日韩欧美三级| 免费亚洲国产精品久久一区| 97色色,97综合| 国产精品大香蕉| 亚洲 自拍偷拍 欧美| 97色色色| 国产激情在线| 91女优在线观看| 亚洲AO在线| 91性高潮久久久久久久久| 国产高清视频无码在线| 91精品国产一区三一| 丝袜美女诱惑 91 视频| 欧美在线色图| 久久久啊啊| 狠狠色综合网| 蜜乳AV色欲AVAV无码| 国产家庭乱伦性爱视频| 日韩欧美性吧婷婷乱伦大香蕉| 日本黄色精品| 啊啊啊在线看| 色九九综合AV| 超碰到97情色| 亚洲综合 欧美| 精品久久大胆人体| 伊人久久亚洲中文字幕不卡| 97超碰色屌| 91xingse| 国产精品久久久久绯色| 日本天天人人狠狠在线日美女| 婷婷啪啪| www.夜夜| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 中文字幕诱惑制服人妻丝袜美丝袜美| 日本一区99| 欧美三级一级| 中文字幕版| 人人喜人人妻| 亚洲蜜臀懂色| 男人的天堂在线| 欧美天天综合站| 欧美色自拍| 亚洲人综合| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 国产13区| 亚州 综合 色图| 欧美日韩另类字幕中文| 人妻 欧美亚洲| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 97任你吞精| 欧美v亚洲v日韩v最新在线二区| 久久精品国产亚洲AV高级北京| 精品一啪| av九九| 人妻天堂综合网| 午夜情侣自拍网站| 日本蜜桃| 精品传媒在线一区| 懂色中文一区二区三区 | 久草热制服丝袜在线观看| 麻豆人妻偷人精品无码视频| 美女黄页网站| 欧美性爱日韩高清| 色婷久久| 国产黄色动态精品| 久艹视频在线| 97在线观看免费视频| 91人妻最真实刺激绿帽| 国产尹人在线视频免费| 美女人妻色网站| 久久中日麻豆| 日韩精品一区二区人人人| 女人天堂av在线播放| 无码操逼视频一下| 色999五月色| 色女网日韩| 男人的天堂久久狠| 一级二级在线观看| 国产成人在线观看综合| 日韩中文字幕熟妇人妻| 亚洲成人在线资源| 青青免费在线视频一区| 东京日日夜夜| 免费男人的天堂| 欧洲在线性爱视频| 中文字幕在线免费观看视频| 欧美 传媒 麻豆 日韩 偷拍| 久操免费视频| 91成人久久| 欧美日韩国第一区| 青青草综合在线| 亚洲一区二区三区中文字幕| 麻豆 欧美 日韩| 大屁股熟女一区二区三区| 中文久久| 激情五月综合| 丁香九月 婷婷| 色噜噜狠狠色综无码久久合欧美| 东方亚洲在线操逼天堂| 免费看黄片现成| 骚货人妻偷情自拍在线视频| 色老大| 欧美大香蕉专区网| 久久国语| 日韩亚洲中文有码视频| 性欧美天天| 超碰78| 任你艹| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 哈哈操电影| 色婷婷九月天天综合| 天美传媒Av在线| 午夜性生活av免费在线看| 色婷婷基地| 超碰在线综合97| 亚洲成人福利电影免费| 香蕉大久久久| 欧美特大黄一级片片免费| 校园春色综合香蕉| 欧美黑人精品在线播放| 夜夜嗨绯色| 国产亚洲精品无码三区| 97色涩| 素人一区二区三区日韩| 国产肏屁眼视频| 国产精品久久天天干| 亚洲色欲一区二区三区| 岛国在线免费视频| 午夜精品人妻二区三区| 日本一级二级三级网站| 97精品人妻一二三四| 亚洲欧洲综合视频在线| 999国产精品999久久久久久| 亚洲丁香花色| 亚州综合色| 大香蕉十区| 国产日韩在线播放av| 欧美激情片一区二区| 性爱乱伦视频免费| 四虎884| 五月婷丁香| 日韩小电影| 成人综合视频久久| 亚州操逼网| 亚洲色电影在线| 亚洲不卡不卡中文字幕不卡 | 国产极品久久久| 超碰在线香蕉| 欧美丝袜91| 九九久久久久久爱| 亚洲日韩美国人妻| 熟女熟妇一区二区三四区| 嗯嗯嗯嗯啊啊啊好紧好大| 欧美日韩另类在线| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 麻豆区99999| 久久久久久亚洲中文| 青青草国产一区二区三区| 五月婷婷丁香| 美国一区二区三区视频| 9丨久久九九九| 麻豆黄四叶草网站| 亚洲中文字幕精品久久久久久直播| 天天日夜干| 欧美大片天天看| 婷婷五月天基地| wwwxxx日本爽| 日韩人妻丝袜中文字幕| 色天堂在线观看| 大香蕉97久久| 久久久久国产一区二| 无码一区免费在线不卡| 91精品国产长腿丝袜美女| 欧美日韩国第一区| 伊人伊人LD| 9色在线| 日本成人A片免费看| 欧美 色 亚洲| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 人人干黄色| 超碰人人干天天射| 超碰一区二区| 粉嫩小泬久久久一区二区| 精品一区二区啪啪啪| 无码av永久免费专区网站| 日本精品999| 天躁夜夜躁2021| 中文字幕一区二区三四五区日日骚| 爽爽淫人网| 久久美女福利是上海美女| 911av网站免费观看| 东北女人操逼| 91人妻熟女| 青青草综合在线| 人妻熟女一区二区| 综合91网| 91美女色视频亚洲| 麻豆一区在线| 蜜臀久久在线视频| 九九热视频这里只有精品| 情色AV电影| 婷婷综合久久| 九九色逼| 极品极品色影院| 国产美女高潮叫床视频| 另类小色呦| 日韩A优精品在线观看| 国产午夜福利电影免费在线观看 | 五月天综合在线| 91精品国产麻豆国产自产在| 国产女生在线| 91五月天| 超碰97起碰| 裸体美女国产免费久久久网站| 麻豆这里只有精品| 95人妻爽爽人人做人人澡| 亚洲色欲天天人妻无码系列专区| 十八禁视频网站| 国产精品成人在线| 亚洲色图激情小说| 亚洲熟女乱色| 美女黑人91神马| 精品成人女人久久| 国产精品一二三| 91麻豆天美国产欧美高潮| 男生通女生屁股| 亚洲久久久久| 精品人妻视频入口| 日本三级一区二区 在线| AV不卡在线| 国产欧美一区激情交| 成人日韩欧美| 爱干爱射网啊啊啊| 99re6国产精品99re| 色69大色97香蕉| 国产97av| 久久只有精品| 男女激情黄色网址| 猛交交| 天天香香欲综合| 9久精品视频在线观看| 人妻丰满熟妇av无码区蜜桃| 国产女人视频三四五区| 亚洲激情综合另类男同| 色婷亚洲五月在线观看| 欲香欲色综合天天伊人| 日本影视久久免费| 亚洲制服aⅴ中文字幕| 日韩一级片| 亚洲国产综合久久天堂| 九九九只有精品| 欲香欲色| 中文字幕狠狠玩| 中日无幕一二三四区| 精品人妻一区二区三区视频| 国产精品久久泡妞网站| www.91逼逼.com| 亚洲欧美激情另类色图| 日韩欧美偷拍美女视频| 色逼综合| 亚洲aV无码成人在线观看| 极品粉嫩一区二区| 99热精品在线观看| 97人妻免费中文字幕| 首页亚洲国产高跟丝袜诱惑视频| 久久久99999久网站| 色逼综合| 日本精品成人无码| 亚av顶级裸体一区二区三区四区五区 | 污啪啪啪视频| 舔舔啊| 操婢日韩| 性色avv| 欧美中日韩XXXX| 在线欧美69V免费观看视频| 一色网男人的天堂| 黑人性暴力毛片| 精品人妻av在线播放| 爱干爱射网啊啊啊| 91w欧美| 丁香五月天堂网| 亚洲偷拍欧美激情| 国产黄片精品在线| 色天使大香蕉| 中文字幕在线免费观看2| 欧美激情综合| 国产怡红院在线| 欧美,日韩,亚洲视频| 九九夜精品九九在线| 国产精品成人AV片免费看网站| 亚洲色图大香| 草草草视频| 久久久97| 怡红院久久老司机| 午夜男人一级A片7777| 天天爱综合网| 人妻在线视频| 精品人妻一区二区蜜桃视频| 五月天玖玖资源站| 欧美专区17页| 五月丁香婷婷啪啪| 97久久久久久久久久| 在线观看日韩av不卡| 国产热av| 看一级黄色视频| 男人天堂新| 五月婷婷丁香| 一区二区高清视频| 天天摸夜夜摸| 日韩三A大片在线观看| 丰满搜索结果 -第18页- 久久高清无码| 91精品国产91久久青草| 特级大荫道BBwBBwBBW| 女性喷水高潮在线观看| 综合亚洲情色| 性色生活片久久毛片婬片免费放女人一级毛片 | 很狠操| 91热爆在线| 蜜臀网 一区| 99999精品视频| 大香蕉www.超碰| 欧美91久久久久| 五月天久久久| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 熟女少妇一区二区三区| www.zbzhongsen.com| 草草网站影院白丝内射| 亚洲精品黑丝| 97色伦欧美| 日本性爱视频一级| 天堂亚洲精品久久老牛| 99re久久| 四虎午夜影院| 中出人妻中文字幕91在线| 日本在线一二| 日韩三A大片在线观看| 嗯~啊~轻一点 视频| 久久久久13| 日本熟女免费視颖| 青青在线视频免费| 人妻无码后入| 熟女乱伦二区| 国产三级在线现体验区| 综合色久欲| 免费视频在线观看啊啊啊啊啊| 国产av强奸美女| 亚洲a色| 在线观看A啊啊啊| 综合色99| 日本三级一区二区 在线| 少妇精品| 久久妇| 用力操死我| 91free福利| 韩国手机不卡无码三级视频| 欧美亚洲丝袜人妻制服中文99| 乱码熟妇人妻久久久| 2024人人操人人摸| 日日插夜夜| 国产捆绑一区| 日韩AV噜噜噜一区二区三区四区 | 日韩免费中文字幕视频| 五月天久久人妻| 国产精品久久久999| 啊啊啊 在线观看| 亚洲日本韩国在线| 亚洲天堂人妻熟妇视频| 亚洲AV成人精品网站在AV| 日韩99999| 韩国毛片一区二区三区| 久久夜嗨| 熟妇亚洲一区二区三区| 欧洲色色| 99久久九九| 日韩AV熟女乱伦| 多毛小伙内射老太婆| 日本黄色精品专区网站| 亚洲久久久久| 亚洲精品国产拍免费91在线| 人人爽夜夜玩视频| 亚洲电影91| 国产乱人妻精品入口| 综精品久久久aaaa| 丝袜制服字幕在线| 丝袜夫妻自拍| 内射日韩大臀美女| 欧美少妇大量自拍视频在线观看| 99久久综合| 九九伊人网| 亚洲精品色| 婷婷五月天av| 成人夜夜爽| 爱爱60秒免费视频| 精品久久久久,69国产成人精| 香蕉久久国产AV一区二区| 俺去俺来也在线www| 黄色片大香蕉| 国模精品娜娜一二三区| 一区二区三区欧美激情| 色五月首页| 男人天堂一区二区| 91天天日| 国产精品网站免费| 男人网站婷婷| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 亚洲男人的天堂AV| 亚洲天堂人人妻| 亚洲色图 图片| 韩日自拍| 欧美激情区| 国产精品人妻免费精品| 精品亚洲一区在线观看| 久久久久亚洲AV无码专区少妇| 日韩一性一交一A片俄罗斯| 另类小色呦| 亚洲 欧美 天天| 国产亚卅97| 亚洲鸥美色图| 午夜传煤十二区精品| 亚洲影院成人| 99久久久er直播网址| 丝袜大香蕉| 亚洲人在线| 蜜臀久久精品久久久久视频| henhen91| 翔田千里AⅤHD无码| 秋霞免费AV| 久久激情四射婷婷丁香五月天| 成人精品久久| 国产精品视频91久久| 狠狠色噜噜狠狠狠狠狠色综合久久| 成人国产精品三级A片| 日韩欧美女优电影| 午夜毛片高清免费不卡| 中文字幕青青草| A级毛片在线看免费| 自慰白浆在线观看| 人妻密肉在线观看| 亚洲操操操无码| 欧美熟妇成人一区二区| 日本精品成人无码| 99操| 性一级黄色录像片网站导航 | 97er欧美性| 怡红院成人视频| 欧美91视频| 亚洲天堂男人在线| 亚洲黄a三级三级三级看三级| 東南亚性呦成人伦理资源在线视频 | 亚洲码专区| 伊人大香蕉在线| 极品美女嘿咻| 无码人妻精品一区二区中文| 日本 欧美 亚中文字幕| 日本黄色天堂| 久久日韩精品一区二区| 啊啊啊操一区| 女人天堂网| 黄色激情电影在线观看| 欧美熟女少妇| 亚洲情色 自拍| 韩日性爱av| 日本天堂网| 欧美色网络| 久精品无码av一区二免费国产在线观看 | a男人的天堂| 蜜臀Av一区二区三区| av最新免费中文字幕| 1956日韩精品| 资源新线在线天堂| 婷婷综合五月| 中文字幕av片| 国岛片视频| 久草精品一区| 曰韩操B| 精久久久91| 欧美视频一| 混色激情av| 性色综合网| 99久久婷婷国产综合精品草原| 手机av亚洲丝袜美腿日韩第一页二页| 久久欲| 色婷婷综合久久中文字幕雪峰| 国产精品久久久久婷婷二区次| 久操精品网| 色天使AV天堂| 97最新在线播放视频| 女上位精品在线| 国产亚州精品美女久久久免费| A男人的天堂| 污污汅18禁网站在线永久免费观看| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 伊人九九| 人妻嗯啊啊在线播放| 亚洲人妻爽爽爽| 欧美躁死她一区二区| 欧美78P| 蜜臀久久99精品久久久久久久久| 人爽不卡视频| 91蜜臀在线久久久久| 热99这里有精品综合久久 | 日韩精品国产一区二区| 热热热热日日漂亮永久永久国产日| 三级精品三级在线观看| 成人A片男人的天堂| 四虎影视永久在线免费| 99爱爱| 午夜福利成人免费视频| 久久久不卡| 人人色人人射人人妻| 国产成人精品必看| 成人精品视频| 亚洲欧美国产日本一区二区三区| 欧美性性性| 亚洲国产综合久久天堂| 成人免费看吃奶视频网站| 中文字幕文字幕无码一区二区三区电影99 | 日韩啪啪网| 国产成人www免费人成看片| 精品久久久久成人码免| 欧美国产日韩清纯唯美| av毛片aaaaa免费看| 69久久久久久久久久久久久| 99日韩| AV麻豆免费一区| 精品成人女人久久| 加勒比大香蕉视频在线| 亚洲精品免费中文字幕| 欧美激情亚洲情色| 玖玖97综合| 久久性爱网站| 大香蕉综合网| 91路www| 麻豆天美国美国产| 美女午夜福利免费视频| 亚洲精品人体| 亚洲drav色图| 97中文超碰| 黄色性爱网网| V A在线| 女人18精品一区二区三区| 99热超碰| 90后性网国产欧美| 黄片qw| 天天干18禁| 四虎在线免费视频| 天天干天天日天天射黄色大片| 婷婷中文网| 少妇厨房愉情理伦片bd在线观看| 亚洲图片视频小说| 精品人妻视频一区二区三区蜜桃视频| 色婷婷基地| 久久国产乱子伦精品免费女人| 日韩97在线| 激情情色五月天| 乱码熟妇人妻久久久| 久久久人妻| 自拍偷拍 日韩无码| 人人操人人插 - 百度 - 百度| 欧美亚州综合网图片| 天天射夜夜| 亚洲视频一二区| 久热69九色熟妇97| 91性高潮久久久久久久久| 国产A v无码专区| 99久久久久久亚洲精品不卡| 97超碰日韩| www.人人摸在线视频| 试看60秒| 伊人991| 日韩AV中文字幕电影| 在线只有精品| 91色色色| 在线看免费无码AV天堂的| 视频国产精品未满十八禁止在线观看| 黄色成人网久久久久久| 精品人妻一区二区三区四区不卡在| 亚洲欧美国产精品久久久久久久| 国产精品久久久999| 国产美女精品| 天天碰操中国年青熟妇| 情色av电影| av在线人气| www鬼畜国产男人的天堂| 大香樵伊人网| 超碰97起碰| 乱精品一区字幕二区| 99综合网| 女优视频第10页| 嗯嗯嗯好爽| 国产精品老熟女一区二区| 一区二区激情国产熟女| 欧美亚性天堂| 无码99| 有码人妻系列| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 人、人、摸,人、人、草| 蜜乳AV网址| 日本精品第一视频在'| 综合欧美日本三级| 久操大香蕉| 性爱动态120秒| 很黄很污的免费网站| 欧美欲色| 97在线观看免费视频l| 香蕉免费一区二区三区不读| 久久美国毛片| 久9爱精品| 老熟女网站| yaouchengrenav| 1人人看人人摸人人操| 欧美强奸乱能| 婷婷五月天激情小说| 玖玖97综合 | 性生活无遮挡纯毛片在线看| 久草精品一区| 久久九九97| 午夜性生活av免费在线看| 成年人三级黄色片视频| 人人操人人大香蕉| 红杏大香蕉| 超碰99热中文字幕| 国产乱不卡| 爱爱啊啊啊| 亚洲欧美综合区自拍另类| 我要看免费韩日黄片| WWW4虎| 日韩97视频| 大奶的诱惑| 中国国产精品一区视频| 日本三级大片| 神马久久久久久久久久| 中文字幕免费在线观看| 操国产逼| 国产粉嫩出水在线播放| 久悠悠av| 久久中久文96| 国产91福利小视频在线观看| 亚洲成人av电影在线| 五月色综合| 久久熟女久| 国产色产精品在线观看| japan日本高清乱xxxx| 人妻天堂综合网| 加勒比东京热五月天天堂网| 日韩97P| 性爱乱伦网址| 欧美熟女激情| 五十路三区在线| 亚洲欧综合另类无码一区| 97精品国产97久久久久久| 在线情色电影 91大| 性夜影院爽黄A爽免费动漫| 亚洲欧美一区二区三区一猛片| 青青青国产| 超碰在线日韩一区| 欧美丰满少妇xx高潮| 好淫网一二三视区| 欧美图片校园春色| 精品人妻av在线播放| 密臀在线免费观看| 国产精品一区二区密臀| 日本午夜操逼| 熟女自慰久久久| 亚洲欧美色图| 99热这里是精品| 加勒比综合a∨| 欧美日韩亚洲一区二区在线观看| 成人贴图日韩欧美| 黑人性欧美| 国产激情av女片自拍| 国产第二页| 亚洲欧洲日韩天堂av| 蜜臀精品1区2区| 97超碰欧美中文字幕| 自偷自拍的亚洲视频| 91AV天美在线视频| 黑人白女精品一区| 97超碰天天爱天天爱| 国语av狠狠色丁香婷婷综合激情| 色99视频| 日日骚一区二区三区| 日韩不卡毛片Av免费高清| 麻豆精品三区视频| 天天狠操| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 久草精品热视| 风月影院十八禁| 成人在线视频二区| 97精品视频| 青青爽| 日韩熟女三十乱伦| 亚洲天堂另类小说男人| 日本性感人妻91| 亚洲AV资源| 波多野结衣AV无码一区| 青青草久久一区网| 一本精品日本在线视频精品| 天天看高清麻豆| 精品国产丝袜一区二区三区乱码| 九九九九免费高| 欧美日韩国产高清在线一二三区| 青草影院内射高潮| 91精品伊人久久久大香线蕉91| 97操综合| 人人扣人人操| 亚洲国产成人综合碰碰三级经典| 国产又粗又又黄又猛| 91老熟女| 国产熟妇一区二区| 夜间福利片1000无码| 国产夫妻性生活视频| 婷婷伊人网| 97干97色| 999综合色| 999国产精品999| 热热色91| 欧美国产视频| 久草国产在线视频| 91欧美情色| 91 丝袜在线| 性爱免费视频成人| 亚洲第一页综合在线| 超碰三级秋霞| 无码免费在线观看黄色片| 97干综合网| 激情综合五月天| 91东京热男人的天堂| 国产91丝袜在线播放蜜月| 五月婷婷丁香六月| 中文字幕黄片在线| 亚洲天堂一区二区| 人妻天天爽夜夜爽爽| av绯色| 日本媚薬中文字幕在线| 欧美精品在线观看| 美女诱惑爱爱| 成人av福利在线观看| 久久国产999| 国产亚洲人妻综合日韩 久久| 麻豆综合一区av| 黄站在线免费观看| 久久的网站啊啊啊啊啊| 青草青草久热| 精品91| 99re综合伊人| 亚洲中文字幕有码视频一区二区三区| 国产h片在线观看视频| 亚洲欧美黄| 亚洲丰满很很操| 亚洲熟妇乱女区二区三区| 日本色色色视频| 成人免费性爱视视| 亚洲成人AB| 久草综合视频| 伊人综合色网| 91啪啪视频| 成年女人黄网站| 伊人影院日本| 啊啊啊水好多| 色悠久久久av| 色九月综合| 欧美亚洲丝袜人妻制服99| 亚洲av无线观看| 国产男女边吃边摸视频网站| 少妇熟女一区二区三区| 久久是精品| 青青草大香蕉在线视频| 亚洲色堂免费视频| 久久久中文| 激情啪啪拍91| 五月丁香拍拍激情综合三级| 欧美操人视频| 丰满人妻区一区二区三| 日韩大香蕉AV影片| 综合网亚洲1| 精品中文日韩字幕视频| 美女97超碰| 久久久久9久久久久| 婷婷五月激情综合| 国产精品亚洲免费| 欧美大香蕉专区网| 免费一级黄色录像影片| 亚洲国产精品成人综合| 欧美色人| 国产强奸乱伦第1页| 婷婷五月天激情四射| 最新AV在线| 欧美精品庄| 久草这里只有精品| 91性网| 91bbbbbb| 色淫网站优优视频| julia国产在线| 超碰在线日韩一区| 婷婷丁香人妻| 欧美宗合网| 天天肏天天干| 97超碰站| 午夜福利国产欧美日韩夜夜| 青娱乐淫乱1314| 亚洲AV成人精品网站在AV| 国产捆绑一区| 日韩有码 一区二区三区| 夜夜操美女| 新久久AV| 无码精品蜜桃一区二区三区ww| hd成人一区二区在线| 亚洲精品乱码久久久久久蜜桃麻豆| 韩国三级理论在线| 婷婷99狠狠| 97资源超碰|