精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

機器學習 | PyTorch簡明教程上篇

人工智能 機器學習
前面幾篇文章介紹了特征歸一化和張量,接下來開始寫兩篇PyTorch簡明教程,主要介紹PyTorch簡單實踐。

前面幾篇文章介紹了特征歸一化和張量,接下來開始寫兩篇PyTorch簡明教程,主要介紹PyTorch簡單實踐。

1、四則運算

import torch

a = torch.tensor([2, 3, 4])
b = torch.tensor([3, 4, 5])
print("a + b: ", (a + b).numpy())
print("a - b: ", (a - b).numpy())
print("a * b: ", (a * b).numpy())
print("a / b: ", (a / b).numpy())

加減乘除就不用多解釋了,輸出為:

a + b:  [5 7 9]
a - b:  [-1 -1 -1]
a * b:  [ 6 12 20]
a / b:  [0.6666667 0.75      0.8      ]

2、線性回歸

線性回歸是找到一條直線盡可能接近已知點,如圖:

圖1圖1

import torch
from torch import optim

def build_model1():
    return torch.nn.Sequential(
        torch.nn.Linear(1, 1, bias=False)
    )

def build_model2():
    model = torch.nn.Sequential()
    model.add_module("linear", torch.nn.Linear(1, 1, bias=False))
    return model

def train(model, loss, optimizer, x, y):
    model.train()
    optimizer.zero_grad()
    fx = model.forward(x.view(len(x), 1)).squeeze()
    output = loss.forward(fx, y)
    output.backward()
    optimizer.step()
    return output.item()

def main():
    torch.manual_seed(42)
    X = torch.linspace(-1, 1, 101, requires_grad=False)
    Y = 2 * X + torch.randn(X.size()) * 0.33
    print("X: ", X.numpy(), ", Y: ", Y.numpy())
    model = build_model1()
    loss = torch.nn.MSELoss(reductinotallow='mean')
    optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
    batch_size = 10

    for i in range(100):
        cost = 0.
        num_batches = len(X) // batch_size
        for k in range(num_batches):
            start, end = k * batch_size, (k + 1) * batch_size
            cost += train(model, loss, optimizer, X[start:end], Y[start:end])
        print("Epoch = %d, cost = %s" % (i + 1, cost / num_batches))

    w = next(model.parameters()).data
    print("w = %.2f" % w.numpy())

if __name__ == "__main__":
    main()

(1)先從main函數開始,torch.manual_seed(42)用于設置隨機數生成器的種子,以確保在每次運行時生成的隨機數序列相同,該函數接受一個整數參數作為種子,可以在訓練神經網絡等需要隨機數的場景中使用,以確保結果的可重復性;

(2)torch.linspace(-1, 1, 101, requires_grad=False)用于在指定的區間內生成一組等間隔的數值,該函數接受三個參數:起始值、終止值和元素個數,返回一個張量,其中包含了指定個數的等間隔數值;

(3)build_model1內部實現:

  • torch.nn.Sequential(torch.nn.Linear(1, 1, bias=False))中使用nn.Sequential類的構造函數,將線性層作為參數傳遞給它,然后返回一個包含該線性層的神經網絡模型;
  • build_model2和build_model1功能一樣,使用add_module()方法向其中添加了一個名為linear的子模塊;

(4)torch.nn.MSELoss(reductinotallow='mean')定義損失函數;

(5)optim.SGD(model.parameters(), lr=0.01, momentum=0.9)實現隨機梯度下降(Stochastic Gradient Descent,SGD)優化算法;

(6)通過batch_size將訓練集拆分,循環100次;

(7)接下來是訓練函數train,用于訓練一個神經網絡模型,具體來說,該函數接受以下參數:

  • model:神經網絡模型,通常是一個繼承自nn.Module的類的實例;
  • loss:損失函數,用于計算模型的預測值與真實值之間的差異;
  • optimizer:優化器,用于更新模型的參數;
  • x:輸入數據,是一個torch.Tensor類型的張量;
  • y:目標數據,是一個torch.Tensor類型的張量;

(8)train是PyTorch訓練步驟的通用方法,步驟如下:

  • 將模型設置為訓練模式,即啟用dropout和batch normalization等訓練時使用的特殊操作;
  • 將優化器的梯度緩存清零,以便進行新一輪的梯度計算;
  • 將輸入數據傳遞給模型,計算模型的預測值,并將預測值與目標數據傳遞給損失函數,計算損失值;
  • 對損失值進行反向傳播,計算模型參數的梯度;
  • 使用優化器更新模型參數,以最小化損失值;
  • 返回損失值的標量值;

(9)print("Epoch = %d, cost = %s" % (i + 1, cost / num_batches))最后打印當前訓練的輪次和損失值,上述的代碼輸出如下:

...
Epoch = 95, cost = 0.10514946877956391
Epoch = 96, cost = 0.10514946877956391
Epoch = 97, cost = 0.10514946877956391
Epoch = 98, cost = 0.10514946877956391
Epoch = 99, cost = 0.10514946877956391
Epoch = 100, cost = 0.10514946877956391
w = 1.98

3、邏輯回歸

邏輯回歸即用一根曲線近似表示一堆離散點的軌跡,如圖:

圖2圖2

import numpy as np
import torch
from torch import optim
from data_util import load_mnist

def build_model(input_dim, output_dim):
    return torch.nn.Sequential(
        torch.nn.Linear(
            input_dim, output_dim, bias=False)
    )

def train(model, loss, optimizer, x_val, y_val):
    model.train()
    optimizer.zero_grad()
    fx = model.forward(x_val)
    output = loss.forward(fx, y_val)
    output.backward()
    optimizer.step()
    return output.item()

def predict(model, x_val):
    model.eval()
    output = model.forward(x_val)
    return output.data.numpy().argmax(axis=1)

def main():
    torch.manual_seed(42)
    trX, teX, trY, teY = load_mnist(notallow=False)
    trX = torch.from_numpy(trX).float()
    teX = torch.from_numpy(teX).float()
    trY = torch.tensor(trY)

    n_examples, n_features = trX.size()
    n_classes = 10
    model = build_model(n_features, n_classes)
    loss = torch.nn.CrossEntropyLoss(reductinotallow='mean')
    optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
    batch_size = 100

    for i in range(100):
        cost = 0.
        num_batches = n_examples // batch_size
        for k in range(num_batches):
            start, end = k * batch_size, (k + 1) * batch_size
            cost += train(model, loss, optimizer,
                          trX[start:end], trY[start:end])
        predY = predict(model, teX)
        print("Epoch %d, cost = %f, acc = %.2f%%"
              % (i + 1, cost / num_batches, 100. * np.mean(predY == teY)))


if __name__ == "__main__":
    main()

(1)先從main函數開始,torch.manual_seed(42)上面有介紹,在此略過;

(2)load_mnist是自己實現下載mnist數據集,返回trX和teX是輸入數據,trY和teY是標簽數據;

(3)build_model內部實現:torch.nn.Sequential(torch.nn.Linear(input_dim, output_dim, bias=False))用于構建一個包含一個線性層的神經網絡模型,模型的輸入特征數量為input_dim,輸出特征數量為output_dim,且該線性層沒有偏置項,其中n_classes=10表示輸出10個分類;

(4)其他的步驟就是定義損失函數,梯度下降優化器,通過batch_size將訓練集拆分,循環100次進行train;

(5)optim.SGD(model.parameters(), lr=0.01, momentum=0.9)實現隨機梯度下降(Stochastic Gradient Descent,SGD)優化算法;

(6)每一輪訓練完成后,執行predict,該函數接受兩個參數model(訓練好的模型)和teX(需要預測的數據),步驟如下:

  • model.eval()模型設置為評估模式,這意味著模型將不會進行訓練,而是僅用于推理;
  • 將output轉換為NumPy數組,并使用argmax()方法獲取每個樣本的預測類別;

(7)print("Epoch %d, cost = %f, acc = %.2f%%" % (i + 1, cost / num_batches, 100. * np.mean(predY == teY)))最后打印當前訓練的輪次,損失值和acc,上述的代碼輸出如下(執行很快,但是準確率偏低):

...
Epoch 91, cost = 0.252863, acc = 92.52%
Epoch 92, cost = 0.252717, acc = 92.51%
Epoch 93, cost = 0.252573, acc = 92.50%
Epoch 94, cost = 0.252431, acc = 92.50%
Epoch 95, cost = 0.252291, acc = 92.52%
Epoch 96, cost = 0.252153, acc = 92.52%
Epoch 97, cost = 0.252016, acc = 92.51%
Epoch 98, cost = 0.251882, acc = 92.51%
Epoch 99, cost = 0.251749, acc = 92.51%
Epoch 100, cost = 0.251617, acc = 92.51%

4、神經網絡

一個經典的LeNet網絡,用于對字符進行分類,如圖:

圖3圖3

  • 定義一個多層的神經網絡
  • 對數據集的預處理并準備作為網絡的輸入
  • 將數據輸入到網絡
  • 計算網絡的損失
  • 反向傳播,計算梯度
import numpy as np
import torch
from torch import optim
from data_util import load_mnist

def build_model(input_dim, output_dim):
    return torch.nn.Sequential(
        torch.nn.Linear(input_dim, 512, bias=False),
        torch.nn.Sigmoid(),
        torch.nn.Linear(512, output_dim, bias=False)
    )

def train(model, loss, optimizer, x_val, y_val):
    model.train()
    optimizer.zero_grad()
    fx = model.forward(x_val)
    output = loss.forward(fx, y_val)
    output.backward()
    optimizer.step()
    return output.item()

def predict(model, x_val):
    model.eval()
    output = model.forward(x_val)
    return output.data.numpy().argmax(axis=1)

def main():
    torch.manual_seed(42)
    trX, teX, trY, teY = load_mnist(notallow=False)
    trX = torch.from_numpy(trX).float()
    teX = torch.from_numpy(teX).float()
    trY = torch.tensor(trY)

    n_examples, n_features = trX.size()
    n_classes = 10
    model = build_model(n_features, n_classes)
    loss = torch.nn.CrossEntropyLoss(reductinotallow='mean')
    optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
    batch_size = 100

    for i in range(100):
        cost = 0.
        num_batches = n_examples // batch_size
        for k in range(num_batches):
            start, end = k * batch_size, (k + 1) * batch_size
            cost += train(model, loss, optimizer,
                          trX[start:end], trY[start:end])
        predY = predict(model, teX)
        print("Epoch %d, cost = %f, acc = %.2f%%"
              % (i + 1, cost / num_batches, 100. * np.mean(predY == teY)))

if __name__ == "__main__":
    main()

(1)以上這段神經網絡的代碼與邏輯回歸沒有太多的差異,區別的地方是build_model,這里是構建一個包含兩個線性層和一個Sigmoid激活函數的神經網絡模型,該模型包含一個輸入特征數量為input_dim,輸出特征數量為output_dim的線性層,一個Sigmoid激活函數,以及一個輸入特征數量為512,輸出特征數量為output_dim的線性層;

(2)print("Epoch %d, cost = %f, acc = %.2f%%" % (i + 1, cost / num_batches, 100. * np.mean(predY == teY)))最后打印當前訓練的輪次,損失值和acc,上述的代碼輸入如下(執行時間比邏輯回歸要長,但是準確率要高很多):

...
Epoch 91, cost = 0.054484, acc = 97.58%
Epoch 92, cost = 0.053753, acc = 97.56%
Epoch 93, cost = 0.053036, acc = 97.60%
Epoch 94, cost = 0.052332, acc = 97.61%
Epoch 95, cost = 0.051641, acc = 97.63%
Epoch 96, cost = 0.050964, acc = 97.66%
Epoch 97, cost = 0.050298, acc = 97.66%
Epoch 98, cost = 0.049645, acc = 97.67%
Epoch 99, cost = 0.049003, acc = 97.67%
Epoch 100, cost = 0.048373, acc = 97.68%


責任編輯:華軒 來源: 周末程序猿
相關推薦

2023-11-02 14:30:25

機器學習

2013-12-03 13:05:30

Lua腳本語言

2014-06-20 10:51:35

Linux LVM邏輯卷

2011-06-03 08:49:54

Java

2023-10-20 14:08:35

digDNS

2010-05-26 10:42:20

SVN1.5配置

2021-01-05 09:55:46

TmateLinux命令

2009-08-06 17:45:08

C# Webservi

2010-12-15 12:48:26

VirtualBox

2009-09-02 17:38:19

C#開發GIS

2011-08-17 09:55:45

Objective-CCategory

2021-05-08 09:02:48

KubeBuilderOperatork8s

2021-05-11 09:31:31

kustomizeoperator kubernetes

2010-05-25 16:11:25

Git-SVN

2011-08-17 10:00:12

Objective-CProperty

2010-01-26 08:25:06

F#語法F#教程

2025-06-05 01:40:00

2009-07-03 13:45:48

JSP簡明教程組件為中心

2021-03-03 12:55:30

Python列表推導式代碼

2014-03-21 12:48:08

Java8Java8教程
點贊
收藏

51CTO技術棧公眾號

日韩中文字幕久久| 亚洲美女在线一区| 国产精品久久久久av免费| 日韩一级av毛片| 亚洲精品自拍| 亚洲成人av一区二区| 精品国产免费久久久久久尖叫| 亚洲免费黄色网址| 天堂美国久久| 日韩黄色av网站| 亚洲视频第二页| 2019中文字幕在线电影免费| 99国产欧美另类久久久精品| 国产欧美在线视频| 天天操天天爽天天干| 欧美jizz| 亚洲欧洲美洲在线综合| 欧美视频亚洲图片| 欧美艳星kaydenkross| 中文幕一区二区三区久久蜜桃| 成人av在线亚洲| 黄色片中文字幕| 欧美啪啪一区| 色偷偷偷亚洲综合网另类| 99re久久精品国产| 久久免费精品| 欧美亚洲日本国产| 91视频最新入口| а√天堂资源地址在线下载| 国产性做久久久久久| 国产一区二区三区色淫影院| 国产99久久九九精品无码免费| 久久久久.com| 91精品国产99| 久久免费视频99| 91精品国产自产拍在线观看蜜| 亚洲系列中文字幕| 捆绑凌虐一区二区三区| 超碰成人在线免费| 日韩欧美亚洲一区二区| 欧美国产日韩另类| 久久精品国产精品亚洲毛片| 色婷婷久久久综合中文字幕| 欧美大片在线播放| 岛国在线视频网站| 亚洲国产精品久久艾草纯爱| 超碰在线免费观看97| 在线观看麻豆| 国产精品福利av| 艳色歌舞团一区二区三区| 精品福利视频导航大全| 99久久久精品| 免费看成人午夜电影| 日本黄在线观看| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 91aaa精品| 国产精品毛片无码| 久久福利精品| 欧美美女15p| www欧美com| 亚洲精品97| 久久久av免费| 2025国产精品自拍| 欧美 日韩 国产一区二区在线视频| 日韩在线视频线视频免费网站| 狂野欧美性猛交| 日韩免费特黄一二三区| 精品国产一区二区三区在线观看| 亚洲av无一区二区三区| 亚洲一区二区日韩| 欧美高清一级大片| 国产成人无码精品| 亚洲欧美日韩视频二区| 日韩av大片免费看| 91麻豆一区二区| 国产高清成人在线| 黄色99视频| 国产在线超碰| 亚洲欧美一区二区久久| h无码动漫在线观看| 不卡视频观看| 在线观看日韩电影| 91香蕉国产线在线观看| 国产三级精品三级在线观看国产| 亚洲美女性生活视频| 日韩欧美黄色网址| 欧美欧美全黄| 日韩美女免费观看| 国产日韩欧美视频在线观看| 99亚偷拍自图区亚洲| 日韩尤物视频| 最新av在线播放| 红桃av永久久久| 亚洲欧美aaa| 乱亲女h秽乱长久久久| 日韩精品视频观看| 四虎永久免费在线| 狂野欧美一区| 91手机在线视频| 韩国免费在线视频| 亚洲精品成人悠悠色影视| 黄色www网站| vam成人资源在线观看| 日韩精品高清视频| 中文字幕影音先锋| 视频在线观看一区二区三区| 91手机在线观看| aaa在线免费观看| 亚洲va天堂va国产va久| 天天操天天干天天做| 亚洲人成伊人成综合图片| 久久国产天堂福利天堂| 在线精品免费视| 国产精品一二二区| 一区二区三区四区| 日本欧美日韩| 日韩经典中文字幕| 久久香蕉精品视频| 久久99精品久久久久久久久久久久| 精品欧美日韩| 毛片在线播放a| 在线这里只有精品| 人妻体内射精一区二区三区| 欧美电影三区| 国产成人鲁鲁免费视频a| 日韩一级免费视频| 一区二区三区四区乱视频| 邪恶网站在线观看| 精品国产精品国产偷麻豆| 午夜精品美女自拍福到在线| www.成人在线观看| 最新国产の精品合集bt伙计| 亚洲欧美激情网| 国产成人精品免费视| 久久久久中文字幕2018| 草草视频在线播放| 亚洲欧美日韩一区二区| 天天操天天干天天做| 久久一级电影| 国产日韩精品入口| 日本不卡视频| 欧美日本一区二区在线观看| 国产精品久久久久久久av| 日韩激情视频在线观看| 青娱乐一区二区| 一区二区三区电影大全| 亚洲天堂影视av| 国产污视频网站| 国产日本欧美一区二区| 免费日韩中文字幕| 大胆日韩av| 国产精品亚发布| 久久77777| 欧美一区二区三区视频免费播放 | 精品国产一级毛片| 日韩美女主播视频| 国产高清av在线| 欧美影院一区二区三区| jizzjizzjizz国产| 国产一区二区在线观看免费| 日本精品福利视频| 久久偷拍免费视频| 思思99re6国产在线播放| 欧美三级日本三级少妇99| 国产激情av在线| 久国产精品韩国三级视频| 最近中文字幕免费mv| 久久天堂久久| 欧美大片网站在线观看| 日韩专区一区二区| 在线精品视频小说1| 亚洲a∨无码无在线观看| 国产综合久久久久久久久久久久 | 国产三级视频在线播放线观看| 色吊一区二区三区 | 偷拍日韩校园综合在线| 国产精品第七页| 石原莉奈在线亚洲三区| 综合色婷婷一区二区亚洲欧美国产| 精品999日本久久久影院| 久久久久久一区二区三区| 日韩av资源| 欧美日韩国产天堂| 久久久精品国产sm调教| 久久久亚洲精品一区二区三区| 天天干天天干天天干天天干天天干| 999视频精品| 激情小说综合区| 久久亚洲精品中文字幕| 久久全国免费视频| 高清性色生活片在线观看| 欧美一区二区免费视频| 91精品国产综合久久久蜜臀九色 | 亚洲精品影院| 高潮按摩久久久久久av免费| 日本一区二区在线播放| av网址在线| 国产一区二区三区在线免费观看| 国产夫妻自拍av| 91成人国产精品| 国产精品6666| 中文一区二区在线观看| 国产又黄又粗又猛又爽的视频| 激情综合五月天| 午夜精品久久久内射近拍高清| 亚洲午夜精品一区 二区 三区| 免费精品视频一区| 成人性生交大片免费看96| 国产日韩欧美日韩| 一个人www视频在线免费观看| 欧美大胆a视频| 99视频免费观看蜜桃视频| 日韩高清中文字幕一区二区| 欧美激情综合色| 在线看的av网站| 亚洲视频第一页| 午夜18视频在线观看| 日韩欧美的一区| 一级片在线观看视频| 色噜噜狠狠色综合欧洲selulu| 日本网站在线免费观看| 亚洲日本青草视频在线怡红院 | 78色国产精品| 日韩少妇视频| 久久精品99国产精品酒店日本| 激情福利在线| 国产视频亚洲精品| 殴美一级特黄aaaaaa| 日韩三级在线观看| 国产精品亚洲lv粉色| 在线观看亚洲专区| 久久精品视频7| 图片区小说区国产精品视频| 精品一级少妇久久久久久久| 亚洲少妇30p| 91精品少妇一区二区三区蜜桃臀| 欧美激情一区二区三区不卡| 蜜桃av乱码一区二区三区| 久久久美女毛片| 久久久久亚洲av无码专区桃色| 91亚洲国产成人精品一区二区三| 国产精品久久久久久在线观看| 国产成人一级电影| 丰满人妻一区二区三区大胸| 国产精品一区二区无线| 国产精品熟女一区二区不卡| 国产成人在线视频播放| 色哟哟免费视频| 国产69精品久久久久毛片| 免费黄色在线播放| av亚洲精华国产精华精| 中文字幕精品视频在线| 91视频免费看| 91精品人妻一区二区三区蜜桃欧美| 久久久久久久久久久久久夜| 久久久久无码精品国产sm果冻| 国产无人区一区二区三区| 小早川怜子久久精品中文字幕| 国产欧美日韩激情| 亚洲av无一区二区三区| 亚洲欧美另类图片小说| 亚洲精品午夜久久久久久久| 精品国产鲁一鲁一区二区张丽| 国产九色在线播放九色| 色婷婷激情久久| 亚洲最新av网站| 日韩一区二区精品葵司在线| 秋霞网一区二区| 亚洲另类欧美自拍| 午夜激情视频在线| 欧美日韩成人在线视频| 漫画在线观看av| 国产精品久久久久久久av电影| 99re8精品视频在线观看| 不卡一卡2卡3卡4卡精品在| 欧美国产不卡| 日韩亚洲不卡在线| 欧美jizzhd精品欧美巨大免费| 人妻无码久久一区二区三区免费| 美女国产一区| 国内av免费观看| 99久久久国产精品免费蜜臀| 手机免费观看av| 亚洲午夜成aⅴ人片| 看黄色一级大片| 日韩午夜在线播放| 免费一级在线观看| 久久综合久久美利坚合众国| 激情国产在线| 成人黄色中文字幕| 噜噜噜天天躁狠狠躁夜夜精品| 一区二区三区四区五区精品| 极品日韩av| 一级黄色特级片| 99国产精品国产精品久久| 免费成人美女女在线观看| 午夜精品久久久久久久蜜桃app| 中文字幕人妻色偷偷久久| 亚洲а∨天堂久久精品喷水 | 国产午夜精品理论片a级大结局| 欧美日韩在线观看免费| 色播五月激情综合网| 国产成人精品无码高潮| 亚洲日本欧美日韩高观看| 午夜小视频在线观看| 国产精品网站视频| 琪琪久久久久日韩精品| 欧美大片免费播放| 日本美女一区二区三区视频| 欧美肉大捧一进一出免费视频| 国产精品美女一区二区| 日韩色图在线观看| 日韩精品一区二区在线| 丝袜美腿美女被狂躁在线观看| 欧美在线视频导航| 国产精品45p| 色一情一乱一乱一区91| 久久精品国内一区二区三区| 久久国产精品影院| 亚洲狼人国产精品| 国产精品人人妻人人爽| 在线播放亚洲激情| 黑人巨大精品欧美一区二区桃花岛| 动漫一区二区在线| 亚洲精品午夜av福利久久蜜桃| 特级丰满少妇一级| 久久久久久综合| 亚洲成人av影片| 精品亚洲国产视频| 九色porny自拍视频在线播放| 99在线高清视频在线播放| 91精品在线观看国产| 欧美三级午夜理伦三级富婆| 国产视频一区二区在线观看| 国产无套丰满白嫩对白| 亚洲精品色婷婷福利天堂| 欧美激情20| 精品网站在线看| 日韩视频二区| 在线精品一区二区三区| 欧美日韩国产在线| 五月婷婷久久久| 911国产网站尤物在线观看| 麻豆成人入口| 精品欧美一区免费观看α√| 99免费精品视频| 国产91精品看黄网站在线观看| 亚洲另类xxxx| 国产成人精选| 一区二区三区电影| 国产在线国偷精品产拍免费yy| 成年人午夜剧场| 日韩免费电影网站| 国产蜜臀av在线播放| 国产一区二区无遮挡| 国产精品入口66mio| 播金莲一级淫片aaaaaaa| 色婷婷久久久亚洲一区二区三区| 成年人在线看| 91精品啪aⅴ在线观看国产| 欧美日韩成人| 人妻在线日韩免费视频| 色妹子一区二区| 求av网址在线观看| 亚洲bt欧美bt日本bt| 在线成人黄色| 在线免费观看日韩av| 欧美福利视频导航| 毛片在线导航| 欧美裸体网站| 久久99久久99小草精品免视看| avove在线播放| 日韩精品视频在线播放| 欧亚一区二区| 米仓穗香在线观看| 91视频观看视频| 又色又爽又黄无遮挡的免费视频| 精品自拍视频在线观看| 青草久久视频| 国产乱叫456| 精品成人乱色一区二区| 99视频在线观看地址| 99精彩视频| 久久中文在线| 久久久久久久久毛片| 亚洲欧美日韩国产中文专区| 四虎国产精品永久在线国在线| 亚洲人成无码网站久久99热国产| 久久精品视频在线看| 精品毛片在线观看| 日韩av成人在线观看| 欧美天堂亚洲电影院在线观看 | 亚洲美女免费在线| 日本黄在线观看| **亚洲第一综合导航网站| 先锋a资源在线看亚洲| 欧美亚洲日本在线| 亚洲女人天堂视频| 无人区乱码一区二区三区| 欧美精品成人网|