久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

使用Pytorch搭建模型的步驟

瀏覽:56日期:2022-07-05 13:42:32

本來是只用Tenorflow的,但是因?yàn)門F有些Numpy特性并不支持,比如對數(shù)組使用列表進(jìn)行切片,所以只能轉(zhuǎn)戰(zhàn)Pytorch了(pytorch是支持的)。還好Pytorch比較容易上手,幾乎完美復(fù)制了Numpy的特性(但還有一些特性不支持),怪不得熱度上升得這么快。

1 模型定義

和TF很像,Pytorch也通過繼承父類來搭建自定義模型,同樣也是實(shí)現(xiàn)兩個(gè)方法。在TF中是__init__()和call(),在Pytorch中則是__init__()和forward()。功能類似,都分別是初始化模型內(nèi)部結(jié)構(gòu)和進(jìn)行推理。其它功能比如計(jì)算loss和訓(xùn)練函數(shù),你也可以繼承在里面,當(dāng)然這是可選的。下面搭建一個(gè)判別MNIST手寫字的Demo,首先給出模型代碼:

import numpy as npimport matplotlib.pyplot as plt import torch from torch import nn,optim from torchsummary import summary from keras.datasets import mnistfrom keras.utils import to_categoricaldevice = torch.device(’cuda’) #——————1—————— class ModelTest(nn.Module): def __init__(self,device): super().__init__() self.layer1 = nn.Sequential(nn.Flatten(),nn.Linear(28*28,512),nn.ReLU())#——————2—————— self.layer2 = nn.Sequential(nn.Linear(512,512),nn.ReLU()) self.layer3 = nn.Sequential(nn.Linear(512,512),nn.ReLU()) self.layer4 = nn.Sequential(nn.Linear(512,10),nn.Softmax()) self.to(device) #——————3—————— self.opt = optim.SGD(self.parameters(),lr=0.01)#——————4—————— def forward(self,inputs): #——————5—————— x = self.layer1(inputs) x = self.layer2(x) x = self.layer3(x) x = self.layer4(x) return x def get_loss(self,true_labels,predicts): loss = -true_labels * torch.log(predicts) #——————6—————— loss = torch.mean(loss) return loss def train(self,imgs,labels): predicts = model(imgs) loss = self.get_loss(labels,predicts) self.opt.zero_grad()#——————7—————— loss.backward()#——————8—————— self.opt.step()#——————9——————model = ModelTest(device)summary(model,(1,28,28),3,device=’cuda’) #——————10——————

#1:獲取設(shè)備,以方便后面的模型與變量進(jìn)行內(nèi)存遷移,設(shè)備名只有兩種:’cuda’和’cpu’。通常是在你有GPU的情況下需要這樣顯式進(jìn)行設(shè)備的設(shè)置,從而在需要時(shí),你可以將變量從主存遷移到顯存中。如果沒有GPU,不獲取也沒事,pytorch會默認(rèn)將參數(shù)都保存在主存中。

#2:模型中層的定義,可以使用Sequential將想要統(tǒng)一管理的層集中表示為一層。

#3:在初始化中將模型參數(shù)遷移到GPU顯存中,加速運(yùn)算,當(dāng)然你也可以在需要時(shí)在外部執(zhí)行model.to(device)進(jìn)行遷移。

#4:定義模型的優(yōu)化器,和TF不同,pytorch需要在定義時(shí)就將需要梯度下降的參數(shù)傳入,也就是其中的self.parameters(),表示當(dāng)前模型的所有參數(shù)。實(shí)際上你不用擔(dān)心定義優(yōu)化器和模型參數(shù)的順序問題,因?yàn)閟elf.parameters()的輸出并不是模型參數(shù)的實(shí)例,而是整個(gè)模型參數(shù)對象的指針,所以即使你在定義優(yōu)化器之后又定義了一個(gè)層,它依然能優(yōu)化到。當(dāng)然優(yōu)化器你也可以在外部定義,傳入model.parameters()即可。這里定義了一個(gè)隨機(jī)梯度下降。

#5:模型的前向傳播,和TF的call()類似,定義好model()所執(zhí)行的就是這個(gè)函數(shù)。

#6:我將獲取loss的函數(shù)集成在了模型中,這里計(jì)算的是真實(shí)標(biāo)簽和預(yù)測標(biāo)簽之間的交叉熵。

#7/8/9:在TF中,參數(shù)梯度是保存在梯度帶中的,而在pytorch中,參數(shù)梯度是各自集成在對應(yīng)的參數(shù)中的,可以使用tensor.grad來查看。每次對loss執(zhí)行backward(),pytorch都會將參與loss計(jì)算的所有可訓(xùn)練參數(shù)關(guān)于loss的梯度疊加進(jìn)去(直接相加)。所以如果我們沒有疊加梯度的意愿的話,那就要在backward()之前先把之前的梯度刪除。又因?yàn)槲覀兦懊嬉呀?jīng)把待訓(xùn)練的參數(shù)都傳入了優(yōu)化器,所以,對優(yōu)化器使用zero_grad(),就能把所有待訓(xùn)練參數(shù)中已存在的梯度都清零。那么梯度疊加什么時(shí)候用到呢?比如批量梯度下降,當(dāng)內(nèi)存不夠直接計(jì)算整個(gè)批量的梯度時(shí),我們只能將批量分成一部分一部分來計(jì)算,每算一個(gè)部分得到loss就backward()一次,從而得到整個(gè)批量的梯度。梯度計(jì)算好后,再執(zhí)行優(yōu)化器的step(),優(yōu)化器根據(jù)可訓(xùn)練參數(shù)的梯度對其執(zhí)行一步優(yōu)化。

#10:使用torchsummary函數(shù)顯示模型結(jié)構(gòu)。奇怪為什么不把這個(gè)繼承在torch里面,要重新安裝一個(gè)torchsummary庫。

2 訓(xùn)練及可視化

接下來使用模型進(jìn)行訓(xùn)練,因?yàn)閜ytorch自帶的MNIST數(shù)據(jù)集并不好用,所以我使用的是Keras自帶的,定義了一個(gè)獲取數(shù)據(jù)的生成器。下面是完整的訓(xùn)練及繪圖代碼(50次迭代記錄一次準(zhǔn)確率):

import numpy as npimport matplotlib.pyplot as plt import torch from torch import nn,optim from torchsummary import summary from keras.datasets import mnistfrom keras.utils import to_categoricaldevice = torch.device(’cuda’) #——————1—————— class ModelTest(nn.Module): def __init__(self,device): super().__init__() self.layer1 = nn.Sequential(nn.Flatten(),nn.Linear(28*28,512),nn.ReLU())#——————2—————— self.layer2 = nn.Sequential(nn.Linear(512,512),nn.ReLU()) self.layer3 = nn.Sequential(nn.Linear(512,512),nn.ReLU()) self.layer4 = nn.Sequential(nn.Linear(512,10),nn.Softmax()) self.to(device) #——————3—————— self.opt = optim.SGD(self.parameters(),lr=0.01)#——————4—————— def forward(self,inputs): #——————5—————— x = self.layer1(inputs) x = self.layer2(x) x = self.layer3(x) x = self.layer4(x) return x def get_loss(self,true_labels,predicts): loss = -true_labels * torch.log(predicts) #——————6—————— loss = torch.mean(loss) return loss def train(self,imgs,labels): predicts = model(imgs) loss = self.get_loss(labels,predicts) self.opt.zero_grad()#——————7—————— loss.backward()#——————8—————— self.opt.step()#——————9——————def get_data(device,is_train = True, batch = 1024, num = 10000): train_data,test_data = mnist.load_data() if is_train: imgs,labels = train_data else: imgs,labels = test_data imgs = (imgs/255*2-1)[:,np.newaxis,...] labels = to_categorical(labels,10) imgs = torch.tensor(imgs,dtype=torch.float32).to(device) labels = torch.tensor(labels,dtype=torch.float32).to(device) i = 0 while(True): i += batch if i > num: i = batch yield imgs[i-batch:i],labels[i-batch:i] train_dg = get_data(device, True,batch=4096,num=60000) test_dg = get_data(device, False,batch=5000,num=10000) model = ModelTest(device) summary(model,(1,28,28),11,device=’cuda’) ACCs = []import timestart = time.time()for j in range(20000): #訓(xùn)練 imgs,labels = next(train_dg) model.train(imgs,labels) #驗(yàn)證 img,label = next(test_dg) predicts = model(img) acc = 1 - torch.count_nonzero(torch.argmax(predicts,axis=1) - torch.argmax(label,axis=1))/label.shape[0] if j % 50 == 0: t = time.time() - start start = time.time() ACCs.append(acc.cpu().numpy()) print(j,t,’ACC: ’,acc)#繪圖x = np.linspace(0,len(ACCs),len(ACCs))plt.plot(x,ACCs)

準(zhǔn)確率變化圖如下:

使用Pytorch搭建模型的步驟

3 其它使用技巧

3.1 tensor與array

需要注意的是,pytorch的tensor基于numpy的array,它們是共享內(nèi)存的。也就是說,如果你把tensor直接插入一個(gè)列表,當(dāng)你修改這個(gè)tensor時(shí),列表中的這個(gè)tensor也會被修改;更容易被忽略的是,即使你用tensor.detach.numpy(),先將tensor轉(zhuǎn)換為array類型,再插入列表,當(dāng)你修改原本的tensor時(shí),列表中的這個(gè)array也依然會被修改。所以如果我們只是想保存tensor的值而不是整個(gè)對象,就要使用np.array(tensor)將tensor的值復(fù)制出來。

3.2 自定義層

在TF中,自定義模型通常繼承keras的Model,而自定義層則是繼承l(wèi)ayers.Layer,繼承不同的父類通常會造成初學(xué)者的困擾。而在pytorch中,自定義層與自定義模型一樣,都是繼承nn.Module。Pytorch將層與模型都看成了模塊,這很容易理解。的確,層與模型之間本來也沒有什么明確的界限。并且定義方式與上面定義模型的方式一樣,也是實(shí)現(xiàn)兩個(gè)函數(shù)即可。代碼示例如下:

import torch from torch import nn class ParaDeconv(nn.Module):#——————1—————— def __init__(self,in_n,out_n): super().__init__() self.w = nn.Parameter(torch.normal(0,0.01,size = [in_n,out_n]),requires_grad=True) self.b = nn.Parameter(torch.normal(0,0.01,size = [out_n]),requires_grad=True) def forward(self,inputs): x = torch.matmul(inputs,self.w) x = x + self.b return x layer = ParaDeconv(2,3)y = layer(torch.ones(100,2))#——————2——————loss = torch.sum(y)#——————3——————loss.backward()#——————4——————for i in layer.parameters():#——————5—————— print(i.grad)#——————6——————

#1:自定義一個(gè)全連接層。層中可訓(xùn)練參數(shù)的定義是使用nn.Parameter,如果直接使用torch.tensor是無法在#5中遍歷到的。

#2/3/4:輸入并計(jì)算loss,然后反向傳播計(jì)算參數(shù)梯度。

#5/6:輸出完成反向傳播后層參數(shù)的梯度。

以上定義的層可以和pytorch自帶的層一樣直接插入模型中使用。

3.3 保存/加載

3.3.1 保存/加載模型

有兩種方式,一種是保存模型的參數(shù):

torch.save(model.state_dict(), PATH) #保存 model.load_state_dict(torch.load(PATH),strict=True) #加載

這種加載方式需要先定義模型,然后再加載參數(shù)。如果你定義的模型參數(shù)名與保存的參數(shù)對不上,就會出錯(cuò)。但如果把strict修改成False,不嚴(yán)格匹配,它就會只匹配對應(yīng)上的鍵值,不會因多出或缺少的參數(shù)而報(bào)錯(cuò)。

另一種是直接保存模型:

torch.save(model, PATH) #保存model = torch.load(PATH) #加載

這種方式看似方便,實(shí)際上更容易出錯(cuò)。因?yàn)閜ython不能保存整個(gè)模型的類,所以它只能保存定義類的代碼文件位置,以在加載時(shí)獲取類的結(jié)構(gòu)。如果你改變了定義類的代碼位置,就有可能因?yàn)檎也坏筋惗鲥e(cuò)。

3.3.2 保存訓(xùn)練點(diǎn)當(dāng)你要保存某個(gè)訓(xùn)練階段的狀態(tài),比如包含優(yōu)化器參數(shù)、模型參數(shù)、訓(xùn)練迭代次數(shù)等,可以進(jìn)行如下操作:

#保存訓(xùn)練點(diǎn)torch.save({ ’epoch’: epoch, ’model_state_dict’: model.state_dict(), ’optimizer_state_dict’: optimizer.state_dict(), ’loss’: loss }, PATH)#加載訓(xùn)練點(diǎn)model = TheModelClass(*args, **kwargs)optimizer = TheOptimizerClass(*args, **kwargs)checkpoint = torch.load(PATH)model.load_state_dict(checkpoint[’model_state_dict’])optimizer.load_state_dict(checkpoint[’optimizer_state_dict’])epoch = checkpoint[’epoch’]loss = checkpoint[’loss’]

和保存模型一樣,也是使用torch.save()。它很靈活,可以保存字典,因此讀取的時(shí)候也按照字典索引讀取即可。當(dāng)然要注意,并不是任何類型都能保存的,這里保存的四個(gè)類型分別是:

1. int

2. collections.OrderedDict

3. collections.OrderedDict

4. list

3.4 修改模型參數(shù)

Pytorch沒有提供額外的方式讓我們修改模型參數(shù),我們可以使用上面加載模型參數(shù)的方式來修改參數(shù)。對于某個(gè)參數(shù),我們只要把鍵值和對應(yīng)要修改的值放在字典中傳入load_state_dict即可。如果沒傳入所有的參數(shù),記得把strict設(shè)為False。示例如下:

model.load_state_dict({’weight’:torch.tensor([0.])},strict=False) #修改模型參數(shù)

參數(shù)名,也就是鍵值,和對應(yīng)的參數(shù)shape可以通過model.state_dict()查看。

以上就是使用Pytorch搭建模型的步驟的詳細(xì)內(nèi)容,更多關(guān)于Pytorch搭建模型的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Pytorch
相關(guān)文章:
主站蜘蛛池模板: 国产1区在线观看 | 欧美日韩精品一区 | 久久欧美高清二区三区 | 久久久久综合 | 日韩福利视频 | 狠狠综合久久av一区二区老牛 | 成人精品 | 国产精品99久久久久久动医院 | 天天天综合网 | 午夜精品一区二区三区在线视频 | 国产精品久久久久久福利一牛影视 | 欧美在线高清 | 欧美aaaaa| 久久久成人av| 欧美久久一区二区 | 日韩在线国产精品 | 亚洲国产高清在线 | 国产大学生情侣呻吟视频 | 亚洲欧美精品 | 久久久久亚洲精品 | 色综久久 | 一区二区精品 | 久草免费在线视频 | 精品日韩一区二区 | 在线视频 欧美日韩 | 黄色片地址 | 免费一二三区 | 91亚洲一区 | 国产精品欧美久久久久一区二区 | 日韩在线成人 | 国产精品1区 | 国产伦精品一区二区三区四区视频 | 国产精品久久久久久久久久久久久 | 午夜精品久久久久久久久久久久 | 国产精品99久久久久久www | 精品国产一区二区三区成人影院 | 日韩一区二区三区在线观看 | 国产在线一区二区 | 欧美激情一区二区三区 | 精品一区二区久久久久久久网站 | zzz444成人天堂7777| 久久免费福利视频 | 中文精品在线 | 国产精品视频入口 | 亚洲精品免费在线观看 | 九九只有精品 | 久久视频一区 | 欧美日韩国产精品 | 久久久久久久久久穴 | 亚洲成人影院在线观看 | 国产亚洲欧美在线 | 国产精品国产a级 | 日本中文字幕一区 | 亚洲成人高清在线 | 欧美一级精品 | 久久亚洲视频 | 精品毛片 | 亚洲一区二区三区四区在线 | 亚洲一区二区三区中文字幕 | 国产在线观看av | 日韩精品一区二区在线观看 | 不卡视频一区二区三区 | 逼逼av| 国产成人精品一区二区三区视频 | 综合久久99 | 日韩精品一区二区三区中文字幕 | 在线看成人片 | 91免费看片 | 欧美日韩不卡视频 | 一区二区三区在线播放 | heyzo 在线| 亚洲午夜成激人情在线影院 | 97成人在线 | 国产精品久久久久久婷婷天堂 | 国产高清在线看 | 欧美一区二区在线看 | 91精品国产91久久久久久密臀 | 最新国产福利在线 | 91麻豆产精品久久久久久 | 91久久夜色精品国产九色 | 91婷婷射| 97久久久 | 欧洲亚洲精品久久久久 | 午夜精品久久久久久 | 亚洲欧美久久久 | 亚洲国产精品va在线看黑人 | 国产91精选 | 日本一级在线观看 | 99视频在线免费观看 | 亚洲精品一区二区三区在线 | 成人亚洲 | 99色资源 | 久久久精品一区二区 | 国产一区久久久 | 国产在线精品一区 | 综合一区二区三区 | 日韩精品视频久久 | 99热手机在线观看 | 日韩久久精品 | 日日干夜夜操 | 中文字幕在线观看免费视频 | 中文字幕一区二区三区乱码图片 | av综合站| 91精品在线观看入口 | 久久精品高清视频 | 91精品国产综合久久福利 | 国产精品久久99 | 影音在线资源 | 精品一区二区三区免费视频 | 免费成人在线网站 | 久久视频精品 | 国产99免费 | 久久久99久久| 精品九九九 | 中文字幕av一区二区三区 | 成人一区二区三区在线 | 亚洲高清av在线 | 国产精品久久久久国产精品 | 中文字字幕在线 | 亚洲精品国产二区 | 日韩成人一区 | 91在线视频观看 | 亚洲精品视频免费观看 | 日韩经典一区 | 亚洲午夜激情网 | 欧美中文字幕在线观看 | 亚洲久草| 国产91精品一区二区绿帽 | 日韩一区在线播放 | 久久伊人久久 | 国产情侣91| 老牛影视av一区二区在线观看 | 天天干天天草 | 国产成人精品无人区一区 | 日韩一级免费在线观看 | 日日爱886| 亚洲成人一区二区三区 | 韩日一区二区 | 国产小视频在线看 | 亚洲久久在线 | 99视频精品 | 91色爱| 久久久久久国产精品 | 精品精品 | 一本一本久久a久久精品综合妖精 | 国产欧美一区二区三区在线看 | 日韩欧美在线免费观看 | 欧美日韩在线免费 | 天天躁人人躁人人躁狂躁 | 国产精品高潮呻吟久久av黑人 | 久在线 | 欧美一级高清在线 | 亚洲视频在线观看一区二区三区 | 欧美一区二区三区在线视频 | 久久成人精品 | 特级淫片女子高清视频在线观看 | 欧洲成人在线视频 | 欧美三级视频 | 久久综合九九 | 亚洲精品视频在线观看网站 | 亚洲欧美视频 | 久久精品国产亚洲一区二区三区 | 欧美黄色大片网站 | 超碰偷拍 | 嫩草视频入口 | 欧美日韩视频在线第一区 | 成人在线播放器 | 欧美精品一区二区三区在线四季 | 久久精品国产一区二区三 | 欧美va天堂 | 电影91久久久 | 欧美wwwsss9999 | 99精品国产一区二区三区 | 美女国产精品 | 欧美日韩电影一区二区三区 | 欧美自拍一区 | 久久国产精品99久久久久久老狼 | 国产91色 | 欧美日韩视频网站 | 亚洲视频在线播放 | 天天干人人 | 国产精品高清一区二区 | 天天操天天碰 | 午夜寂寞福利视频 | 国产高清在线精品一区二区三区 | 亚洲人成中文字幕在线观看 | 国产一级黄色大片 | 国产传媒在线视频 | 国产1区2区精品 | 一区二区不卡 | 久久久精品国产 | 国产免费高清 | 青青草一区二区三区 | 欧美一级做性受免费大片免费 | 天操天天干| 国产一区在线看 | 成人高清网站 | 欧美日韩国产精品 | 国产欧美在线观看 | 91免费看网站 | 91观看| 国内精品一区二区 | 久久久亚洲精品视频 | 国产日本欧美在线 | av网站在线免费观看 | 成人精品三级av在线看 | www中文字幕 | 精品久久久久久久久久久久久久 | 日韩中文字幕在线免费 | 午夜免费看片 | 91精品久久久久久久 | 亚洲高清久久 | 欧美亚洲啪啪 | 日本不卡免费新一二三区 | 日韩中出 | 一区不卡| 久久国产精品免费一区二区三区 | 日韩精品一区二区三区四区视频 | 午夜在线免费观看 | 少妇久久久 | 在线观看成人av | 成人免费crm在线观看 | av网站大全免费 | 91视频免费观看 | www久| 亚洲成av人片一区二区三区 | 欧美一级在线观看 | 国产精品影院在线观看 | 欧美午夜精品久久久久免费视 | 久色视频在线 | 五月婷婷狠狠爱 | 久草视频免费在线播放 | 伊人国产在线 | 成人亚洲在线观看 | 国产精品毛片久久久久久 | 久久精品亚洲一区二区 | 成人毛片在线观看 | 欧美精品一级二级 | 免费的黄色网 | 亚洲高清在线观看 | 欧美日韩精品综合 | 国产精品成人一区二区三区 | 得得啪在线视频 | 在线精品一区 | 欧美黑人巨大xxx极品 | 成人av一区二区三区 | 一区二区三区日韩 | 亚洲欧美在线观看 | 欧美日本高清视频 | 麻豆av在线播放 | 亚洲国产一区二区三区四区 | 免费的一级视频 | 一区二区免费视频观看 | 国产毛片精品 | 中文字幕乱码亚洲精品一区 | 九九久久精品视频 | 毛片免费视频 | 日韩精品久久 | 亚洲毛片| 久久精品国产视频 | 青青草国产成人av片免费 | 在线一区| 欧美在线观看视频 | 一级片黄色免费 | 欧洲成人午夜免费大片 | 欧美亚洲天堂 | 91亚洲国产成人久久精品网站 | 精品久久久久久久久久久久久久 | 国产在线观看91一区二区三区 | 黄色一级片在线观看 | 亚洲精品一区国语对白 | 人人爱夜夜爽日日视频 | 在线观看欧美日韩 | av在线日韩 | 国产一区在线看 | 日韩中文一区二区三区 | 色综合一区二区三区 | 91精品在线播放 | 天天综合91 | 在线看一区 | 综合久久久久 | 欧美国产日韩一区 | 欧美九九 | 特大毛片 | 久久久久久久久一区 | 欧美精品成人一区二区三区四区 | 亚洲欧美国产毛片在线 | 日本在线一区 | 蜜桃视频网站在线观看 | 玖玖综合网 | 91久久国产综合久久91精品网站 | 亚洲日韩中文字幕 | 日本黄色免费播放 | 精品久久久久久久久久久 | 成人爽a毛片一区二区免费 亚洲自拍偷拍精品 | 国产精品入口麻豆www | 97久久超碰 | 99精品网站 | 久久99成人 | 女同理伦片在线观看禁男之园 | 亚洲午夜精品视频 | 欧美日韩视频 | 一区 | 国产精品美女久久久久aⅴ国产馆 | 久久高清国产 | 伊人激情网 | 九九亚洲| 久在线视频 | 91久久艹 | 久久久久国产精品午夜一区 | 综合久久综合久久 | 久久久久免费精品视频 | 日本视频二区 | 精品久久久久久久久久久久包黑料 | 成人在线免费网站 | 精品国产精品 | 午夜国产精品成人 | 狠狠搞狠狠搞 | 精品一区视频 | 日韩精品中文字幕在线观看 | 欧美久久大片 | 久久国产高清 | 超级碰在线视频 | 在线观看免费av网 | 黄色片子视频 | 久久久国产视频 | 国产精品视频999 | 日本久久久久久久久久 | 在线免费观看色视频 | 777777777亚洲妇女 | 激情欧美一区二区三区中文字幕 | 国产1页 | 国产精品综合视频 | 成人国产一区 | 成人性大片免费观看网站 | 色综合久久天天综合网 | 黄色片免费在线观看视频 | 中文字幕第一页在线 | 国产最新视频在线 | 成人精品一区二区 | 欧美日韩久久精品 | 国产一区二区三区高清 | 一色桃子av一区二区免费 | 久久成人精品 | 国产日韩欧美高清 | 99热精品久久 | 国产高清一区 | 欧美精品激情 | 久久精品一区二区三区不卡牛牛 | 日韩在线免费电影 | 福利视频二区 | 国产一区免费视频 | 国产免费黄视频 | 亚洲午夜精品 | 97人人干| 国产日韩欧美在线 | 欧美激情第1页 | 99久久婷婷国产综合精品电影 | 亚洲成人av在线 | 一级免费在线视频 | 国产成人精品免高潮在线观看 | 欧美日本精品 | 国产片久久 | 91在线成人 | 久久精品亚洲精品国产欧美 | 国产成人天天爽高清视频 | 日韩国产欧美视频 | 国产精品免费一区 | 亚洲精品一区二三区 | 在线不卡一区 | 亚洲一区影院 | 懂色一区二区三区av片 | 亚洲精品网址 | 日本黄色一级电影 | 精品毛片| 在线免费毛片 | 国产精品三级在线 | 99精品国产高清一区二区麻豆 | 九九色综合 | 中文字幕欧美激情 | 国产成人免费视频网站高清观看视频 | 色www精品视频在线观看 | 日韩在线无 | 一区二区三区在线播放 | 精品日韩一区二区三区 | 欧美一级视频 | 黄色精品 | 成人一二三区 | 日韩在线不卡视频 | 欧美精品一区二区久久 | 久久久天堂 | 久久久国产精品入口麻豆 | 夜夜操导航 | 亚洲人成人一区二区在线观看 | 日韩一区二区三区在线视频 | 中国一级特黄毛片大片 | 精品久久久久久久 | 国产中文字幕一区 | 高清一区二区三区视频 | 亚洲一区二区久久 | 亚洲黄色区 | 国产成人综合在线观看 | 久草热8精品视频在线观看 黄色片网站视频 | 国产精品一区在线观看你懂的 | 国产精品一区在线 | 一区二区三区精品视频 | 色天天天天色 | 免费国产视频在线观看 | 欧美久久久久久 | 亚洲国产成人在线观看 | 国产精品国产成人国产三级 | 午夜免费av | 久久影院一区 | www97影院| 日本黄色一级电影 | 青青伊人久久 | 影音先锋中文字幕在线 | 综合色九九 | av一级久久| 免费看一区二区三区 | 中文字幕在线免费 | 中文字幕在线免费看 | 中文字幕亚洲欧美日韩在线不卡 | av手机在线电影 | 一区二区在线看 | 91精品中文字幕一区二区三区 | 亚洲一区二区三区四区五区中文 | 天天精品 | 久久国产综合 | 午夜影院 | 亚洲协和影视 | 日韩精品免费在线观看 | 欧美一级二级视频 | 伊人网综合在线 | 99久久综合精品五月天 | av不卡电影在线观看 | 一区二区中文字幕 | 日韩欧美国产一区二区 | 国产激情精品视频 | 成人欧美| 91精品啪aⅴ在线观看国产 | 国产午夜精品一区二区三区 | 青青草超碰在线 | 91成人短视频在线观看 | 久草在线在线精品观看 | 一级黄免费看 | 日韩三及片| 91网址| 天天操天天插 | 欧美日韩福利视频 | 日本在线播放 | 伊人精品视频在线观看 | 欧美日韩国产一区二区三区 | 亚洲男人天堂2023 | 亚洲精品乱码久久久久久蜜桃不卡 | 欧美成人精品一区二区三区在线看 | 51ⅴ精品国产91久久久久久 | 久久综合九色综合欧美狠狠 | 老司机午夜免费精品视频 | 国产成人一级片 | 91综合网| caoporn免费在线视频 | 真人一级毛片 | 亚洲欧洲日本国产 | 国产探花在线精品一区二区 | 日本超碰 | 欧美一级片在线 | 97av在线 | 最新国产精品 | 中文字幕亚洲一区 | 亚洲精品一区国产精品 | 日韩精品免费 | 九九免费观看全部免费视频 | 欧美日韩欧美日韩 | 亚洲精品资源在线观看 | 日韩国产高清在线 | 好看的一级毛片 | 色人人| 亚洲热av | 亚洲成人首页 | 精品久久久久久久久久久久久久 | 久久久久久免费毛片精品 | 97视频在线免费观看 | 国产大学生援交视频在线观看 | 成人在线播放器 | 欧美精品成人一区二区三区四区 | jlzzjlzz亚洲日本少妇 | 国产黄色在线播放 | 欧美第一视频 | 一区二区视频在线观看 | 日韩在线免费 | 91久久精品一区二区三区 | 中文字幕国产日韩 | 色综合久久久久综合99 | 一区二区在线不卡 | 亚洲av毛片| 亚洲成人高清 | 91亚洲国产成人久久精品网站 | 成人免费在线观看视频 | 中文字幕av一区二区三区 | 在线视频a| 一区二区三区久久久久久 | 久久久亚洲综合 | 欧美天天| 97人人超碰 | 午夜免费视频 | 超碰精品在线观看 | 国产精品无码永久免费888 | 这里有精品视频 | 久久se精品一区精品二区 | 91性高湖久久久久久久久_久久99 | 日韩欧美一级精品久久 | 在线视频亚洲 | 国产精品久久久久无码av | 777kkk999成人ww | 国产成人精品午夜视频免费 | 91视频网址| 日韩在线一区二区 | 久久精品一区二区国产 | 成人免费激情视频 | 成人影院www在线观看 | 日韩高清不卡一区二区三区 | 欧美日韩精品久久 | 亚洲高清视频一区 | 九色porny国模私拍av | 97久久精品午夜一区二区 | 一级二级在线观看 | 99r精品在线 | 超碰人人在线 | 久久人人爽人人爽人人片av高清 | 仙踪林久久久久久久999 | 亚洲电影一区 | 欧美黄视频在线观看 | 国产精品原创av片国产免费 | 午夜精品久久久久久久久久久久 | 另类sb东北妇女av | 久久成人一区二区 | 欧美一级在线观看 | 女同理伦片在线观看禁男之园 | 国产精品久久九九 | 国产伦精品一区二区三区四区视频 | 色综合欧美 | 国产欧美一区二区视频 | 日韩视频一区二区三区 | 成人日韩| 在线看av网址 | 成人午夜免费视频 | 国产成人午夜视频 | 免费观看毛片 | 超碰在线99 | 96自拍视频| 极黄视频 | 国产精品久久久久免费a∨ 欧洲精品一区 | 男人天堂亚洲天堂 | 日韩精品免费在线视频 | 国产男人的天堂 | 久草青青 | 自拍偷拍第一页 | 91伊人 | av网站大全免费 | 久久国产精品电影 | 欧洲亚洲精品久久久久 | 成人国产在线观看 | 国产精品一区二区三区在线免费观看 | 天天插狠狠插 | av电影中文字幕在线观看 | 一色屋精品久久久久久久久久 | 精品久久久久久久久久久久久久久 | 国产亚洲精品久久久久动 | 国产精品久久久久久久久久免费 | xxxx网| 成人欧美一区二区三区在线播放 | 色无欲天天天影视综合网 | 久久成人精品 | 国产一区在线看 | 亚洲情网站 | 中文字幕成人 | 亚洲国产天堂久久综合 | 国产高清一区 | 亚洲国产午夜视频 | 91资源总站 | 黄色精品一区二区 | 国产黄色av | 国产成人在线一区二区 | 欧美极品欧美精品欧美视频 | 欧美视频免费在线 | 欧美国产精品一区 | 国产日产精品一区二区三区四区 | 天堂在线中文 | 日韩精品中文字幕一区二区三区 | 日本天天色 | 欧美视频免费在线 | 国产99精品视频 | 精品欧美黑人一区二区三区 | 久久精品这里只有精品 | 永久免费网站 | av日韩在线播放 | 国精产品一区二区三区黑人免费看 | 一区二区三区久久 | 欧美一级二级三级 | 在线观看成人小视频 | 亚洲精品视频网 | 一级片的网址 | 欧美成人一区二区三区片免费 | 国产欧美精品一区二区 | 日韩免费视频 | 日韩精品www | 老司机在线精品视频 | 91久久久久久久久久久久久久久久 | 精品一区二区三区免费 | 国产成人精品久久二区二区 | 亚洲一区二区三区四区五区午夜 | 久久久精品一区二区三区 | 免费黄色在线 | 91久久国产综合久久 |