久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

60分钟入门pytorch

發(fā)布時間:2024/3/26 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 60分钟入门pytorch 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 1. Pytorch 是什么
    • 1.1 安裝
    • 1.2 張量(Tensors)
      • 1.2.1 聲明和定義
      • 1.2.2 操作(Operations)
    • 1.3 和 Numpy 數(shù)組的轉(zhuǎn)換
      • 1.3.1 Tensor 轉(zhuǎn)換為 Numpy 數(shù)組
      • 1.3.2 Numpy 數(shù)組轉(zhuǎn)換為 Tensor
    • 1.4. CUDA 張量
  • 2. autograd
    • 2.1 張量
    • 2.2 梯度
  • 3. 神經(jīng)網(wǎng)絡(luò)
    • 3.1 定義網(wǎng)絡(luò)
    • 3.2 損失函數(shù)
    • 3.3 反向傳播
    • 3.4 更新權(quán)重
  • 4. 訓(xùn)練分類器
  • 4.1 訓(xùn)練數(shù)據(jù)
    • 4.2 訓(xùn)練圖片分類器
      • 4.2.1 加載和歸一化 CIFAR10
      • 4.2.2 構(gòu)建一個卷積神經(jīng)網(wǎng)絡(luò)
      • 4.2.3 定義損失函數(shù)和優(yōu)化器
      • 4.2.4 訓(xùn)練網(wǎng)絡(luò)
      • 4.2.5 測試模型性能
    • 4.3 在 GPU 上訓(xùn)練
  • 5. 數(shù)據(jù)并行
    • 5.1 導(dǎo)入和參數(shù)
    • 5.2 構(gòu)建一個假數(shù)據(jù)集
    • 5.3 簡單的模型
    • 5.4 創(chuàng)建模型和數(shù)據(jù)平行
    • 5.5 運行模型
    • 5.6 運行結(jié)果
    • 5.7 總結(jié)

1. Pytorch 是什么

Pytorch 是一個基于 Python 的科學(xué)計算庫,它面向以下兩種人群:

希望將其代替 Numpy 來利用 GPUs 的威力;
一個可以提供更加靈活和快速的深度學(xué)習(xí)研究平臺。

1.1 安裝

1.2 張量(Tensors)

Pytorch 的一大作用就是可以代替 Numpy 庫,所以首先介紹 Tensors ,也就是張量,它相當(dāng)于 Numpy 的多維數(shù)組(ndarrays)。兩者的區(qū)別就是 Tensors 可以應(yīng)用到 GPU 上加快計算速度。

首先導(dǎo)入必須的庫,主要是 torch

from __future__ import print_function import torch

1.2.1 聲明和定義

首先是對 Tensors 的聲明和定義方法,分別有以下幾種:

torch.empty(): 聲明一個未初始化的矩陣。

# 創(chuàng)建一個 5*3 的矩陣 x = torch.empty(5, 3) print(x) tensor([[-1.5295e+17, 6.0536e-43, -7.3276e-34],[ 6.0536e-43, -1.8921e+17, 6.0536e-43],[-7.3276e-34, 6.0536e-43, -1.5295e+17],[ 6.0536e-43, -4.4784e-38, 6.0536e-43],[-1.8921e+17, 6.0536e-43, -7.3277e-34]])

torch.rand():隨機初始化一個矩陣

# 創(chuàng)建一個隨機初始化的 5*3 矩陣 rand_x = torch.rand(5, 3) print(rand_x) tensor([[0.1696, 0.8806, 0.9775],[0.2274, 0.8217, 0.6517],[0.2400, 0.4360, 0.9738],[0.6987, 0.4369, 0.4041],[0.3466, 0.5234, 0.9666]])

torch.zeros():創(chuàng)建數(shù)值皆為 0 的矩陣

# 創(chuàng)建一個數(shù)值皆是 0,類型為 long 的矩陣 zero_x = torch.zeros(5, 3, dtype=torch.long) print(zero_x) tensor([[0, 0, 0],[0, 0, 0],[0, 0, 0],[0, 0, 0],[0, 0, 0]])

類似的也可以創(chuàng)建數(shù)值都是 1 的矩陣,調(diào)用 torch.ones

torch.tensor():直接傳遞 tensor 數(shù)值來創(chuàng)建

# tensor 數(shù)值是 [5.5, 3] tensor1 = torch.tensor([5.5, 3]) print(tensor1) #tensor0 = torch.tensor([[1,2],[3,4],[5,6]]) #print(tensor0) tensor([5.5000, 3.0000])

除了上述幾種方法,還可以根據(jù)已有的 tensor 變量創(chuàng)建新的 tensor 變量,這種做法的好處就是可以保留已有 tensor 的一些屬性,包括尺寸大小、數(shù)值屬性,除非是重新定義這些屬性。相應(yīng)的實現(xiàn)方法如下:

tensor.new_ones(row,cloumn,dtype):方法需要輸入尺寸大小

# 顯示定義新的尺寸是 5*3,數(shù)值類型是 torch.double tensor2 = tensor1.new_ones(5, 3, dtype=torch.double) # new_* 方法需要輸入 tensor 大小 print(tensor2) tensor([[1., 1., 1.],[1., 1., 1.],[1., 1., 1.],[1., 1., 1.],[1., 1., 1.]], dtype=torch.float64)

torch.randn_like(old_tensor):保留相同的尺寸大小

# 修改數(shù)值類型 tensor3 = torch.randn_like(tensor2, dtype=torch.float) print('tensor3: ', tensor3) tensor3: tensor([[-1.0496, -0.9908, -0.4547],[ 0.6977, -0.9557, -0.8079],[ 0.3000, 2.5064, 2.8341],[ 1.6385, 0.3932, -1.0152],[-1.4500, 1.0717, -0.1984]])

輸出結(jié)果,這里是根據(jù)上個方法聲明的 tensor2 變量來聲明新的變量,可以看出尺寸大小都是 5*3,但是數(shù)值類型是改變了的。

最后,對 tensors 的尺寸大小獲取可以采用 tensor.size() 方法:

print(tensor3.size()) # 輸出: torch.Size([5, 3]) torch.Size([5, 3])

注意: torch.Size 實際上是元組(tuple)類型,所以支持所有的元組操作。

1.2.2 操作(Operations)

操作也包含了很多語法,但這里作為快速入門,僅僅以加法操作作為例子進行介紹,更多的操作介紹可以點擊下面網(wǎng)址查看官方文檔,包括轉(zhuǎn)置、索引、切片、數(shù)學(xué)計算、線性代數(shù)、隨機數(shù)等等:

https://pytorch.org/docs/stable/torch.html

對于加法的操作,有幾種實現(xiàn)方式:

  • 加號(+) 運算符
  • torch.add(tensor1, tensor2, [out=tensor3]),以新的張量tensor3輸出
  • tensor1.add_(tensor2):直接修改 tensor 變量
  • tensor4 = torch.rand(5, 3) print('tensor3 + tensor4= ', tensor3 + tensor4) print('tensor3 + tensor4= ', torch.add(tensor3, tensor4)) # 新聲明一個 tensor 變量保存加法操作的結(jié)果 result = torch.empty(5, 3) torch.add(tensor3, tensor4, out=result) print('add result= ', result) # 直接修改變量 tensor3.add_(tensor4) print('tensor3= ', tensor3) tensor3 + tensor4= tensor([[-0.5615, -0.7841, -0.1440],[ 1.1251, -0.5450, 0.0642],[ 0.4851, 2.8179, 3.4867],[ 2.0238, 0.9959, -0.0265],[-1.2165, 1.5306, 0.7595]]) tensor3 + tensor4= tensor([[-0.5615, -0.7841, -0.1440],[ 1.1251, -0.5450, 0.0642],[ 0.4851, 2.8179, 3.4867],[ 2.0238, 0.9959, -0.0265],[-1.2165, 1.5306, 0.7595]]) add result= tensor([[-0.5615, -0.7841, -0.1440],[ 1.1251, -0.5450, 0.0642],[ 0.4851, 2.8179, 3.4867],[ 2.0238, 0.9959, -0.0265],[-1.2165, 1.5306, 0.7595]]) tensor3= tensor([[-0.5615, -0.7841, -0.1440],[ 1.1251, -0.5450, 0.0642],[ 0.4851, 2.8179, 3.4867],[ 2.0238, 0.9959, -0.0265],[-1.2165, 1.5306, 0.7595]])

    注意:可以改變 tensor 變量的操作都帶有一個后綴_, 例如 x.copy_(y), x.t_() 都可以改變 x 變量

    除了加法運算操作,對于 Tensor 的訪問,和 Numpy 對數(shù)組類似,可以使用索引來訪問某一維的數(shù)據(jù),如下所示:

    # 訪問 tensor3 第一列數(shù)據(jù) print(tensor3[:, 0]) tensor([-0.5615, 1.1251, 0.4851, 2.0238, -1.2165])

    對 Tensor 的尺寸修改,可以采用 torch.view() ,如下所示:

    x = torch.randn(4, 4) y = x.view(16) # -1 表示給定列維度8之后,用16/8=2計算的另一維度數(shù) z = x.view(-1, 8) print("x = ",x) print("y = ",y) print("z = ",z) print(x.size(), y.size(), z.size()) x = tensor([[-0.3114, 0.2321, 0.1309, -0.1945],[ 0.6532, -0.8361, -2.0412, 1.3622],[ 0.7440, -0.2242, 0.6189, -1.0640],[-0.1256, 0.6199, -1.5032, -1.0438]]) y = tensor([-0.3114, 0.2321, 0.1309, -0.1945, 0.6532, -0.8361, -2.0412, 1.3622,0.7440, -0.2242, 0.6189, -1.0640, -0.1256, 0.6199, -1.5032, -1.0438]) z = tensor([[-0.3114, 0.2321, 0.1309, -0.1945, 0.6532, -0.8361, -2.0412, 1.3622],[ 0.7440, -0.2242, 0.6189, -1.0640, -0.1256, 0.6199, -1.5032, -1.0438]]) torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])

    如果 tensor 僅有一個元素,可以采用 .item() 來獲取類似 Python 中整數(shù)類型的數(shù)值:

    x = torch.randn(1) print(x) print(x.item()) #x1 = torch.rand(1,5) #print(x1) #only one element tensors can be converted to Python scalars,所以下面的語句不對 #for x0 in x1.item():#print(x0) tensor([-0.7328]) -0.7328450083732605

    更多的運算操作可以查看官方文檔的介紹:

    https://pytorch.org/docs/stable/torch.html

    1.3 和 Numpy 數(shù)組的轉(zhuǎn)換

    Tensor 和 Numpy 的數(shù)組可以相互轉(zhuǎn)換,并且兩者轉(zhuǎn)換后共享在 CPU 下的內(nèi)存空間,即改變其中一個的數(shù)值,另一個變量也會隨之改變。

    1.3.1 Tensor 轉(zhuǎn)換為 Numpy 數(shù)組

    實現(xiàn) Tensor 轉(zhuǎn)換為 Numpy 數(shù)組的例子如下所示,調(diào)用 tensor.numpy() 可以實現(xiàn)這個轉(zhuǎn)換操作。

    a = torch.ones(5) print(a) b = a.numpy() print(b) tensor([1., 1., 1., 1., 1.]) [1. 1. 1. 1. 1.]

    此外,剛剛說了兩者是共享同個內(nèi)存空間的,例子如下所示,修改 tensor 變量 a,看看從 a 轉(zhuǎn)換得到的 Numpy 數(shù)組變量 b 是否發(fā)生變化。

    a.add_(1) print(a) print(b) tensor([2., 2., 2., 2., 2.]) [2. 2. 2. 2. 2.]

    很明顯,b 也隨著 a 的改變而改變。

    1.3.2 Numpy 數(shù)組轉(zhuǎn)換為 Tensor

    轉(zhuǎn)換的操作是調(diào)用 torch.from_numpy(numpy_array) 方法。例子如下所示:

    import numpy as np a = np.ones(5) b = torch.from_numpy(a) np.add(a, 1, out=a) print(a) print(b) [2. 2. 2. 2. 2.] tensor([2., 2., 2., 2., 2.], dtype=torch.float64)

    在 CPU 上,除了 CharTensor 外的所有 Tensor 類型變量,都支持和 Numpy數(shù)組的相互轉(zhuǎn)換操作。

    1.4. CUDA 張量

    Tensors 可以通過 .to 方法轉(zhuǎn)換到不同的設(shè)備上,即 CPU 或者 GPU 上。例子如下所示:

    # 當(dāng) CUDA 可用的時候,可用運行下方這段代碼,采用 torch.device() 方法來改變 tensors 是否在 GPU 上進行計算操作 if torch.cuda.is_available():device = torch.device("cuda") # 定義一個 CUDA 設(shè)備對象y = torch.ones_like(x, device=device) # 顯示創(chuàng)建在 GPU 上的一個 tensorx = x.to(device) # 也可以采用 .to("cuda") z = x + yprint(z)print(z.to("cpu", torch.double)) # .to() 方法也可以改變數(shù)值類型 tensor([0.2672], device='cuda:0') tensor([0.2672], dtype=torch.float64)

    輸出結(jié)果,第一個結(jié)果就是在 GPU 上的結(jié)果,打印變量的時候會帶有 device=‘cuda:0’,而第二個是在 CPU 上的變量。

    本小節(jié)教程:

    https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html

    本小節(jié)的代碼:

    https://github.com/ccc013/DeepLearning_Notes/blob/master/Pytorch/practise/basic_practise.ipynb

    2. autograd

    對于 Pytorch 的神經(jīng)網(wǎng)絡(luò)來說,非常關(guān)鍵的一個庫就是 autograd ,它主要是提供了對 Tensors 上所有運算操作的自動微分功能,也就是計算梯度的功能。它屬于 define-by-run 類型框架,即反向傳播操作的定義是根據(jù)代碼的運行方式,因此每次迭代都可以是不同的。

    接下來會簡單介紹一些例子來說明這個庫的作用。

    2.1 張量

    torch.Tensor 是 Pytorch 最主要的庫,當(dāng)設(shè)置它的屬性 .requires_grad=True,那么就會開始追蹤在該變量上的所有操作,而完成計算后,可以調(diào)用 .backward() 并自動計算所有的梯度,得到的梯度都保存在屬性 .grad 中。

    調(diào)用 .detach() 方法分離出計算的歷史,可以停止一個 tensor 變量繼續(xù)追蹤其歷史信息 ,同時也防止未來的計算會被追蹤。

    而如果是希望防止跟蹤歷史(以及使用內(nèi)存),可以將代碼塊放在 with torch.no_grad(): 內(nèi),這個做法在使用一個模型進行評估的時候非常有用,因為模型會包含一些帶有 requires_grad=True 的訓(xùn)練參數(shù),但實際上并不需要它們的梯度信息。

    對于 autograd 的實現(xiàn),還有一個類也是非常重要-- Function 。

    Tensor 和 Function 兩個類是有關(guān)聯(lián)并建立了一個非循環(huán)的圖,可以編碼一個完整的計算記錄。每個 tensor 變量都帶有屬性 .grad_fn ,該屬性引用了創(chuàng)建了這個變量的 Function (除了由用戶創(chuàng)建的 Tensors,它們的 grad_fn=None )。

    如果要進行求導(dǎo)運算,可以調(diào)用一個 Tensor 變量的方法 .backward() 。如果該變量是一個標量,即僅有一個元素,那么不需要傳遞任何參數(shù)給方法 .backward(),當(dāng)包含多個元素的時候,就必須指定一個 gradient 參數(shù),表示匹配尺寸大小的 tensor,這部分見第二小節(jié)介紹梯度的內(nèi)容。

    接下來就開始用代碼來進一步介紹。

    首先導(dǎo)入必須的庫:

    import torch

    開始創(chuàng)建一個 tensor, 并讓 requires_grad=True 來追蹤該變量相關(guān)的計算操作:

    x = torch.ones(2, 2, requires_grad=True) print(x) tensor([[1., 1.],[1., 1.]], requires_grad=True)

    執(zhí)行任意計算操作,這里進行簡單的加法運算:

    y = x + 2 print(y) tensor([[3., 3.],[3., 3.]], grad_fn=<AddBackward0>)

    y 是一個操作的結(jié)果,所以它帶有屬性 grad_fn:

    print(y.grad_fn) <AddBackward0 object at 0x000001B088735550>

    繼續(xù)對變量 y 進行操作:

    z = y * y * 3 out = z.mean()print('z=', z) print('out=', out) z= tensor([[27., 27.],[27., 27.]], grad_fn=<MulBackward0>) out= tensor(27., grad_fn=<MeanBackward0>)

    實際上,一個 Tensor 變量的默認 requires_grad 是 False ,可以像上述定義一個變量時候指定該屬性是 True,當(dāng)然也可以定義變量后,調(diào)用 .requires_grad_(True) 設(shè)置為 True ,這里帶有后綴_ 是會改變變量本身的屬性,在上一節(jié)介紹加法操作 add_() 說明過,下面是一個代碼例子:

    #randn函數(shù)會因為樣本太少而產(chǎn)生較大誤差(均值不為0,方差不為1)!! a = torch.randn(2, 2) a = ((a * 3) / (a - 1)) #如果有一個單一的輸入操作需要梯度,它的輸出也需要梯度。相反,只有所有輸入都不需要梯度,輸出才不需要。 print(a.requires_grad) a.requires_grad_(True) print(a.requires_grad) b = (a * a).sum() print(b.grad_fn) False True <SumBackward0 object at 0x000001B0887350B8>

    第一行是為設(shè)置 requires_grad 的結(jié)果,接著顯示調(diào)用 .requires_grad_(True),輸出結(jié)果就是 True 。

    2.2 梯度

    接下來就是開始計算梯度,進行反向傳播的操作。out 變量是上一小節(jié)中定義的,它是一個標量,因此 out.backward() 相當(dāng)于 out.backward(torch.tensor(1.)) ,代碼如下:

    out.backward() # 輸出梯度 d(out)/dx print(x.grad) tensor([[4.5000, 4.5000],[4.5000, 4.5000]])

    結(jié)果應(yīng)該就是得到數(shù)值都是 4.5 的矩陣。這里我們用 o 表示 out 變量,那么根據(jù)之前的定義會有:

    o=14∑izio = \frac{1}{4}\sum_iz_io=41?i?zi?
    zi=3(xi+2)2z_i = 3(x_i+2)^2zi?=3(xi?+2)2
    zi∣xi=1=27z_i\mid_{x_i=1}=27zi?xi?=1?=27

    詳細來說,初始定義的 x 是一個全為 1 的矩陣,然后加法操作 x+2 得到 y ,接著 y*y*3, 得到 z ,并且此時 z 是一個 2*2 的矩陣,所以整體求平均得到 out 變量應(yīng)該是除以 4,所以得到上述三條公式。

    因此,計算梯度:

    ?o?xi=32(xi+2)\frac{\partial o}{\partial x_i}=\frac{3}{2}(x_i+2)?xi??o?=23?(xi?+2)
    ?o?xi∣xi=1=92=4.5\frac{\partial o}{\partial x_i}\mid_{x_i=1}=\frac{9}{2}=4.5?xi??o?xi?=1?=29?=4.5

    從數(shù)學(xué)上來說,如果你有一個向量值函數(shù):

    y?=f(x?)\vec y=f(\vec x)y?=f(x)

    那么對應(yīng)的梯度是一個雅克比矩陣(Jacobian matrix):

    一般來說,torch.autograd 就是用于計算雅克比向量(vector-Jacobian)乘積的工具。這里略過數(shù)學(xué)公式,直接上代碼例子介紹:

    x = torch.randn(3, requires_grad=True)y = x * 2 while y.data.norm() < 1000: #沒太看懂y = y * 2print(y)

    輸出結(jié)果:

    tensor([ 237.5009, 1774.2396, 274.0625], grad_fn=<MulBackwardMulBackwardMulBackward>)

    這里得到的變量 y 不再是一個標量,torch.autograd 不能直接計算完整的雅克比行列式,但我們可以通過簡單的傳遞向量給 backward() 方法作為參數(shù)得到雅克比向量的乘積,例子如下所示:

    v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float) y.backward(v)print(x.grad)

    輸出結(jié)果:

    tensor([ 102.4000, 1024.0000, 0.1024])
    最后,加上 with torch.no_grad() 就可以停止追蹤變量歷史進行自動梯度計算:

    print(x.requires_grad) print((x ** 2).requires_grad)with torch.no_grad():print((x ** 2).requires_grad)

    輸出結(jié)果:

    True

    True

    False
    更多有關(guān) autograd 和 Function 的介紹:

    https://pytorch.org/docs/autograd

    本小節(jié)教程:

    https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html

    本小節(jié)的代碼:

    https://github.com/ccc013/DeepLearning_Notes/blob/master/Pytorch/practise/autograd.ipynb

    3. 神經(jīng)網(wǎng)絡(luò)

    在 PyTorch 中 torch.nn 專門用于實現(xiàn)神經(jīng)網(wǎng)絡(luò)。其中 nn.Module 包含了網(wǎng)絡(luò)層的搭建,以及一個方法-- forward(input) ,并返回網(wǎng)絡(luò)的輸出 outptu .

    下面是一個經(jīng)典的 LeNet 網(wǎng)絡(luò),用于對字符進行分類。


    對于神經(jīng)網(wǎng)絡(luò)來說,一個標準的訓(xùn)練流程是這樣的:

    1.定義一個多層的神經(jīng)網(wǎng)絡(luò)
    2.對數(shù)據(jù)集的預(yù)處理并準備作為網(wǎng)絡(luò)的輸入
    3.將數(shù)據(jù)輸入到網(wǎng)絡(luò)
    4.計算網(wǎng)絡(luò)的損失
    5.反向傳播,計算梯度
    6.更新網(wǎng)絡(luò)的梯度,一個簡單的更新規(guī)則是 weight = weight - learning_rate * gradient

    3.1 定義網(wǎng)絡(luò)

    首先定義一個神經(jīng)網(wǎng)絡(luò),下面是一個 5 層的卷積神經(jīng)網(wǎng)絡(luò),包含兩層卷積層和三層全連接層:

    import torch import torch.nn as nn import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net, self).__init__()# 輸入圖像是單通道,conv1 kenrnel size=5*5,輸出通道 6self.conv1 = nn.Conv2d(1, 6, 5)# conv2 kernel size=5*5, 輸出通道 16self.conv2 = nn.Conv2d(6, 16, 5)# 全連接層self.fc1 = nn.Linear(16*5*5, 120)self.fc2 = nn.Linear(120, 84)self.fc3 = nn.Linear(84, 10)def forward(self, x):# max-pooling 采用一個 (2,2) 的滑動窗口x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))# 核(kernel)大小是方形的話,可僅定義一個數(shù)字,如 (2,2) 用 2 即可x = F.max_pool2d(F.relu(self.conv2(x)), 2)x = x.view(-1, self.num_flat_features(x))x = F.relu(self.fc1(x))x = F.relu(self.fc2(x))x = self.fc3(x)return xdef num_flat_features(self, x):# 除了 batch 維度外的所有維度size = x.size()[1:]num_features = 1for s in size:num_features *= sreturn num_featuresnet = Net() print(net) Net((conv1): Conv2d(1, 6, kernel_size=(5, 5), stride=(1, 1))(conv2): Conv2d(6, 16, kernel_size=(5, 5), stride=(1, 1))(fc1): Linear(in_features=400, out_features=120, bias=True)(fc2): Linear(in_features=120, out_features=84, bias=True)(fc3): Linear(in_features=84, out_features=10, bias=True) )

    這里必須實現(xiàn) forward 函數(shù),而 backward 函數(shù)在采用 autograd 時就自動定義好了,在 forward 方法可以采用任何的張量操作。

    net.parameters() 可以返回網(wǎng)絡(luò)的訓(xùn)練參數(shù),使用例子如下:

    params = list(net.parameters()) print('參數(shù)數(shù)量: ', len(params)) # conv1.weight print('第一個參數(shù)大小: ', params[0].size()) 參數(shù)數(shù)量: 10 第一個參數(shù)大小: torch.Size([6, 1, 5, 5])

    然后簡單測試下這個網(wǎng)絡(luò),隨機生成一個 32*32 的輸入:

    # 隨機定義一個變量輸入網(wǎng)絡(luò) input = torch.randn(1, 1, 32, 32) out = net(input) print(out) tensor([[ 0.0527, 0.0785, -0.0961, -0.0425, 0.0973, 0.1605, -0.0440, -0.0142,0.0985, -0.0596]], grad_fn=<AddmmBackward>)

    接著反向傳播需要先清空梯度緩存,并反向傳播隨機梯度:

    # 清空所有參數(shù)的梯度緩存,然后計算隨機梯度進行反向傳播 net.zero_grad() out.backward(torch.randn(1, 10))

    注意:

    torch.nn 只支持小批量(mini-batches)數(shù)據(jù),也就是輸入不能是單個樣本,比如對于 nn.Conv2d 接收的輸入是一個 4 維張量–nSamples * nChannels * Height * Width 。
    所以,如果你輸入的是單個樣本,需要采用 input.unsqueeze(0) 來擴充一個假的 batch 維度,即從 3 維變?yōu)?4 維。

    3.2 損失函數(shù)

    損失函數(shù)的輸入是 (output, target) ,即網(wǎng)絡(luò)輸出和真實標簽對的數(shù)據(jù),然后返回一個數(shù)值表示網(wǎng)絡(luò)輸出和真實標簽的差距。

    PyTorch 中其實已經(jīng)定義了不少的損失函數(shù),這里僅采用簡單的均方誤差:nn.MSELoss ,例子如下:

    output = net(input) # 定義偽標簽 target = torch.randn(10) # 調(diào)整大小,使得和 output 一樣的 size target = target.view(1, -1) criterion = nn.MSELoss()loss = criterion(output, target) print(loss) tensor(0.7520, grad_fn=<MseLossBackward>)

    這里,整個網(wǎng)絡(luò)的數(shù)據(jù)輸入到輸出經(jīng)歷的計算圖如下所示,其實也就是數(shù)據(jù)從輸入層到輸出層,計算 loss 的過程。

    input -> conv2d -> relu -> maxpool2d -> conv2d -> relu -> maxpool2d

    -> view -> linear -> relu -> linear -> relu -> linear-> MSELoss-> loss

    如果調(diào)用 loss.backward() ,那么整個圖都是可微分的,也就是說包括 loss ,圖中的所有張量變量,只要其屬性 requires_grad=True ,那么其梯度 .grad張量都會隨著梯度一直累計。

    用代碼來說明:

    # MSELoss print(loss.grad_fn) # Linear layer print(loss.grad_fn.next_functions[0][0]) # Relu print(loss.grad_fn.next_functions[0][0].next_functions[0][0]) <MseLossBackward object at 0x000002830E0584A8> <AddmmBackward object at 0x000002830E058CF8> <AccumulateGrad object at 0x000002830E0584A8>

    3.3 反向傳播

    反向傳播的實現(xiàn)只需要調(diào)用 loss.backward() 即可,當(dāng)然首先需要清空當(dāng)前梯度緩存,即.zero_grad() 方法,否則之前的梯度會累加到當(dāng)前的梯度,這樣會影響權(quán)值參數(shù)的更新。

    下面是一個簡單的例子,以 conv1 層的偏置參數(shù) bias 在反向傳播前后的結(jié)果為例:

    # 清空所有參數(shù)的梯度緩存 net.zero_grad() print('conv1.bias.grad before backward') print(net.conv1.bias.grad)loss.backward()print('conv1.bias.grad after backward') print(net.conv1.bias.grad) conv1.bias.grad before backward tensor([0., 0., 0., 0., 0., 0.]) conv1.bias.grad after backward tensor([ 0.0127, -0.0079, -0.0007, 0.0046, 0.0076, -0.0117])

    了解更多有關(guān) torch.nn 庫,可以查看官方文檔:

    https://pytorch.org/docs/stable/nn.html

    3.4 更新權(quán)重

    采用隨機梯度下降(Stochastic Gradient Descent, SGD)方法的最簡單的更新權(quán)重規(guī)則如下:

    weight = weight - learning_rate * gradient

    按照這個規(guī)則,代碼實現(xiàn)如下所示:

    # 簡單實現(xiàn)權(quán)重的更新例子 learning_rate = 0.01 for f in net.parameters():f.data.sub_(f.grad.data * learning_rate)

    但是這只是最簡單的規(guī)則,深度學(xué)習(xí)有很多的優(yōu)化算法,不僅僅是 SGD,還有 Nesterov-SGD, Adam, RMSProp 等等,為了采用這些不同的方法,這里采用 torch.optim 庫,使用例子如下所示:

    import torch.optim as optim # 創(chuàng)建優(yōu)化器 optimizer = optim.SGD(net.parameters(), lr=0.01)# 在訓(xùn)練過程中執(zhí)行下列操作 optimizer.zero_grad() # 清空梯度緩存 output = net(input) loss = criterion(output, target) loss.backward() # 更新權(quán)重 optimizer.step()

    注意,同樣需要調(diào)用 optimizer.zero_grad() 方法清空梯度緩存。

    本小節(jié)教程:

    https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html

    本小節(jié)的代碼:

    https://github.com/ccc013/DeepLearning_Notes/blob/master/Pytorch/practise/neural_network.ipynb

    4. 訓(xùn)練分類器

    上一節(jié)介紹了如何構(gòu)建神經(jīng)網(wǎng)絡(luò)、計算 loss 和更新網(wǎng)絡(luò)的權(quán)值參數(shù),接下來需要做的就是實現(xiàn)一個圖片分類器。

    4.1 訓(xùn)練數(shù)據(jù)

    在訓(xùn)練分類器前,當(dāng)然需要考慮數(shù)據(jù)的問題。通常在處理如圖片、文本、語音或者視頻數(shù)據(jù)的時候,一般都采用標準的 Python 庫將其加載并轉(zhuǎn)成 Numpy 數(shù)組,然后再轉(zhuǎn)回為 PyTorch 的張量。

    ·對于圖像,可以采用 Pillow, OpenCV 庫;

    ·對于語音,有 scipy 和 librosa;

    ·對于文本,可以選擇原生 Python 或者 Cython 進行加載數(shù)據(jù),或者使用 NLTK 和 SpaCy 。

    PyTorch 對于計算機視覺,特別創(chuàng)建了一個 torchvision 的庫,它包含一個數(shù)據(jù)加載器(data loader),可以加載比較常見的數(shù)據(jù)集,比如 Imagenet, CIFAR10, MNIST 等等,然后還有一個用于圖像的數(shù)據(jù)轉(zhuǎn)換器(data transformers),調(diào)用的庫是 torchvision.datasets 和 torch.utils.data.DataLoader 。

    在本教程中,將采用 CIFAR10 數(shù)據(jù)集,它包含 10 個類別,分別是飛機、汽車、鳥、貓、鹿、狗、青蛙、馬、船和卡車。數(shù)據(jù)集中的圖片都是 3x32x32。一些例子如下所示:

    4.2 訓(xùn)練圖片分類器

    訓(xùn)練流程如下:

    1.通過調(diào)用 torchvision 加載和歸一化 CIFAR10 訓(xùn)練集和測試集;

    2.構(gòu)建一個卷積神經(jīng)網(wǎng)絡(luò);

    3.定義一個損失函數(shù);

    4.在訓(xùn)練集上訓(xùn)練網(wǎng)絡(luò);

    5.在測試集上測試網(wǎng)絡(luò)性能。

    4.2.1 加載和歸一化 CIFAR10

    首先導(dǎo)入必須的包:

    import torch import torchvision import torchvision.transforms as transforms

    torchvision 的數(shù)據(jù)集輸出的圖片都是 PILImage ,即取值范圍是 [0, 1] ,這里需要做一個轉(zhuǎn)換,變成取值范圍是 [-1, 1] , 代碼如下所示:

    # 將圖片數(shù)據(jù)從 [0,1] 歸一化為 [-1, 1] 的取值范圍 transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])trainset = torchvision.datasets.CIFAR10(root='./data', train=True,download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,shuffle=True, num_workers=2)testset = torchvision.datasets.CIFAR10(root='./data', train=False,download=True, transform=transform) testloader = torch.utils.data.DataLoader(testset, batch_size=4,shuffle=False, num_workers=2)classes = ('plane', 'car', 'bird', 'cat','deer', 'dog', 'frog', 'horse', 'ship', 'truck') Files already downloaded and verified Files already downloaded and verified

    這里下載好數(shù)據(jù)后,可以可視化部分訓(xùn)練圖片,代碼如下:

    import matplotlib.pyplot as plt import numpy as np# 展示圖片的函數(shù) def imshow(img):img = img / 2 + 0.5 # 非歸一化npimg = img.numpy()plt.imshow(np.transpose(npimg, (1, 2, 0)))plt.show()# 隨機獲取訓(xùn)練集圖片 dataiter = iter(trainloader) images, labels = dataiter.next()# 展示圖片 imshow(torchvision.utils.make_grid(images)) # 打印圖片類別標簽 print(' '.join('%5s' % classes[labels[j]] for j in range(4)))

    [外鏈圖片轉(zhuǎn)存失敗(img-S87eezU5-1568535314521)(output_38_0.png)]

    truck cat plane horse

    展示圖片如下所示:

    其類別標簽為:

    frog plane dog ship

    4.2.2 構(gòu)建一個卷積神經(jīng)網(wǎng)絡(luò)

    這部分內(nèi)容其實直接采用上一節(jié)定義的網(wǎng)絡(luò)即可,除了修改 conv1 的輸入通道,從 1 變?yōu)?3,因為這次接收的是 3 通道的彩色圖片。

    import torch.nn as nn import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net, self).__init__()self.conv1 = nn.Conv2d(3, 6, 5)self.pool = nn.MaxPool2d(2, 2)self.conv2 = nn.Conv2d(6, 16, 5)self.fc1 = nn.Linear(16 * 5 * 5, 120)self.fc2 = nn.Linear(120, 84)self.fc3 = nn.Linear(84, 10)def forward(self, x):x = self.pool(F.relu(self.conv1(x)))x = self.pool(F.relu(self.conv2(x)))x = x.view(-1, 16 * 5 * 5)x = F.relu(self.fc1(x))x = F.relu(self.fc2(x))x = self.fc3(x)return xnet = Net()

    4.2.3 定義損失函數(shù)和優(yōu)化器

    這里采用類別交叉熵函數(shù)和帶有動量的 SGD 優(yōu)化方法:

    import torch.optim as optimcriterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

    4.2.4 訓(xùn)練網(wǎng)絡(luò)

    第四步自然就是開始訓(xùn)練網(wǎng)絡(luò),指定需要迭代的 epoch,然后輸入數(shù)據(jù),指定次數(shù)打印當(dāng)前網(wǎng)絡(luò)的信息,比如 loss 或者準確率等性能評價標準。

    import time start = time.time() for epoch in range(2):running_loss = 0.0for i, data in enumerate(trainloader, 0):# 獲取輸入數(shù)據(jù)inputs, labels = data# 清空梯度緩存optimizer.zero_grad()outputs = net(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()# 打印統(tǒng)計信息running_loss += loss.item()if i % 2000 == 1999:# 每 2000 次迭代打印一次信息print('[%d, %5d] loss: %.3f' % (epoch + 1, i+1, running_loss / 2000))running_loss = 0.0 print('Finished Training! Total cost time in CPU: ', time.time()-start) [1, 2000] loss: 2.260 [1, 4000] loss: 1.915 [1, 6000] loss: 1.706 [1, 8000] loss: 1.565 [1, 10000] loss: 1.529 [1, 12000] loss: 1.451 [2, 2000] loss: 1.395 [2, 4000] loss: 1.378 [2, 6000] loss: 1.342 [2, 8000] loss: 1.314 [2, 10000] loss: 1.321 [2, 12000] loss: 1.272 Finished Training! Total cost time in CPU: 92.60148167610168

    這里定義訓(xùn)練總共 2 個 epoch,訓(xùn)練信息如下,大概耗時為 92s。

    4.2.5 測試模型性能

    訓(xùn)練好一個網(wǎng)絡(luò)模型后,就需要用測試集進行測試,檢驗網(wǎng)絡(luò)模型的泛化能力。對于圖像分類任務(wù)來說,一般就是用準確率作為評價標準。

    首先,我們先用一個 batch 的圖片進行小小測試,這里 batch=4 ,也就是 4 張圖片,代碼如下:

    dataiter = iter(testloader) images, labels = dataiter.next()# 打印圖片 imshow(torchvision.utils.make_grid(images)) print('GroundTruth: ', ' '.join('%5s' % classes[labels[j]] for j in range(4)))

    圖片和標簽分別如下所示:

    GroundTruth: cat ship ship plane

    然后用這四張圖片輸入網(wǎng)絡(luò),看看網(wǎng)絡(luò)的預(yù)測結(jié)果:

    # 網(wǎng)絡(luò)輸出 outputs = net(images)# 預(yù)測結(jié)果 _, predicted = torch.max(outputs, 1) print('Predicted: ', ' '.join('%5s' % classes[predicted[j]] for j in range(4))) Predicted: cat ship car ship

    前面三張圖片都預(yù)測正確了,第四張圖片錯誤預(yù)測飛機為船。

    接著,讓我們看看在整個測試集上的準確率可以達到多少吧!

    correct = 0 total = 0 with torch.no_grad():for data in testloader:images, labels = dataoutputs = net(images)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()print('Accuracy of the network on the 10000 test images: %d %%' % (100 * correct / total)) Accuracy of the network on the 10000 test images: 56 %

    這里可能準確率并不一定一樣,教程中的結(jié)果是 51% ,因為權(quán)重初始化問題,可能多少有些浮動,相比隨機猜測 10 個類別的準確率(即 10%),這個結(jié)果是不錯的,當(dāng)然實際上是非常不好,不過我們僅僅采用 5 層網(wǎng)絡(luò),而且僅僅作為教程的一個示例代碼。

    然后,還可以再進一步,查看每個類別的分類準確率,跟上述代碼有所不同的是,計算準確率部分是 c = (predicted == labels).squeeze(),這段代碼其實會根據(jù)預(yù)測和真實標簽是否相等,輸出 1 或者 0,表示真或者假,因此在計算當(dāng)前類別正確預(yù)測數(shù)量時候直接相加,預(yù)測正確自然就是加 1,錯誤就是加 0,也就是沒有變化。

    class_correct = list(0. for i in range(10)) class_total = list(0. for i in range(10)) with torch.no_grad():for data in testloader:images, labels = dataoutputs = net(images)_, predicted = torch.max(outputs, 1)c = (predicted == labels).squeeze()for i in range(4):label = labels[i]class_correct[label] += c[i].item()class_total[label] += 1for i in range(10):print('Accuracy of %5s : %2d %%' % (classes[i], 100 * class_correct[i] / class_total[i])) Accuracy of plane : 57 % Accuracy of car : 60 % Accuracy of bird : 40 % Accuracy of cat : 34 % Accuracy of deer : 38 % Accuracy of dog : 52 % Accuracy of frog : 70 % Accuracy of horse : 65 % Accuracy of ship : 77 % Accuracy of truck : 68 %

    4.3 在 GPU 上訓(xùn)練

    深度學(xué)習(xí)自然需要 GPU 來加快訓(xùn)練速度的。所以接下來介紹如果是在 GPU 上訓(xùn)練,應(yīng)該如何實現(xiàn)。

    首先,需要檢查是否有可用的 GPU 來訓(xùn)練,代碼如下:

    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") print(device) cuda:0

    輸出結(jié)果表明你的第一塊 GPU 顯卡或者唯一的 GPU 顯卡是空閑可用狀態(tài),否則會打印 cpu 。

    既然有可用的 GPU ,接下來就是在 GPU 上進行訓(xùn)練了,其中需要修改的代碼如下,分別是需要將網(wǎng)絡(luò)參數(shù)和數(shù)據(jù)都轉(zhuǎn)移到 GPU 上:

    net.to(device) inputs, labels = inputs.to(device), labels.to(device)

    修改后的訓(xùn)練部分代碼:

    import time # 在 GPU 上訓(xùn)練注意需要將網(wǎng)絡(luò)和數(shù)據(jù)放到 GPU 上 net.to(device) criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)start = time.time() for epoch in range(2):running_loss = 0.0for i, data in enumerate(trainloader, 0):# 獲取輸入數(shù)據(jù)inputs, labels = datainputs, labels = inputs.to(device), labels.to(device)# 清空梯度緩存optimizer.zero_grad()outputs = net(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()# 打印統(tǒng)計信息running_loss += loss.item()if i % 2000 == 1999:# 每 2000 次迭代打印一次信息print('[%d, %5d] loss: %.3f' % (epoch + 1, i+1, running_loss / 2000))running_loss = 0.0 print('Finished Training! Total cost time in GPU: ', time.time() - start) [1, 2000] loss: 1.220 [1, 4000] loss: 1.216 [1, 6000] loss: 1.198 [1, 8000] loss: 1.172 [1, 10000] loss: 1.181 [1, 12000] loss: 1.197 [2, 2000] loss: 1.113 [2, 4000] loss: 1.109 [2, 6000] loss: 1.099 [2, 8000] loss: 1.091 [2, 10000] loss: 1.122 [2, 12000] loss: 1.113 Finished Training! Total cost time in GPU: 135.38129496574402

    注意,這里調(diào)用 net.to(device) 后,需要定義下優(yōu)化器,即傳入的是 CUDA 張量的網(wǎng)絡(luò)參數(shù)。訓(xùn)練結(jié)果和之前的類似,而且其實因為這個網(wǎng)絡(luò)非常小,轉(zhuǎn)移到 GPU 上并不會有多大的速度提升,而且我的訓(xùn)練結(jié)果看來反而變慢了,也可能是因為我的筆記本的 GPU 顯卡問題。

    如果需要進一步提升速度,可以考慮采用多 GPUs,也就是下一節(jié)的內(nèi)容。

    本小節(jié)教程:

    https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html

    本小節(jié)的代碼:

    https://github.com/ccc013/DeepLearning_Notes/blob/master/Pytorch/practise/train_classifier_example.ipynb

    5. 數(shù)據(jù)并行

    這部分教程將學(xué)習(xí)如何使用 DataParallel 來使用多個 GPUs 訓(xùn)練網(wǎng)絡(luò)。

    首先,在 GPU 上訓(xùn)練模型的做法很簡單,如下代碼所示,定義一個 device 對象,然后用 .to() 方法將網(wǎng)絡(luò)模型參數(shù)放到指定的 GPU 上。

    這部分教程將學(xué)習(xí)如何使用 DataParallel 來使用多個 GPUs 訓(xùn)練網(wǎng)絡(luò)。

    首先,在 GPU 上訓(xùn)練模型的做法很簡單,如下代碼所示,定義一個 device 對象,然后用 .to() 方法將網(wǎng)絡(luò)模型參數(shù)放到指定的 GPU 上。

    device = torch.device(“cuda:0”)
    model.to(device)

    接著就是將所有的張量變量放到 GPU 上:

    mytensor = my_tensor.to(device)

    注意,這里 my_tensor.to(device) 是返回一個 my_tensor 的新的拷貝對象,而不是直接修改 my_tensor 變量,因此你需要將其賦值給一個新的張量,然后使用這個張量。

    Pytorch 默認只會采用一個 GPU,因此需要使用多個 GPU,需要采用 DataParallel ,代碼如下所示:

    model = nn.DataParallel(model)

    這代碼也就是本節(jié)教程的關(guān)鍵,接下來會繼續(xù)詳細介紹。

    5.1 導(dǎo)入和參數(shù)

    首先導(dǎo)入必須的庫以及定義一些參數(shù):

    import torch import torch.nn as nn from torch.utils.data import Dataset, DataLoader# Parameters and DataLoaders input_size = 5 output_size = 2batch_size = 30 data_size = 100device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

    這里主要定義網(wǎng)絡(luò)輸入大小和輸出大小,batch 以及圖片的大小,并定義了一個 device 對象。

    5.2 構(gòu)建一個假數(shù)據(jù)集

    接著就是構(gòu)建一個假的(隨機)數(shù)據(jù)集。實現(xiàn)代碼如下:

    class RandomDataset(Dataset):def __init__(self, size, length):self.len = lengthself.data = torch.randn(length, size)def __getitem__(self, index):return self.data[index]def __len__(self):return self.lenrand_loader = DataLoader(dataset=RandomDataset(input_size, data_size),batch_size=batch_size, shuffle=True)

    5.3 簡單的模型

    接下來構(gòu)建一個簡單的網(wǎng)絡(luò)模型,僅僅包含一層全連接層的神經(jīng)網(wǎng)絡(luò),加入 print() 函數(shù)用于監(jiān)控網(wǎng)絡(luò)輸入和輸出 tensors 的大小:

    class Model(nn.Module):# Our modeldef __init__(self, input_size, output_size):super(Model, self).__init__()self.fc = nn.Linear(input_size, output_size)def forward(self, input):output = self.fc(input)print("\tIn Model: input size", input.size(),"output size", output.size())return output

    5.4 創(chuàng)建模型和數(shù)據(jù)平行

    這是本節(jié)的核心部分。首先需要定義一個模型實例,并且檢查是否擁有多個 GPUs,如果是就可以將模型包裹在 nn.DataParallel ,并調(diào)用 model.to(device) 。代碼如下:

    model = Model(input_size, output_size) if torch.cuda.device_count() > 1:print("Let's use", torch.cuda.device_count(), "GPUs!")# dim = 0 [30, xxx] -> [10, ...], [10, ...], [10, ...] on 3 GPUsmodel = nn.DataParallel(model)model.to(device) Model((fc): Linear(in_features=5, out_features=2, bias=True) )

    5.5 運行模型

    接著就可以運行模型,看看打印的信息:

    for data in rand_loader:input = data.to(device)output = model(input)print("Outside: input size", input.size(),"output_size", output.size()) In Model: input size torch.Size([30, 5]) output size torch.Size([30, 2]) Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])In Model: input size torch.Size([30, 5]) output size torch.Size([30, 2]) Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])In Model: input size torch.Size([30, 5]) output size torch.Size([30, 2]) Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])In Model: input size torch.Size([10, 5]) output size torch.Size([10, 2]) Outside: input size torch.Size([10, 5]) output_size torch.Size([10, 2])

    5.6 運行結(jié)果

    如果僅僅只有 1 個或者沒有 GPU ,那么 batch=30 的時候,模型會得到輸入輸出的大小都是 30。但如果有多個 GPUs,那么結(jié)果如下:

    2 GPUs

    # on 2 GPUs
    Let’s use 2 GPUs!
    In Model: input size torch.Size([15, 5]) output size torch.Size([15, 2])
    In Model: input size torch.Size([15, 5]) output size torch.Size([15, 2])
    Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])
    In Model: input size torch.Size([15, 5]) output size torch.Size([15, 2])
    In Model: input size torch.Size([15, 5]) output size torch.Size([15, 2])
    Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])
    In Model: input size torch.Size([15, 5]) output size torch.Size([15, 2])
    In Model: input size torch.Size([15, 5]) output size torch.Size([15, 2])
    Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])
    In Model: input size torch.Size([5, 5]) output size torch.Size([5, 2])
    In Model: input size torch.Size([5, 5]) output size torch.Size([5, 2])
    Outside: input size torch.Size([10, 5]) output_size torch.Size([10, 2])

    3 GPUs

    Let’s use 3 GPUs!
    In Model: input size torch.Size([10, 5]) output size torch.Size([10, 2])
    In Model: input size torch.Size([10, 5]) output size torch.Size([10, 2])
    In Model: input size torch.Size([10, 5]) output size torch.Size([10, 2])
    Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])
    In Model: input size torch.Size([10, 5]) output size torch.Size([10, 2])
    In Model: input size torch.Size([10, 5]) output size torch.Size([10, 2])
    In Model: input size torch.Size([10, 5]) output size torch.Size([10, 2])
    Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])
    In Model: input size torch.Size([10, 5]) output size torch.Size([10, 2])
    In Model: input size torch.Size([10, 5]) output size torch.Size([10, 2])
    In Model: input size torch.Size([10, 5]) output size torch.Size([10, 2])
    Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([2, 5]) output size torch.Size([2, 2])
    Outside: input size torch.Size([10, 5]) output_size torch.Size([10, 2])

    8 GPUs

    Let’s use 8 GPUs!
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([2, 5]) output size torch.Size([2, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([2, 5]) output size torch.Size([2, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([4, 5]) output size torch.Size([4, 2])
    In Model: input size torch.Size([2, 5]) output size torch.Size([2, 2])
    Outside: input size torch.Size([30, 5]) output_size torch.Size([30, 2])
    In Model: input size torch.Size([2, 5]) output size torch.Size([2, 2])
    In Model: input size torch.Size([2, 5]) output size torch.Size([2, 2])
    In Model: input size torch.Size([2, 5]) output size torch.Size([2, 2])
    In Model: input size torch.Size([2, 5]) output size torch.Size([2, 2])
    In Model: input size torch.Size([2, 5]) output size torch.Size([2, 2])
    Outside: input size torch.Size([10, 5]) output_size torch.Size([10, 2])

    5.7 總結(jié)

    DataParallel 會自動分割數(shù)據(jù)集并發(fā)送任務(wù)給多個 GPUs 上的多個模型。然后等待每個模型都完成各自的工作后,它又會收集并融合結(jié)果,然后返回。

    更詳細的數(shù)據(jù)并行教程:

    https://pytorch.org/tutorials/beginner/former_torchies/parallelism_tutorial.html

    本小節(jié)教程:

    https://pytorch.org/tutorials/beginner/blitz/data_parallel_tutorial.html

    總結(jié)

    以上是生活随笔為你收集整理的60分钟入门pytorch的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    亚洲色www成人永久网址 | 久久zyz资源站无码中文动漫 | 久久精品无码一区二区三区 | 少妇被粗大的猛进出69影院 | 无码人妻黑人中文字幕 | 国产亚洲精品久久久久久久久动漫 | 亚洲人成无码网www | 色五月丁香五月综合五月 | 欧美黑人巨大xxxxx | 成人欧美一区二区三区 | 亚洲国产欧美国产综合一区 | 岛国片人妻三上悠亚 | 日日天干夜夜狠狠爱 | 伊人久久大香线蕉午夜 | a国产一区二区免费入口 | 欧美日韩一区二区综合 | 给我免费的视频在线观看 | 国产区女主播在线观看 | 亚洲一区二区三区香蕉 | 国产手机在线αⅴ片无码观看 | 成人无码视频在线观看网站 | 国产乱码精品一品二品 | 扒开双腿疯狂进出爽爽爽视频 | 国产精品久久久久久无码 | 欧美性生交活xxxxxdddd | 午夜福利一区二区三区在线观看 | 国产无av码在线观看 | 国产亚洲精品久久久ai换 | 18禁止看的免费污网站 | 国产成人无码a区在线观看视频app | 无码人妻久久一区二区三区不卡 | 国产精品久久久午夜夜伦鲁鲁 | 一本无码人妻在中文字幕免费 | 欧美乱妇无乱码大黄a片 | 亚洲色无码一区二区三区 | av香港经典三级级 在线 | 国产精品亚洲lv粉色 | 精品无人区无码乱码毛片国产 | 亚洲精品无码人妻无码 | 成人精品天堂一区二区三区 | 日本护士xxxxhd少妇 | 啦啦啦www在线观看免费视频 | 人妻少妇精品无码专区二区 | 无码吃奶揉捏奶头高潮视频 | 久久天天躁狠狠躁夜夜免费观看 | 欧美日韩人成综合在线播放 | 国产在热线精品视频 | 国产综合色产在线精品 | 久久精品国产大片免费观看 | 四十如虎的丰满熟妇啪啪 | 国产乱人伦偷精品视频 | 97se亚洲精品一区 | 夜精品a片一区二区三区无码白浆 | 日日摸日日碰夜夜爽av | 成人精品视频一区二区三区尤物 | 美女极度色诱视频国产 | 久久久中文久久久无码 | 色婷婷综合激情综在线播放 | 人人澡人人妻人人爽人人蜜桃 | 国产精品va在线播放 | 一本久久伊人热热精品中文字幕 | 精品国产aⅴ无码一区二区 | 久久精品一区二区三区四区 | 亚洲精品久久久久中文第一幕 | 狠狠躁日日躁夜夜躁2020 | 成人亚洲精品久久久久软件 | 久久亚洲a片com人成 | 无码帝国www无码专区色综合 | 国产精品-区区久久久狼 | 亚洲精品一区二区三区在线 | 波多野结衣一区二区三区av免费 | 又大又硬又黄的免费视频 | 九月婷婷人人澡人人添人人爽 | 99久久无码一区人妻 | 2020久久超碰国产精品最新 | 一区二区三区高清视频一 | 日本熟妇乱子伦xxxx | 国产人妻精品午夜福利免费 | 日本大乳高潮视频在线观看 | 国产婷婷色一区二区三区在线 | 日韩人妻无码中文字幕视频 | 亚洲爆乳无码专区 | 免费看男女做好爽好硬视频 | 精品乱码久久久久久久 | 久久精品99久久香蕉国产色戒 | 无码国产乱人伦偷精品视频 | 中文无码成人免费视频在线观看 | 激情内射亚州一区二区三区爱妻 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲欧洲日本综合aⅴ在线 | 男人的天堂2018无码 | 中文字幕av伊人av无码av | 国产无遮挡吃胸膜奶免费看 | 啦啦啦www在线观看免费视频 | 亚洲欧美精品aaaaaa片 | 中文字幕无码av波多野吉衣 | 四虎国产精品一区二区 | 少妇愉情理伦片bd | 色欲久久久天天天综合网精品 | 国产麻豆精品精东影业av网站 | 亚洲熟妇色xxxxx亚洲 | 99久久亚洲精品无码毛片 | 人妻互换免费中文字幕 | 欧美丰满熟妇xxxx性ppx人交 | 呦交小u女精品视频 | 在线a亚洲视频播放在线观看 | 中文无码精品a∨在线观看不卡 | 国产又爽又黄又刺激的视频 | 欧美人与善在线com | 漂亮人妻洗澡被公强 日日躁 | 久久综合久久自在自线精品自 | 日韩欧美中文字幕公布 | 人妻熟女一区 | 国产精品嫩草久久久久 | 欧美日韩亚洲国产精品 | 中文字幕中文有码在线 | 欧美怡红院免费全部视频 | 日本精品久久久久中文字幕 | 欧洲欧美人成视频在线 | 久久99精品国产麻豆蜜芽 | 国产三级久久久精品麻豆三级 | 亚洲第一网站男人都懂 | 日韩精品a片一区二区三区妖精 | 亚洲 a v无 码免 费 成 人 a v | 国产精品-区区久久久狼 | 99久久人妻精品免费一区 | 欧美丰满熟妇xxxx | 99国产精品白浆在线观看免费 | 男女下面进入的视频免费午夜 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲 另类 在线 欧美 制服 | 亚洲成av人综合在线观看 | 国语精品一区二区三区 | 国产日产欧产精品精品app | 黄网在线观看免费网站 | 久久久久人妻一区精品色欧美 | 一二三四在线观看免费视频 | 国产艳妇av在线观看果冻传媒 | 正在播放老肥熟妇露脸 | 亚洲精品一区二区三区婷婷月 | 伊在人天堂亚洲香蕉精品区 | 日本大香伊一区二区三区 | 欧美性猛交内射兽交老熟妇 | 福利一区二区三区视频在线观看 | 国产精品内射视频免费 | 日韩欧美群交p片內射中文 | 丰满少妇人妻久久久久久 | 性做久久久久久久久 | yw尤物av无码国产在线观看 | 激情爆乳一区二区三区 | 中文字幕av无码一区二区三区电影 | 亚洲一区二区三区在线观看网站 | 人妻天天爽夜夜爽一区二区 | av无码电影一区二区三区 | 亚洲中文字幕成人无码 | 牲欲强的熟妇农村老妇女 | 欧美日本精品一区二区三区 | 特黄特色大片免费播放器图片 | 曰本女人与公拘交酡免费视频 | 大乳丰满人妻中文字幕日本 | 国产亚洲精品久久久ai换 | 女人被爽到呻吟gif动态图视看 | 欧美阿v高清资源不卡在线播放 | 无码播放一区二区三区 | 欧美成人高清在线播放 | a片在线免费观看 | 美女张开腿让人桶 | 亚洲精品一区二区三区在线观看 | 中文字幕无码av激情不卡 | 免费人成在线观看网站 | 亚洲人成影院在线观看 | 精品一二三区久久aaa片 | 永久免费精品精品永久-夜色 | 亚洲成av人在线观看网址 | 夜夜影院未满十八勿进 | 国产麻豆精品精东影业av网站 | 国产情侣作爱视频免费观看 | 亚洲国产av美女网站 | 色综合久久中文娱乐网 | 无码人妻精品一区二区三区下载 | 内射巨臀欧美在线视频 | 亚洲精品成a人在线观看 | 噜噜噜亚洲色成人网站 | av在线亚洲欧洲日产一区二区 | 亚洲中文字幕在线观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲va欧美va天堂v国产综合 | 亚洲乱码中文字幕在线 | 乱人伦人妻中文字幕无码久久网 | 日本欧美一区二区三区乱码 | 国产麻豆精品一区二区三区v视界 | 日韩精品a片一区二区三区妖精 | 欧美老妇与禽交 | 亚洲综合精品香蕉久久网 | 初尝人妻少妇中文字幕 | 99riav国产精品视频 | 久久97精品久久久久久久不卡 | 又大又黄又粗又爽的免费视频 | 无码纯肉视频在线观看 | 无套内谢的新婚少妇国语播放 | 天天躁日日躁狠狠躁免费麻豆 | 国产激情无码一区二区 | 国产午夜精品一区二区三区嫩草 | 天天爽夜夜爽夜夜爽 | 国产午夜亚洲精品不卡下载 | 奇米影视7777久久精品人人爽 | 欧美人与禽猛交狂配 | 丰满人妻被黑人猛烈进入 | 日本一区二区三区免费高清 | 国产超碰人人爽人人做人人添 | 一本大道伊人av久久综合 | 欧美人与物videos另类 | 欧美丰满熟妇xxxx性ppx人交 | yw尤物av无码国产在线观看 | 亚洲人交乣女bbw | 久久熟妇人妻午夜寂寞影院 | 日韩在线不卡免费视频一区 | 天天拍夜夜添久久精品 | 亚洲精品中文字幕久久久久 | 大肉大捧一进一出视频出来呀 | 乱码av麻豆丝袜熟女系列 | 午夜丰满少妇性开放视频 | 色综合久久久无码网中文 | 思思久久99热只有频精品66 | 人妻尝试又大又粗久久 | 无码国模国产在线观看 | 中文无码伦av中文字幕 | 亚洲乱码日产精品bd | 欧美 丝袜 自拍 制服 另类 | 亚洲成在人网站无码天堂 | 国产成人无码区免费内射一片色欲 | 夜夜高潮次次欢爽av女 | 中文字幕人妻无码一区二区三区 | 99久久久无码国产aaa精品 | 精品无码成人片一区二区98 | 色婷婷欧美在线播放内射 | 亚洲国产精品美女久久久久 | 又大又紧又粉嫩18p少妇 | 98国产精品综合一区二区三区 | 国产高清不卡无码视频 | 日韩精品成人一区二区三区 | 亚洲综合无码久久精品综合 | 国产午夜无码精品免费看 | 久久久久人妻一区精品色欧美 | 国产精品无码mv在线观看 | 亚洲中文字幕久久无码 | 99久久婷婷国产综合精品青草免费 | 亚洲精品一区二区三区四区五区 | 无码人妻少妇伦在线电影 | 久久久国产一区二区三区 | 日产精品99久久久久久 | 日日摸夜夜摸狠狠摸婷婷 | 一本大道久久东京热无码av | 久久久久久国产精品无码下载 | 99视频精品全部免费免费观看 | 欧美熟妇另类久久久久久多毛 | 97久久超碰中文字幕 | 国产又爽又黄又刺激的视频 | 久久精品国产一区二区三区肥胖 | 免费观看黄网站 | 美女极度色诱视频国产 | 人人澡人摸人人添 | 最新国产乱人伦偷精品免费网站 | 中文字幕无码人妻少妇免费 | 76少妇精品导航 | 久在线观看福利视频 | 日本精品人妻无码免费大全 | 理论片87福利理论电影 | 国产精品久久久午夜夜伦鲁鲁 | 无码av岛国片在线播放 | 亚拍精品一区二区三区探花 | 老熟妇乱子伦牲交视频 | 久久综合网欧美色妞网 | 俺去俺来也在线www色官网 | 大色综合色综合网站 | 欧美野外疯狂做受xxxx高潮 | 俄罗斯老熟妇色xxxx | 乱中年女人伦av三区 | 国产人成高清在线视频99最全资源 | 欧洲熟妇精品视频 | 波多野结衣高清一区二区三区 | 亚洲国产一区二区三区在线观看 | 色综合久久88色综合天天 | 人人澡人人妻人人爽人人蜜桃 | 免费中文字幕日韩欧美 | 人妻天天爽夜夜爽一区二区 | 国产精品二区一区二区aⅴ污介绍 | 无码任你躁久久久久久久 | 俺去俺来也在线www色官网 | 丰满人妻精品国产99aⅴ | 高潮喷水的毛片 | 娇妻被黑人粗大高潮白浆 | 扒开双腿吃奶呻吟做受视频 | 一本久道久久综合婷婷五月 | 51国偷自产一区二区三区 | 婷婷丁香五月天综合东京热 | 久久综合九色综合欧美狠狠 | 人妻互换免费中文字幕 | 亚欧洲精品在线视频免费观看 | 宝宝好涨水快流出来免费视频 | 久久久精品456亚洲影院 | 99精品国产综合久久久久五月天 | 国产午夜亚洲精品不卡下载 | 国产午夜无码精品免费看 | 宝宝好涨水快流出来免费视频 | 99riav国产精品视频 | 欧美日韩综合一区二区三区 | 丝袜美腿亚洲一区二区 | 亚洲精品久久久久中文第一幕 | 亚洲精品久久久久久久久久久 | 久久久久99精品国产片 | 亚洲中文字幕va福利 | 一本色道久久综合狠狠躁 | 欧美精品在线观看 | 国产成人午夜福利在线播放 | 一本色道久久综合亚洲精品不卡 | 少妇激情av一区二区 | 亚洲色大成网站www国产 | 九月婷婷人人澡人人添人人爽 | 欧美日韩亚洲国产精品 | 白嫩日本少妇做爰 | 2020久久超碰国产精品最新 | 亚洲人成人无码网www国产 | 伊人久久大香线焦av综合影院 | 99国产欧美久久久精品 | 三级4级全黄60分钟 | 中文字幕无码免费久久9一区9 | 人妻体内射精一区二区三四 | 欧美zoozzooz性欧美 | 97精品国产97久久久久久免费 | 麻花豆传媒剧国产免费mv在线 | 欧美高清在线精品一区 | 国产精品久久久久9999小说 | 欧美一区二区三区视频在线观看 | 少妇的肉体aa片免费 | 欧美人与牲动交xxxx | 狠狠色丁香久久婷婷综合五月 | 久久精品无码一区二区三区 | 国产麻豆精品一区二区三区v视界 | 国产激情一区二区三区 | 国产人妻精品一区二区三区 | 高清国产亚洲精品自在久久 | 欧美性生交活xxxxxdddd | 欧美乱妇无乱码大黄a片 | 国产明星裸体无码xxxx视频 | 无码av岛国片在线播放 | 免费观看又污又黄的网站 | 兔费看少妇性l交大片免费 | 国产精品国产三级国产专播 | 内射爽无广熟女亚洲 | 欧美大屁股xxxxhd黑色 | 亚洲欧美国产精品专区久久 | 动漫av网站免费观看 | 欧美丰满老熟妇xxxxx性 | 又黄又爽又色的视频 | 亚洲无人区午夜福利码高清完整版 | 日日橹狠狠爱欧美视频 | 成人aaa片一区国产精品 | 国产亚洲欧美日韩亚洲中文色 | аⅴ资源天堂资源库在线 | 天海翼激烈高潮到腰振不止 | 天堂亚洲2017在线观看 | 成人性做爰aaa片免费看 | 日本一区二区三区免费高清 | 精品国产乱码久久久久乱码 | 日本丰满护士爆乳xxxx | 色噜噜亚洲男人的天堂 | 三上悠亚人妻中文字幕在线 | 国产精品亚洲一区二区三区喷水 | 中文字幕无线码免费人妻 | 中文精品久久久久人妻不卡 | 天天做天天爱天天爽综合网 | 蜜臀aⅴ国产精品久久久国产老师 | aⅴ亚洲 日韩 色 图网站 播放 | 国内少妇偷人精品视频 | 欧美丰满少妇xxxx性 | 成年女人永久免费看片 | 国产做国产爱免费视频 | 露脸叫床粗话东北少妇 | 精品亚洲成av人在线观看 | 日欧一片内射va在线影院 | 国产人妻精品一区二区三区不卡 | 装睡被陌生人摸出水好爽 | 在教室伦流澡到高潮hnp视频 | 欧美自拍另类欧美综合图片区 | 狠狠色噜噜狠狠狠7777奇米 | 国产偷国产偷精品高清尤物 | 国产莉萝无码av在线播放 | 狠狠噜狠狠狠狠丁香五月 | 成人三级无码视频在线观看 | 色一情一乱一伦 | 精品亚洲成av人在线观看 | 久久亚洲中文字幕无码 | 性生交片免费无码看人 | 久久久精品成人免费观看 | 99视频精品全部免费免费观看 | 日韩精品无码免费一区二区三区 | 在线播放亚洲第一字幕 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产区女主播在线观看 | 亚洲经典千人经典日产 | 奇米影视7777久久精品人人爽 | 国产成人精品一区二区在线小狼 | 久久久av男人的天堂 | 天天做天天爱天天爽综合网 | 国产精品va在线观看无码 | 人人妻人人澡人人爽欧美精品 | 国产麻豆精品一区二区三区v视界 | 激情五月综合色婷婷一区二区 | 桃花色综合影院 | 国产乱人偷精品人妻a片 | 76少妇精品导航 | 亚拍精品一区二区三区探花 | 久久久久se色偷偷亚洲精品av | 久久精品人人做人人综合 | 国产美女极度色诱视频www | 特级做a爰片毛片免费69 | 中文字幕人妻丝袜二区 | 377p欧洲日本亚洲大胆 | 日产精品高潮呻吟av久久 | 亚洲色大成网站www国产 | 18禁止看的免费污网站 | 蜜桃视频插满18在线观看 | 国产熟女一区二区三区四区五区 | 一二三四社区在线中文视频 | 荫蒂被男人添的好舒服爽免费视频 | 久久亚洲中文字幕精品一区 | 丁香花在线影院观看在线播放 | 精品午夜福利在线观看 | 人人妻人人澡人人爽欧美一区 | 女人高潮内射99精品 | 377p欧洲日本亚洲大胆 | 国产xxx69麻豆国语对白 | 老熟妇乱子伦牲交视频 | 亚洲国产日韩a在线播放 | 亚洲国产精品一区二区第一页 | 天下第一社区视频www日本 | 亚洲日韩av一区二区三区四区 | 两性色午夜免费视频 | 强辱丰满人妻hd中文字幕 | 精品久久久久久人妻无码中文字幕 | 国产无遮挡又黄又爽免费视频 | 真人与拘做受免费视频一 | 成人av无码一区二区三区 | 国产 精品 自在自线 | 丰满人妻一区二区三区免费视频 | 亚洲熟妇色xxxxx欧美老妇 | 国产精品久久久一区二区三区 | 精品偷自拍另类在线观看 | 人人妻人人澡人人爽欧美精品 | 久久久久久久女国产乱让韩 | 久久国产精品精品国产色婷婷 | 亚洲日本在线电影 | 亚洲精品午夜国产va久久成人 | 麻豆md0077饥渴少妇 | 狠狠躁日日躁夜夜躁2020 | 国产精品国产三级国产专播 | 欧美日韩综合一区二区三区 | 波多野结衣乳巨码无在线观看 | 国产精品久久久久久久9999 | 午夜成人1000部免费视频 | 成人影院yy111111在线观看 | 国产偷国产偷精品高清尤物 | 亚洲狠狠婷婷综合久久 | 一本久久伊人热热精品中文字幕 | 无遮无挡爽爽免费视频 | 免费人成网站视频在线观看 | 久久久久久av无码免费看大片 | 中文字幕无线码免费人妻 | 亚洲精品国偷拍自产在线观看蜜桃 | 夜夜影院未满十八勿进 | 一个人看的视频www在线 | 国内少妇偷人精品视频免费 | 亚洲成av人影院在线观看 | 亚洲欧美日韩成人高清在线一区 | 欧美熟妇另类久久久久久不卡 | 婷婷丁香六月激情综合啪 | 伊人久久大香线蕉av一区二区 | 亚洲区小说区激情区图片区 | 日日天干夜夜狠狠爱 | 国产精品久久久久9999小说 | 亚洲精品www久久久 | 97夜夜澡人人双人人人喊 | 亚洲国产综合无码一区 | 丰满人妻精品国产99aⅴ | 久久久久se色偷偷亚洲精品av | 野狼第一精品社区 | 精品一二三区久久aaa片 | 波多野结衣 黑人 | 捆绑白丝粉色jk震动捧喷白浆 | 狠狠亚洲超碰狼人久久 | 日日碰狠狠躁久久躁蜜桃 | 国产欧美熟妇另类久久久 | 欧美黑人巨大xxxxx | а√资源新版在线天堂 | 亚洲国产成人a精品不卡在线 | 国产一区二区不卡老阿姨 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 在线观看欧美一区二区三区 | 搡女人真爽免费视频大全 | 国产精品无码成人午夜电影 | 精品人妻中文字幕有码在线 | 大地资源中文第3页 | 久久久www成人免费毛片 | 日本精品人妻无码免费大全 | 久久久久人妻一区精品色欧美 | 成人无码影片精品久久久 | 无码人妻精品一区二区三区下载 | www成人国产高清内射 | 免费国产黄网站在线观看 | 97久久国产亚洲精品超碰热 | 天天燥日日燥 | 久久五月精品中文字幕 | 18无码粉嫩小泬无套在线观看 | 夜夜躁日日躁狠狠久久av | 亚洲精品综合一区二区三区在线 | 欧美日本日韩 | 国产精品久久久午夜夜伦鲁鲁 | 国产两女互慰高潮视频在线观看 | 久久国语露脸国产精品电影 | 国产成人午夜福利在线播放 | 色婷婷欧美在线播放内射 | 成人无码视频在线观看网站 | 欧美兽交xxxx×视频 | 国产美女极度色诱视频www | 婷婷丁香六月激情综合啪 | 美女张开腿让人桶 | www国产精品内射老师 | 亚洲精品www久久久 | 欧美自拍另类欧美综合图片区 | 东京热一精品无码av | 亚洲成a人片在线观看日本 | 十八禁视频网站在线观看 | 亚洲精品一区国产 | 亚洲精品久久久久中文第一幕 | 天干天干啦夜天干天2017 | 欧美国产亚洲日韩在线二区 | 极品尤物被啪到呻吟喷水 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲成a人片在线观看无码 | 久久无码中文字幕免费影院蜜桃 | 少妇激情av一区二区 | 中文字幕久久久久人妻 | 久久精品人人做人人综合 | 少妇人妻偷人精品无码视频 | 未满小14洗澡无码视频网站 | 国产无遮挡又黄又爽免费视频 | аⅴ资源天堂资源库在线 | 国产sm调教视频在线观看 | 欧洲vodafone精品性 | 欧美日韩亚洲国产精品 | 久久综合狠狠综合久久综合88 | 国产一区二区三区精品视频 | 欧美成人午夜精品久久久 | 亚洲乱码中文字幕在线 | 久久精品一区二区三区四区 | 午夜无码人妻av大片色欲 | 一本精品99久久精品77 | 香蕉久久久久久av成人 | 乱码av麻豆丝袜熟女系列 | 亚洲精品国偷拍自产在线麻豆 | 国产无套粉嫩白浆在线 | 99er热精品视频 | 免费无码的av片在线观看 | 国产精品美女久久久 | 色婷婷久久一区二区三区麻豆 | 久久精品丝袜高跟鞋 | 国产精品亚洲а∨无码播放麻豆 | 亚洲热妇无码av在线播放 | 久久婷婷五月综合色国产香蕉 | 精品国产一区二区三区四区在线看 | yw尤物av无码国产在线观看 | 性欧美疯狂xxxxbbbb | 国产亚洲日韩欧美另类第八页 | 国产人妻久久精品二区三区老狼 | 日韩精品成人一区二区三区 | 久久精品女人的天堂av | 免费无码一区二区三区蜜桃大 | 亚洲精品一区二区三区大桥未久 | 欧美丰满老熟妇xxxxx性 | 欧美 丝袜 自拍 制服 另类 | 人人妻人人澡人人爽人人精品浪潮 | av在线亚洲欧洲日产一区二区 | 国内老熟妇对白xxxxhd | 欧美精品在线观看 | 日韩人妻系列无码专区 | 国产精品免费大片 | 亚洲欧洲中文日韩av乱码 | 中文字幕无码免费久久9一区9 | 玩弄中年熟妇正在播放 | 国产高清av在线播放 | 爽爽影院免费观看 | 蜜桃视频插满18在线观看 | 日本饥渴人妻欲求不满 | 秋霞成人午夜鲁丝一区二区三区 | 久久国语露脸国产精品电影 | 伊人久久大香线蕉午夜 | 精品国产国产综合精品 | 亚洲自偷自拍另类第1页 | 中文字幕乱码亚洲无线三区 | 亚洲综合在线一区二区三区 | 精品无码国产自产拍在线观看蜜 | 亚洲成色www久久网站 | 精品国产一区二区三区四区 | 娇妻被黑人粗大高潮白浆 | 性欧美牲交在线视频 | 日本丰满熟妇videos | 久久人人爽人人人人片 | 色欲久久久天天天综合网精品 | 无遮挡啪啪摇乳动态图 | 国产人妻大战黑人第1集 | 亚洲精品国偷拍自产在线观看蜜桃 | 麻豆国产丝袜白领秘书在线观看 | 国产亚洲日韩欧美另类第八页 | 中文字幕av日韩精品一区二区 | 欧美 丝袜 自拍 制服 另类 | 亚洲精品成人福利网站 | 亚洲爆乳精品无码一区二区三区 | 亚洲中文字幕在线观看 | 亚洲日韩av片在线观看 | 中国女人内谢69xxxxxa片 | 亚洲中文字幕无码一久久区 | 亚洲色欲久久久综合网东京热 | 天堂无码人妻精品一区二区三区 | 强伦人妻一区二区三区视频18 | 成人精品天堂一区二区三区 | 丰满人妻被黑人猛烈进入 | 亚洲国产精品无码久久久久高潮 | 久久综合久久自在自线精品自 | 又色又爽又黄的美女裸体网站 | 国产亚洲美女精品久久久2020 | 日韩精品无码一区二区中文字幕 | 日日碰狠狠丁香久燥 | 67194成是人免费无码 | 亚洲中文字幕在线无码一区二区 | 亚洲熟妇色xxxxx欧美老妇y | 国产精品无码成人午夜电影 | 久久伊人色av天堂九九小黄鸭 | 午夜福利电影 | 男人的天堂av网站 | 色五月丁香五月综合五月 | 亚洲精品一区三区三区在线观看 | 国产精品人妻一区二区三区四 | 国产综合久久久久鬼色 | 亚洲天堂2017无码 | 国产成人综合在线女婷五月99播放 | 天天爽夜夜爽夜夜爽 | 一区二区三区乱码在线 | 欧洲 | 亚欧洲精品在线视频免费观看 | 无码人妻出轨黑人中文字幕 | 国产特级毛片aaaaaa高潮流水 | 少妇厨房愉情理9仑片视频 | 亚洲精品中文字幕久久久久 | 欧美日韩综合一区二区三区 | 黑人巨大精品欧美一区二区 | 色综合久久久久综合一本到桃花网 | 久久99精品久久久久婷婷 | 久精品国产欧美亚洲色aⅴ大片 | 性欧美大战久久久久久久 | a在线亚洲男人的天堂 | 亚洲色偷偷男人的天堂 | 国产农村乱对白刺激视频 | 久久久久亚洲精品中文字幕 | 三上悠亚人妻中文字幕在线 | 婷婷五月综合缴情在线视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 成人片黄网站色大片免费观看 | 亚洲中文字幕久久无码 | 国产精品丝袜黑色高跟鞋 | 麻豆精品国产精华精华液好用吗 | 熟女少妇在线视频播放 | 国产无av码在线观看 | 亚洲色欲色欲欲www在线 | 久久久久se色偷偷亚洲精品av | 无码帝国www无码专区色综合 | 中文精品无码中文字幕无码专区 | 美女黄网站人色视频免费国产 | 精品亚洲韩国一区二区三区 | 老熟妇乱子伦牲交视频 | 波多野42部无码喷潮在线 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲国产欧美日韩精品一区二区三区 | 成熟妇人a片免费看网站 | 午夜精品久久久内射近拍高清 | 台湾无码一区二区 | 日本精品人妻无码77777 天堂一区人妻无码 | 男人和女人高潮免费网站 | 人人澡人人透人人爽 | 日本在线高清不卡免费播放 | 国产xxx69麻豆国语对白 | 亚洲国产精品无码一区二区三区 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲一区二区观看播放 | 亚洲春色在线视频 | 我要看www免费看插插视频 | 亚洲精品欧美二区三区中文字幕 | √8天堂资源地址中文在线 | 熟女少妇在线视频播放 | 亚洲精品久久久久中文第一幕 | 欧美亚洲国产一区二区三区 | 午夜无码区在线观看 | 国产精品二区一区二区aⅴ污介绍 | 红桃av一区二区三区在线无码av | 久久无码专区国产精品s | 人人爽人人澡人人人妻 | 人妻夜夜爽天天爽三区 | 亚洲啪av永久无码精品放毛片 | 亚洲精品国产精品乱码视色 | 亚洲国产高清在线观看视频 | 色婷婷久久一区二区三区麻豆 | 国产精品福利视频导航 | 伊人久久婷婷五月综合97色 | 性色av无码免费一区二区三区 | 精品夜夜澡人妻无码av蜜桃 | 在线看片无码永久免费视频 | 亚洲啪av永久无码精品放毛片 | 亚洲娇小与黑人巨大交 | 欧美日韩亚洲国产精品 | www国产精品内射老师 | 国产乱人伦偷精品视频 | 国产精品美女久久久久av爽李琼 | 久久久久亚洲精品中文字幕 | 国产激情艳情在线看视频 | 国产69精品久久久久app下载 | 三级4级全黄60分钟 | 中文字幕乱码亚洲无线三区 | 精品欧美一区二区三区久久久 | 亚洲精品中文字幕乱码 | 99国产精品白浆在线观看免费 | 九九综合va免费看 | 麻豆人妻少妇精品无码专区 | 欧美日韩一区二区综合 | 欧美国产亚洲日韩在线二区 | 久久久精品欧美一区二区免费 | 99久久久无码国产aaa精品 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲一区二区三区偷拍女厕 | 精品少妇爆乳无码av无码专区 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 狠狠亚洲超碰狼人久久 | 麻豆国产人妻欲求不满 | аⅴ资源天堂资源库在线 | 青草青草久热国产精品 | 扒开双腿疯狂进出爽爽爽视频 | 377p欧洲日本亚洲大胆 | 欧美喷潮久久久xxxxx | 国内揄拍国内精品少妇国语 | 亚洲日韩乱码中文无码蜜桃臀网站 | 伊人色综合久久天天小片 | 午夜熟女插插xx免费视频 | 精品欧洲av无码一区二区三区 | 欧美性猛交xxxx富婆 | 久久亚洲精品中文字幕无男同 | 日本在线高清不卡免费播放 | 国产无遮挡又黄又爽又色 | 欧美老人巨大xxxx做受 | 波多野结衣aⅴ在线 | 黑人粗大猛烈进出高潮视频 | 两性色午夜视频免费播放 | 国产一区二区三区四区五区加勒比 | 国产亚洲视频中文字幕97精品 | 亚洲 高清 成人 动漫 | 99久久久无码国产精品免费 | 国产av一区二区精品久久凹凸 | 国产精品无码久久av | 欧美日韩亚洲国产精品 | 麻豆国产人妻欲求不满谁演的 | 精品午夜福利在线观看 | 无码人妻出轨黑人中文字幕 | 狠狠躁日日躁夜夜躁2020 | 自拍偷自拍亚洲精品被多人伦好爽 | 搡女人真爽免费视频大全 | 国产偷国产偷精品高清尤物 | 极品尤物被啪到呻吟喷水 | 中文字幕av伊人av无码av | 久久无码专区国产精品s | 小鲜肉自慰网站xnxx | 成人精品天堂一区二区三区 | 中文字幕乱码中文乱码51精品 | 久久久久久a亚洲欧洲av冫 | 3d动漫精品啪啪一区二区中 | 亚洲精品一区二区三区大桥未久 | 曰本女人与公拘交酡免费视频 | 精品少妇爆乳无码av无码专区 | 国产精品99久久精品爆乳 | 人人妻人人澡人人爽人人精品浪潮 | 国产成人精品无码播放 | 国产另类ts人妖一区二区 | 无套内射视频囯产 | 国产精品免费大片 | 欧美精品免费观看二区 | 免费人成在线观看网站 | 无套内谢的新婚少妇国语播放 | 国精产品一品二品国精品69xx | 无码人妻丰满熟妇区毛片18 | 老司机亚洲精品影院无码 | 亚洲の无码国产の无码步美 | 亚洲热妇无码av在线播放 | 无套内谢老熟女 | 中文字幕+乱码+中文字幕一区 | 粉嫩少妇内射浓精videos | 精品国产麻豆免费人成网站 | 少妇高潮一区二区三区99 | 国产精品手机免费 | 精品久久久久久亚洲精品 | 99精品国产综合久久久久五月天 | 扒开双腿疯狂进出爽爽爽视频 | 高中生自慰www网站 | 色老头在线一区二区三区 | 中文字幕无码av波多野吉衣 | 亚洲国产一区二区三区在线观看 | 小鲜肉自慰网站xnxx | 女人被男人爽到呻吟的视频 | 天天拍夜夜添久久精品大 | 又湿又紧又大又爽a视频国产 | 男女爱爱好爽视频免费看 | 无码人妻精品一区二区三区不卡 | 无码精品人妻一区二区三区av | 丝袜足控一区二区三区 | 一区二区三区高清视频一 | 无码av免费一区二区三区试看 | 国产午夜福利亚洲第一 | 成 人影片 免费观看 | 美女张开腿让人桶 | 亚洲欧美中文字幕5发布 | 亚洲男人av天堂午夜在 | 日本熟妇大屁股人妻 | 最新版天堂资源中文官网 | 日韩av无码中文无码电影 | 日韩av无码一区二区三区不卡 | 97精品国产97久久久久久免费 | 欧美老妇与禽交 | 任你躁国产自任一区二区三区 | 狠狠亚洲超碰狼人久久 | 亚洲色欲久久久综合网东京热 | 国产亚洲人成在线播放 | 奇米影视7777久久精品 | 女人高潮内射99精品 | 亚洲综合精品香蕉久久网 | 亚洲性无码av中文字幕 | 无码人妻丰满熟妇区毛片18 | 高清国产亚洲精品自在久久 | 乱人伦人妻中文字幕无码 | 久久99国产综合精品 | 樱花草在线播放免费中文 | 美女黄网站人色视频免费国产 | 老司机亚洲精品影院 | 亚洲精品久久久久avwww潮水 | 国产色xx群视频射精 | 人人爽人人澡人人高潮 | 久久熟妇人妻午夜寂寞影院 | 精品偷自拍另类在线观看 | 成人毛片一区二区 | 熟妇人妻无码xxx视频 | 特级做a爰片毛片免费69 | 免费人成在线观看网站 | 无套内谢的新婚少妇国语播放 | 国精产品一品二品国精品69xx | 亚洲一区二区三区无码久久 | 国色天香社区在线视频 | 无码毛片视频一区二区本码 | 撕开奶罩揉吮奶头视频 | 免费观看黄网站 | 久久99精品久久久久久 | 精品无码av一区二区三区 | 女人高潮内射99精品 | 久久久久成人精品免费播放动漫 | 中文字幕av无码一区二区三区电影 | 激情内射亚州一区二区三区爱妻 | 一本色道久久综合亚洲精品不卡 | 国产内射老熟女aaaa | 欧美老熟妇乱xxxxx | 黄网在线观看免费网站 | 日本精品久久久久中文字幕 | 一个人免费观看的www视频 | 亚洲国产精品成人久久蜜臀 | 亚洲欧美精品aaaaaa片 | 久热国产vs视频在线观看 | 亚洲精品无码人妻无码 | 欧洲精品码一区二区三区免费看 | 久久精品视频在线看15 | 亚洲一区二区三区在线观看网站 | 中文字幕人妻无码一夲道 | 蜜臀av在线播放 久久综合激激的五月天 | 国产超碰人人爽人人做人人添 | 国产麻豆精品精东影业av网站 | 东京热无码av男人的天堂 | 成人精品视频一区二区三区尤物 | 日本一区二区三区免费播放 | 内射爽无广熟女亚洲 | 曰韩无码二三区中文字幕 | 人妻夜夜爽天天爽三区 | 蜜桃臀无码内射一区二区三区 | 亚洲精品国产a久久久久久 | 国产精品高潮呻吟av久久4虎 | 国产超级va在线观看视频 | 国产精品对白交换视频 | 日本熟妇大屁股人妻 | 一区二区传媒有限公司 | 97夜夜澡人人双人人人喊 | 精品国偷自产在线视频 | 黑人巨大精品欧美黑寡妇 | 色婷婷av一区二区三区之红樱桃 | 亚洲精品午夜无码电影网 | 久久国产劲爆∧v内射 | 久久午夜无码鲁丝片午夜精品 | 在线欧美精品一区二区三区 | 丰满人妻被黑人猛烈进入 | 欧美日韩精品 | 亚洲日本一区二区三区在线 | 大乳丰满人妻中文字幕日本 | 日本一卡二卡不卡视频查询 | 成 人 免费观看网站 | 亚洲国产精品久久久天堂 | 久激情内射婷内射蜜桃人妖 | 日韩精品成人一区二区三区 | 国产熟妇高潮叫床视频播放 | 麻豆av传媒蜜桃天美传媒 | 中文字幕无码日韩欧毛 | 国产精品对白交换视频 | 在线看片无码永久免费视频 | 97久久国产亚洲精品超碰热 | 精品国产一区二区三区四区在线看 | 国产精品人人妻人人爽 | 国产精品久免费的黄网站 | 免费人成在线观看网站 | 亚洲国产一区二区三区在线观看 | 男人和女人高潮免费网站 | 性欧美大战久久久久久久 | 成人无码影片精品久久久 | 亚洲欧美精品伊人久久 | 国产两女互慰高潮视频在线观看 | 精品国精品国产自在久国产87 | 正在播放东北夫妻内射 | 国产精品久久久久7777 | 少妇高潮一区二区三区99 | 精品aⅴ一区二区三区 | 久久综合给合久久狠狠狠97色 | 国产熟妇高潮叫床视频播放 | 扒开双腿疯狂进出爽爽爽视频 | 久9re热视频这里只有精品 | 六月丁香婷婷色狠狠久久 | 欧美熟妇另类久久久久久不卡 | 国产熟女一区二区三区四区五区 | 偷窥村妇洗澡毛毛多 | 成人亚洲精品久久久久软件 | 久久人人爽人人爽人人片av高清 | 国产亚洲精品精品国产亚洲综合 | 亚洲日本在线电影 | 日日鲁鲁鲁夜夜爽爽狠狠 | 四虎国产精品一区二区 | 九月婷婷人人澡人人添人人爽 | 噜噜噜亚洲色成人网站 | 99精品国产综合久久久久五月天 | 亚洲 日韩 欧美 成人 在线观看 | 夜夜高潮次次欢爽av女 | 给我免费的视频在线观看 | 国产亚av手机在线观看 | 国产高潮视频在线观看 | 在教室伦流澡到高潮hnp视频 | 无码人妻精品一区二区三区下载 | 性生交大片免费看l | 午夜精品一区二区三区的区别 | 国产精品国产三级国产专播 | 日韩av激情在线观看 | 人妻有码中文字幕在线 | 中文字幕日韩精品一区二区三区 | 亚洲自偷自拍另类第1页 | 亚洲国产精品毛片av不卡在线 | 麻豆果冻传媒2021精品传媒一区下载 | 精品亚洲成av人在线观看 | 美女极度色诱视频国产 | 久久久精品456亚洲影院 | 久久99国产综合精品 | 丰满少妇熟乱xxxxx视频 | 成人一在线视频日韩国产 | 精品偷拍一区二区三区在线看 | 亚洲七七久久桃花影院 | 激情内射亚州一区二区三区爱妻 | 亚洲成a人一区二区三区 | 最近中文2019字幕第二页 | 国产精品久久久久9999小说 | 亚洲精品国产品国语在线观看 | 国产成人午夜福利在线播放 | 亚洲狠狠色丁香婷婷综合 | 亚洲中文字幕久久无码 | 亚洲人成网站免费播放 | 97久久超碰中文字幕 | 好男人www社区 | 无套内谢的新婚少妇国语播放 | 18禁黄网站男男禁片免费观看 | 国产精品亚洲专区无码不卡 | 夜夜高潮次次欢爽av女 | 久久久久久久久888 | 人妻插b视频一区二区三区 | 国产成人精品一区二区在线小狼 | 男女下面进入的视频免费午夜 | 久久综合九色综合97网 | a在线观看免费网站大全 | 日韩精品a片一区二区三区妖精 | 国产疯狂伦交大片 | 成人欧美一区二区三区 | 久久无码中文字幕免费影院蜜桃 | 人人澡人人妻人人爽人人蜜桃 | 无套内射视频囯产 | 国精品人妻无码一区二区三区蜜柚 | 疯狂三人交性欧美 | 永久免费观看国产裸体美女 | 精品欧洲av无码一区二区三区 | 国产精品沙发午睡系列 | 国产亚洲欧美在线专区 | 国产精品多人p群无码 | 黑人玩弄人妻中文在线 | 久久久久久久人妻无码中文字幕爆 | 人妻无码αv中文字幕久久琪琪布 | 国产av人人夜夜澡人人爽麻豆 | 国产无遮挡吃胸膜奶免费看 | 久久国产精品偷任你爽任你 | 亚洲综合色区中文字幕 | 国产成人精品无码播放 | 久久久精品人妻久久影视 | 乌克兰少妇xxxx做受 | 国产精品久久久久久久9999 | 青青草原综合久久大伊人精品 | 秋霞成人午夜鲁丝一区二区三区 | 久久aⅴ免费观看 | 少妇的肉体aa片免费 | 国产精品美女久久久久av爽李琼 | 大地资源中文第3页 | 又大又黄又粗又爽的免费视频 | 亚洲s色大片在线观看 | 久久婷婷五月综合色国产香蕉 | 中文字幕av无码一区二区三区电影 | 久久国产36精品色熟妇 | 人妻少妇精品无码专区二区 | 中文字幕无码日韩欧毛 | 午夜熟女插插xx免费视频 | av人摸人人人澡人人超碰下载 | 亚洲精品一区二区三区在线 | 国产乱子伦视频在线播放 | 国产成人无码一二三区视频 | 日本一区二区三区免费高清 | 波多野结衣一区二区三区av免费 | 欧美老熟妇乱xxxxx | 曰本女人与公拘交酡免费视频 | 国产成人精品久久亚洲高清不卡 | 强辱丰满人妻hd中文字幕 | 亚洲国产精品一区二区第一页 | 一区二区三区乱码在线 | 欧洲 | 久久精品中文字幕一区 | 青青久在线视频免费观看 | 好爽又高潮了毛片免费下载 | 日韩欧美中文字幕在线三区 | 成人无码视频免费播放 | 中文字幕av日韩精品一区二区 | 国内少妇偷人精品视频免费 | 精品无码av一区二区三区 | 亚洲熟妇自偷自拍另类 | 成人精品一区二区三区中文字幕 | 内射老妇bbwx0c0ck | 人妻无码αv中文字幕久久琪琪布 | 精品人妻中文字幕有码在线 | 色综合天天综合狠狠爱 | 亚洲第一无码av无码专区 | 欧美日韩久久久精品a片 | 国产精品嫩草久久久久 | 日本一卡二卡不卡视频查询 | 久久 国产 尿 小便 嘘嘘 | 国精产品一品二品国精品69xx | 中文字幕 亚洲精品 第1页 | 亚洲综合在线一区二区三区 | 在线天堂新版最新版在线8 | 国产精品久久久午夜夜伦鲁鲁 | 国内精品一区二区三区不卡 | 国产精品久久久久久亚洲毛片 | 久久综合激激的五月天 | 中文字幕无码视频专区 | 国精品人妻无码一区二区三区蜜柚 | 欧美日韩综合一区二区三区 | 日本熟妇大屁股人妻 | 亚洲人成网站免费播放 | 欧美老人巨大xxxx做受 | 97人妻精品一区二区三区 | 久久久国产一区二区三区 | 男女下面进入的视频免费午夜 | 黑人巨大精品欧美一区二区 | 牲交欧美兽交欧美 | 亚洲精品国产精品乱码不卡 | √天堂中文官网8在线 | 无码午夜成人1000部免费视频 | 欧美三级不卡在线观看 | 国产乱人无码伦av在线a | 夜精品a片一区二区三区无码白浆 | 欧美熟妇另类久久久久久不卡 | 思思久久99热只有频精品66 | 亚洲伊人久久精品影院 | 亚洲熟悉妇女xxx妇女av | 无码国模国产在线观看 | 初尝人妻少妇中文字幕 | 伊人久久大香线蕉av一区二区 | 18无码粉嫩小泬无套在线观看 | 18禁止看的免费污网站 | 欧美日本精品一区二区三区 | 欧美色就是色 | 无码吃奶揉捏奶头高潮视频 | 欧美黑人性暴力猛交喷水 | 色老头在线一区二区三区 | 东京热男人av天堂 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产麻豆精品精东影业av网站 | 美女黄网站人色视频免费国产 | 黑人玩弄人妻中文在线 | 亚洲综合伊人久久大杳蕉 | 国产亚av手机在线观看 | 久久久久久国产精品无码下载 | 国产超碰人人爽人人做人人添 | 四十如虎的丰满熟妇啪啪 | 精品国产aⅴ无码一区二区 | 日日碰狠狠丁香久燥 | 亚洲国产精品无码久久久久高潮 | 夜夜躁日日躁狠狠久久av | 亚洲日韩av一区二区三区中文 | 欧美日韩在线亚洲综合国产人 | 性色欲情网站iwww九文堂 | 黑人大群体交免费视频 | 特黄特色大片免费播放器图片 | 欧美成人午夜精品久久久 | 亚洲中文无码av永久不收费 | 麻豆成人精品国产免费 | 成 人 免费观看网站 | 日本精品高清一区二区 | 亚洲色欲色欲欲www在线 | 九月婷婷人人澡人人添人人爽 | 国产av一区二区精品久久凹凸 | 97精品国产97久久久久久免费 | 欧美精品在线观看 | 国内揄拍国内精品少妇国语 | 亚洲精品中文字幕久久久久 | 欧美野外疯狂做受xxxx高潮 | 久久精品国产一区二区三区 | 日本大乳高潮视频在线观看 | av无码电影一区二区三区 | 亚洲va欧美va天堂v国产综合 | 丰满肥臀大屁股熟妇激情视频 | 成人av无码一区二区三区 | 欧美肥老太牲交大战 | 欧美日韩一区二区综合 | 国产精华av午夜在线观看 | 欧美三级不卡在线观看 | 乌克兰少妇性做爰 | 亚洲成av人片在线观看无码不卡 | 无遮挡国产高潮视频免费观看 | 亚洲中文字幕乱码av波多ji | 领导边摸边吃奶边做爽在线观看 | 国产尤物精品视频 | 99久久99久久免费精品蜜桃 | 亚洲第一无码av无码专区 | 中国女人内谢69xxxx | 人妻体内射精一区二区三四 | 日本欧美一区二区三区乱码 | 领导边摸边吃奶边做爽在线观看 | 国产亚洲欧美日韩亚洲中文色 | 亚洲成a人片在线观看无码 | 色综合久久中文娱乐网 | 欧美精品国产综合久久 | 亚洲第一网站男人都懂 | 亚洲欧洲日本综合aⅴ在线 | 久久五月精品中文字幕 | 亚洲综合无码一区二区三区 | 天天拍夜夜添久久精品大 | 亚洲国产成人av在线观看 | 中文字幕人妻无码一区二区三区 | 国产亚洲精品久久久久久大师 | 18精品久久久无码午夜福利 | 免费人成网站视频在线观看 | 熟妇激情内射com | 清纯唯美经典一区二区 | 亚洲成色www久久网站 | 少妇的肉体aa片免费 | 东北女人啪啪对白 | аⅴ资源天堂资源库在线 | 中文字幕中文有码在线 | 日韩人妻少妇一区二区三区 | 亚洲色欲色欲欲www在线 | 亚洲成av人影院在线观看 | 天天综合网天天综合色 | 国产综合色产在线精品 | 377p欧洲日本亚洲大胆 | 国产做国产爱免费视频 | 无码任你躁久久久久久久 | 久在线观看福利视频 | 狂野欧美性猛xxxx乱大交 | 久久久久人妻一区精品色欧美 | 无码人妻av免费一区二区三区 | 亚洲日韩av片在线观看 | 亚洲综合无码一区二区三区 | 亚洲一区二区三区无码久久 | a在线观看免费网站大全 | 国产av剧情md精品麻豆 | 国产精品毛片一区二区 | 久久久久久国产精品无码下载 | 爆乳一区二区三区无码 | 亚洲成av人片在线观看无码不卡 | 波多野结衣av在线观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 成人片黄网站色大片免费观看 | 久久久精品人妻久久影视 | 国产黄在线观看免费观看不卡 | 欧美人与物videos另类 | 东京热一精品无码av | 少妇邻居内射在线 | 国产亚洲精品久久久久久久 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产 精品 自在自线 | 精品人人妻人人澡人人爽人人 | 国产熟妇高潮叫床视频播放 | 熟女少妇人妻中文字幕 | 中文字幕日产无线码一区 | 无码人妻出轨黑人中文字幕 | 亚洲码国产精品高潮在线 | 国产成人一区二区三区别 | 亚洲国产精品一区二区美利坚 | 亚洲国产精华液网站w | 天下第一社区视频www日本 | 好男人社区资源 | 亚洲人成无码网www | 亚洲综合无码久久精品综合 | 日本精品久久久久中文字幕 | 亚洲精品中文字幕乱码 | 国产午夜无码精品免费看 | 久久精品国产一区二区三区肥胖 | 国产一精品一av一免费 | 亚洲人成网站在线播放942 | 国产人妻久久精品二区三区老狼 | 精品国产麻豆免费人成网站 | 国内少妇偷人精品视频免费 | 麻豆人妻少妇精品无码专区 | 亚洲人成影院在线无码按摩店 | 国产在线一区二区三区四区五区 | 桃花色综合影院 | 国产人妻精品午夜福利免费 | 国产9 9在线 | 中文 | 国产精品久久久久久亚洲影视内衣 | 沈阳熟女露脸对白视频 | 性开放的女人aaa片 | 日本熟妇浓毛 | 天堂在线观看www | 无码吃奶揉捏奶头高潮视频 | 国产精品丝袜黑色高跟鞋 | 成人免费视频一区二区 | av无码电影一区二区三区 | 奇米影视7777久久精品人人爽 | 精品国产精品久久一区免费式 | 亚洲精品午夜国产va久久成人 | 麻花豆传媒剧国产免费mv在线 | 色狠狠av一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | 日本成熟视频免费视频 | 成人欧美一区二区三区黑人 | 老熟妇仑乱视频一区二区 | 中文字幕久久久久人妻 | 高中生自慰www网站 | 小泽玛莉亚一区二区视频在线 | 亚洲一区二区三区国产精华液 | 99riav国产精品视频 | 国产午夜无码视频在线观看 | 无码人妻出轨黑人中文字幕 | 麻豆md0077饥渴少妇 | 少妇性l交大片 | 国产亚洲精品久久久久久久久动漫 | 日韩精品无码免费一区二区三区 | 熟妇女人妻丰满少妇中文字幕 | 亚洲精品久久久久中文第一幕 | 丰满少妇熟乱xxxxx视频 | 久久视频在线观看精品 | 成人性做爰aaa片免费看 | 麻豆果冻传媒2021精品传媒一区下载 | 2020久久香蕉国产线看观看 | 国产激情无码一区二区app | 欧美熟妇另类久久久久久不卡 | 国内精品一区二区三区不卡 | 国产乡下妇女做爰 | 亚洲伊人久久精品影院 | 熟女俱乐部五十路六十路av | 人妻熟女一区 | 久久精品国产精品国产精品污 | 国产97人人超碰caoprom | 玩弄人妻少妇500系列视频 | 国内精品久久毛片一区二区 | 久久99精品国产麻豆 | 成熟人妻av无码专区 | 青青青爽视频在线观看 | 亚洲国产日韩a在线播放 | 国产亚洲精品久久久闺蜜 | 久久国产精品萌白酱免费 | 亚洲成av人影院在线观看 | 久久无码人妻影院 | 久久国语露脸国产精品电影 | 国产乡下妇女做爰 | 亚洲成a人一区二区三区 | 又紧又大又爽精品一区二区 | 中文字幕精品av一区二区五区 | 黑人大群体交免费视频 | 麻豆果冻传媒2021精品传媒一区下载 | 嫩b人妻精品一区二区三区 | 网友自拍区视频精品 | 无码午夜成人1000部免费视频 | 狠狠躁日日躁夜夜躁2020 | 国产成人精品一区二区在线小狼 | 极品嫩模高潮叫床 | 亚洲va中文字幕无码久久不卡 | 丝袜人妻一区二区三区 | 成人精品视频一区二区 | 国产精品久久久久久亚洲影视内衣 | 亚洲日韩av一区二区三区中文 | 国产口爆吞精在线视频 | 97久久超碰中文字幕 | 色一情一乱一伦一区二区三欧美 | 成人精品视频一区二区三区尤物 | 国产成人综合色在线观看网站 | 丰满少妇熟乱xxxxx视频 | 精品日本一区二区三区在线观看 | 亚洲乱码日产精品bd | 性生交大片免费看女人按摩摩 | 国产午夜亚洲精品不卡 | 97夜夜澡人人双人人人喊 | 一本色道久久综合亚洲精品不卡 | 欧美人与物videos另类 | 一本久道久久综合婷婷五月 | 性欧美大战久久久久久久 | 久久人人爽人人人人片 | 亚洲国产综合无码一区 | 日本成熟视频免费视频 | 久久精品无码一区二区三区 | 亚洲中文字幕无码中文字在线 | 99久久人妻精品免费一区 | 日韩精品无码免费一区二区三区 | 夜夜躁日日躁狠狠久久av | 无码人妻出轨黑人中文字幕 | 色婷婷久久一区二区三区麻豆 | 又粗又大又硬毛片免费看 | www国产亚洲精品久久网站 | 久久久久久久女国产乱让韩 | 久久精品中文字幕大胸 | 乱码午夜-极国产极内射 | 国产超级va在线观看视频 | 成人综合网亚洲伊人 | 欧美阿v高清资源不卡在线播放 | 久久精品国产精品国产精品污 | 国产精品久久久久久亚洲影视内衣 | 国产精品va在线播放 | 亚洲精品成人av在线 | 国产亚洲精品精品国产亚洲综合 | 婷婷六月久久综合丁香 | www一区二区www免费 | 无码人中文字幕 | 国产偷国产偷精品高清尤物 | 性开放的女人aaa片 | 蜜臀av无码人妻精品 | 亚洲成av人在线观看网址 | 撕开奶罩揉吮奶头视频 | 免费看男女做好爽好硬视频 | 精品少妇爆乳无码av无码专区 | 国产人妻精品一区二区三区 | 亚洲中文字幕在线无码一区二区 | 色欲综合久久中文字幕网 | 男女猛烈xx00免费视频试看 | 成 人 免费观看网站 | 99久久精品无码一区二区毛片 | 久久久av男人的天堂 | 人人澡人人透人人爽 | 狠狠亚洲超碰狼人久久 | 在线 国产 欧美 亚洲 天堂 | 国产特级毛片aaaaaa高潮流水 | 国产精品美女久久久网av | 欧美大屁股xxxxhd黑色 | 精品国精品国产自在久国产87 | 欧美日韩久久久精品a片 | 爽爽影院免费观看 | 亚洲 a v无 码免 费 成 人 a v | 欧美丰满老熟妇xxxxx性 | 国产午夜视频在线观看 | 成人亚洲精品久久久久 | 女人色极品影院 | 国内精品九九久久久精品 | 欧美怡红院免费全部视频 | 亚洲精品www久久久 | 精品 日韩 国产 欧美 视频 | 激情人妻另类人妻伦 | 国产精品久久久久影院嫩草 | 高清国产亚洲精品自在久久 | 国语自产偷拍精品视频偷 | 亚洲精品一区二区三区大桥未久 | 国产深夜福利视频在线 | 偷窥日本少妇撒尿chinese | 国产成人无码区免费内射一片色欲 | 欧美日韩一区二区综合 | 美女扒开屁股让男人桶 | 久久久久人妻一区精品色欧美 | 精品日本一区二区三区在线观看 | 久久精品国产精品国产精品污 | 欧美精品一区二区精品久久 | 特黄特色大片免费播放器图片 | 欧美色就是色 | 国产片av国语在线观看 | 特大黑人娇小亚洲女 | 男女超爽视频免费播放 | www一区二区www免费 | 亚洲 欧美 激情 小说 另类 | 亚洲一区二区观看播放 | 扒开双腿疯狂进出爽爽爽视频 | av香港经典三级级 在线 | 18禁黄网站男男禁片免费观看 | 波多野结衣乳巨码无在线观看 | 全黄性性激高免费视频 | 白嫩日本少妇做爰 | 国产精品高潮呻吟av久久 | 一区二区传媒有限公司 | 性色欲网站人妻丰满中文久久不卡 | 中文字幕人妻丝袜二区 | 国产精品亚洲а∨无码播放麻豆 | 丁香花在线影院观看在线播放 | 偷窥日本少妇撒尿chinese | 国内丰满熟女出轨videos | 国产性生交xxxxx无码 | 国产性生大片免费观看性 | 免费国产黄网站在线观看 | 欧美黑人巨大xxxxx | 无码国产激情在线观看 | 成人试看120秒体验区 | 亚洲熟妇色xxxxx欧美老妇 | 成熟妇人a片免费看网站 | 亚洲国产精品无码一区二区三区 | 国产激情一区二区三区 | 国内精品人妻无码久久久影院蜜桃 | 亚洲综合无码久久精品综合 | 波多野结衣av一区二区全免费观看 | 久久99热只有频精品8 | 亚洲中文无码av永久不收费 | 兔费看少妇性l交大片免费 | 亚洲国产成人av在线观看 | 少妇被黑人到高潮喷出白浆 | 国产无遮挡吃胸膜奶免费看 | 欧美 日韩 亚洲 在线 | 国产亚洲人成在线播放 | 两性色午夜免费视频 | 搡女人真爽免费视频大全 | 风流少妇按摩来高潮 | 国产精品无码一区二区三区不卡 | аⅴ资源天堂资源库在线 | 免费乱码人妻系列无码专区 | 蜜桃视频韩日免费播放 | 亚洲综合另类小说色区 | 沈阳熟女露脸对白视频 | 精品厕所偷拍各类美女tp嘘嘘 | 久久午夜夜伦鲁鲁片无码免费 | 在线视频网站www色 | 午夜精品久久久内射近拍高清 | 亚洲中文字幕乱码av波多ji | 亚洲日本va中文字幕 | 亚洲中文字幕乱码av波多ji | 国产综合久久久久鬼色 | 国产成人精品久久亚洲高清不卡 | 7777奇米四色成人眼影 | 国产精品无码一区二区桃花视频 | 妺妺窝人体色www婷婷 | 国产精品久久久久影院嫩草 | 午夜理论片yy44880影院 | 国产成人无码av一区二区 | 国产特级毛片aaaaaaa高清 | 亚洲一区av无码专区在线观看 | 国产精品第一区揄拍无码 | 一本大道久久东京热无码av | 欧洲美熟女乱又伦 | 欧美日韩人成综合在线播放 | 永久黄网站色视频免费直播 | 天天摸天天透天天添 | www国产精品内射老师 | 欧美日韩亚洲国产精品 | 午夜不卡av免费 一本久久a久久精品vr综合 | 日韩 欧美 动漫 国产 制服 | 国产精品免费大片 | 亚洲色在线无码国产精品不卡 | 久久人人爽人人爽人人片ⅴ | av在线亚洲欧洲日产一区二区 | 免费人成在线观看网站 | 久久精品一区二区三区四区 | 婷婷色婷婷开心五月四房播播 | 天堂在线观看www | 天天拍夜夜添久久精品 | 成人精品视频一区二区 | 久久国产精品偷任你爽任你 | 在线观看免费人成视频 | 色妞www精品免费视频 | 欧美自拍另类欧美综合图片区 | 国产sm调教视频在线观看 | 乱人伦人妻中文字幕无码 | 免费观看又污又黄的网站 | 97精品人妻一区二区三区香蕉 | 国产午夜手机精彩视频 | 日产国产精品亚洲系列 | 伊在人天堂亚洲香蕉精品区 | 亚洲大尺度无码无码专区 | 日本成熟视频免费视频 | 精品人人妻人人澡人人爽人人 | 在线a亚洲视频播放在线观看 | 99精品国产综合久久久久五月天 | 国产精品高潮呻吟av久久4虎 | 牲交欧美兽交欧美 | 综合网日日天干夜夜久久 | 国产精品久久久一区二区三区 | www成人国产高清内射 | 欧美激情一区二区三区成人 | 国产又爽又黄又刺激的视频 | 粉嫩少妇内射浓精videos | 东京一本一道一二三区 | 精品无码国产一区二区三区av | 亚洲性无码av中文字幕 | 成人性做爰aaa片免费看 | 狠狠亚洲超碰狼人久久 | 国产精品亚洲综合色区韩国 | 亚洲精品久久久久中文第一幕 | 中文字幕乱码人妻无码久久 | 久久精品国产一区二区三区肥胖 | 日产精品高潮呻吟av久久 | 无人区乱码一区二区三区 | 免费播放一区二区三区 | 久久精品人人做人人综合 | 国产情侣作爱视频免费观看 | 亚洲一区二区三区 | 扒开双腿疯狂进出爽爽爽视频 | 搡女人真爽免费视频大全 | 国模大胆一区二区三区 | 人人澡人人妻人人爽人人蜜桃 | 2019nv天堂香蕉在线观看 | 中文字幕av日韩精品一区二区 | 激情内射亚州一区二区三区爱妻 | 少妇厨房愉情理9仑片视频 | 人妻少妇精品视频专区 | 国产人妻精品一区二区三区 | 欧美性猛交内射兽交老熟妇 | 亚洲日韩一区二区三区 | 中文字幕无码免费久久99 | 东京热男人av天堂 | 性欧美videos高清精品 | 天天躁夜夜躁狠狠是什么心态 | 欧美人与物videos另类 | 成人精品一区二区三区中文字幕 | 日韩欧美中文字幕公布 | 欧美激情综合亚洲一二区 | 色狠狠av一区二区三区 | 人人爽人人爽人人片av亚洲 | 亚洲欧洲中文日韩av乱码 | 无码人妻av免费一区二区三区 | 亚洲精品中文字幕久久久久 | 无码国产乱人伦偷精品视频 | 色五月五月丁香亚洲综合网 | 67194成是人免费无码 | 精品欧美一区二区三区久久久 | 亚洲国产欧美日韩精品一区二区三区 | 日韩少妇白浆无码系列 | 人人妻人人澡人人爽欧美一区九九 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲中文字幕av在天堂 | 天堂а√在线地址中文在线 | 久久97精品久久久久久久不卡 | 麻豆人妻少妇精品无码专区 | 色欲av亚洲一区无码少妇 | 76少妇精品导航 | 日韩视频 中文字幕 视频一区 | 成熟妇人a片免费看网站 | 久久97精品久久久久久久不卡 | 色狠狠av一区二区三区 | 美女毛片一区二区三区四区 | 亚洲狠狠婷婷综合久久 | 成人精品视频一区二区三区尤物 | 久久精品人人做人人综合试看 | 一个人看的www免费视频在线观看 | 鲁大师影院在线观看 | 丰满少妇弄高潮了www | 日韩精品a片一区二区三区妖精 | 亚洲精品中文字幕乱码 | 欧美日韩一区二区免费视频 | 国产精品爱久久久久久久 | 国产亚洲精品精品国产亚洲综合 | 精品 日韩 国产 欧美 视频 | 国产人妻人伦精品 | 人人妻人人澡人人爽欧美一区 | 亚洲精品国产精品乱码视色 | 国产偷抇久久精品a片69 | 亚洲一区二区三区香蕉 | 成在人线av无码免费 | 特黄特色大片免费播放器图片 | 午夜精品一区二区三区在线观看 | 色综合久久久无码网中文 | 爱做久久久久久 | 国产在线精品一区二区高清不卡 | 乱人伦人妻中文字幕无码久久网 | 色一情一乱一伦一区二区三欧美 | 国产麻豆精品一区二区三区v视界 | 欧美 日韩 人妻 高清 中文 | 欧美肥老太牲交大战 | 久久久av男人的天堂 | 成人无码影片精品久久久 | 亚洲中文字幕乱码av波多ji | 极品尤物被啪到呻吟喷水 | 人人妻人人澡人人爽人人精品浪潮 | aa片在线观看视频在线播放 | 天天躁日日躁狠狠躁免费麻豆 | 免费观看激色视频网站 | 国产香蕉97碰碰久久人人 | 欧美激情一区二区三区成人 | 亚洲精品一区三区三区在线观看 | 亚洲国产高清在线观看视频 | 女人和拘做爰正片视频 | 俺去俺来也www色官网 | 久久精品一区二区三区四区 | 国产又粗又硬又大爽黄老大爷视 | 午夜丰满少妇性开放视频 | 粉嫩少妇内射浓精videos | 超碰97人人射妻 | 无码纯肉视频在线观看 | 亚洲爆乳精品无码一区二区三区 | 国产精品无码成人午夜电影 | 超碰97人人射妻 | 久久99精品国产麻豆蜜芽 | 日韩视频 中文字幕 视频一区 | 国产欧美精品一区二区三区 | 天天综合网天天综合色 | 日本熟妇人妻xxxxx人hd | 麻花豆传媒剧国产免费mv在线 | 色婷婷综合中文久久一本 | 成人精品视频一区二区三区尤物 | 亚洲区欧美区综合区自拍区 | 久久精品国产日本波多野结衣 | 午夜无码区在线观看 | 99久久精品日本一区二区免费 | 日日摸日日碰夜夜爽av | 国产成人精品三级麻豆 | www成人国产高清内射 | 亚洲精品综合一区二区三区在线 | 亚洲午夜无码久久 | 蜜臀aⅴ国产精品久久久国产老师 | 国産精品久久久久久久 | 免费人成在线观看网站 | 亚洲中文字幕乱码av波多ji | 欧洲精品码一区二区三区免费看 | 国产精品视频免费播放 | 午夜无码人妻av大片色欲 | 久久精品视频在线看15 | 国产无遮挡又黄又爽又色 | 婷婷丁香六月激情综合啪 | 色欲久久久天天天综合网精品 | 婷婷五月综合缴情在线视频 | 欧美激情一区二区三区成人 | 一区二区三区高清视频一 | 丰满少妇女裸体bbw | 亚洲の无码国产の无码影院 | 狂野欧美性猛交免费视频 | 中文字幕人成乱码熟女app | 又湿又紧又大又爽a视频国产 | 99久久精品无码一区二区毛片 | 荫蒂被男人添的好舒服爽免费视频 | 精品国产一区av天美传媒 | 色综合久久久无码中文字幕 | 久久 国产 尿 小便 嘘嘘 | 婷婷六月久久综合丁香 | 亚洲乱码国产乱码精品精 | 国内精品一区二区三区不卡 | 色婷婷综合激情综在线播放 | 国产婷婷色一区二区三区在线 | 少妇人妻大乳在线视频 | 久久熟妇人妻午夜寂寞影院 | 日韩亚洲欧美精品综合 | 久久久久久av无码免费看大片 | 国精产品一品二品国精品69xx |