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

在 CIFAR10 數據集上訓練 Vision Transformer (ViT)

開發 后端
在這篇文章中,我將構建一個簡單的 ViT 并將其訓練在 CIFAR 數據集上,我們從訓練 CIFAR 數據集上的模型的樣板代碼開始

在這篇簡短的文章中,我將構建一個簡單的 ViT 并將其訓練在 CIFAR 數據集上。

訓練循環

我們從訓練 CIFAR 數據集上的模型的樣板代碼開始。我們選擇批量大小為64,以在性能和 GPU 資源之間取得平衡。我們將使用 Adam 優化器,并將學習率設置為0.001。與 CNN 相比,ViT 收斂得更慢,所以我們可能需要更多的訓練周期。此外,根據我的經驗,ViT 對超參數很敏感。一些超參數會使模型崩潰并迅速達到零梯度,模型的參數將不再更新。因此,您必須測試與模型大小和形狀本身以及訓練超參數相關的不同超參數。

transform_train = transforms.Compose([
    transforms.Resize(32),
    transforms.ToTensor(),
    transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
])

transform_test = transforms.Compose([
    transforms.Resize(32),
    transforms.ToTensor(),
    transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
])

train_set = CIFAR10(root='./datasets', train=True, download=True, transform=transform_train)
test_set = CIFAR10(root='./datasets', train=False, download=True, transform=transform_test)

train_loader = DataLoader(train_set, shuffle=True, batch_size=64)
test_loader = DataLoader(test_set, shuffle=False, batch_size=64)
n_epochs = 100
lr = 0.0001

optimizer = Adam(model.parameters(), lr=lr)
criterion = CrossEntropyLoss()

for epoch in range(n_epochs):
    train_loss = 0.0
    for i,batch in enumerate(train_loader):
        x, y = batch
        x, y = x.to(device), y.to(device)
        y_hat, _ = model(x)
        loss = criterion(y_hat, y)

        batch_loss = loss.detach().cpu().item()
        train_loss += batch_loss / len(train_loader)

        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        if i%100==0:
          print(f"Batch {i}/{len(train_loader)} loss: {batch_loss:.03f}")
    
    print(f"Epoch {epoch + 1}/{n_epochs} loss: {train_loss:.03f}")

構建 ViT

如果您熟悉注意力和transforms塊,ViT 架構就很容易理解。簡而言之,我們將使用 Pytorch 提供的多頭注意力,視覺transforms的第一部分是將圖像分割成相同大小的塊。如您所知,transforms作用于標記,而不是像在 CNN 中那樣卷積特征。在我們的例子中,圖像塊充當標記。

有很多方法可以對圖像進行分塊。有些人手動進行,這不符合 Python 的風格。其他人使用卷積。還有些人使用 Pytorch 提供的張量操作工具。我們將使用 Pytorch nn 模塊提供的 unfold 層作為我們 Patcher 模塊的核心。

該模塊作用于形狀為 (N, 3, 32, 32) 的張量。其中 N 是每批圖像的數量。3 是通道數,因為我們處理的是 RGB 圖像。32 是圖像的大小,因為我們處理的是 CIFAR10 數據集。我們可以測試我們的模塊,以確保它將上述形狀轉換為分塊張量。新張量的形狀取決于補丁大小。如果我們選擇補丁大小為4,輸出形狀將是 (N, 64, 3, 4, 4),其中 64 是每張圖像的補丁數量。

class Patcher(nn.Module):
  def __init__(self, patch_size):
    super(Patcher, self).__init__()

    self.patch_size=patch_size

    self.unfold = torch.nn.Unfold(kernel_size=patch_size, stride=patch_size)

  def forward(self, images):
    batch_size, channels, height, width = images.shape

    patch_height, patch_width = [self.patch_size, self.patch_size]
    assert height % patch_height == 0 and width % patch_width == 0, "Height and width must be divisible by the patch size."

    patches = self.unfold(images) #bs (cxpxp) N
    patches = patches.view(batch_size, channels, patch_height, patch_width, -1).permute(0, 4, 1, 2, 3) # bs N C P P

    return patches
x = torch.rand((10, 3, 32, 32))
x = Patcher(patch_size=4)(x)
x.shape
# torch.Size([10, 64, 3, 4, 4])

在語言處理中,標記通過詞嵌入投影到 d 維向量中。這個超參數 d 是transforms模型的特征,選擇合適的維度大小對于模型的轉換很重要。太大,模型會崩潰。太小,模型將無法很好地訓練。因此,到目前為止,我們的 ViT 模塊形狀將如下所示:

class ViT_RGB(nn.Module):
  def __init__(self, img_size, patch_size, model_dim= 100):
    super().__init__()

    self.img_size = img_size
    self.patch_size = patch_size
    self.n_patches = (self.img_size // self.patch_size) ** 2
    self.model_dim = model_dim

    # 1) Patching
    self.patcher = Patcher(patch_size=self.patch_size)

    # 2) Linear Prjection
    self.linear_projector = nn.Linear( 3 * self.patch_size ** 2, self.model_dim)

  def forward(self, x):

    x = self.patcher(x)

    x = x.flatten(start_dim=2)

    x = self.linear_projector(x)

    return x

我們將圖像 (N, 3, 32, 32) 分割成大小為4的補丁 (N, 64, 3, 4, 4),然后我們將它們展平為 (N, 64, 344=48)。之后,我們使用 Pytorch 的 Linear 模塊將它們投影到大小為 (N, 64, 100)。

即使在將輸入喂入transforms塊之后,整個模塊的輸出大小也將是 (N, n_patches, model_dim)。現在我們有很多投影和關注的補丁,應該使用哪個補丁進行預測?一種常見的方法是計算所有補丁的平均值,然后使用平均向量進行預測。然而,對于transforms,現在正在廣泛使用另一種技巧。那就是添加一個 [cls] 一個新的標記到輸入中。輔助標記最終將用于預測。它將作用于模型對整個圖像的理解。該標記只是一個大小為 (1, model_dim) 的參數向量。現在,整個模塊的輸出將是 (N, n_patches+1, model_dim)。

class ViT_RGB(nn.Module):
  def __init__(self, img_size, patch_size, model_dim= 100):
    super().__init__()
    self.img_size = img_size
    self.patch_size = patch_size
    self.n_patches = (self.img_size // self.patch_size) ** 2
    self.model_dim = model_dim

    # 1) Patching
    self.patcher = Patcher(patch_size=self.patch_size)

    # 2) Linear Prjection
    self.linear_projector = nn.Linear( 3 * self.patch_size ** 2, self.model_dim)

    # 3) Class Token
    self.class_token = nn.Parameter(torch.rand(1, self.model_dim))


  def forward(self, x):

    x = self.patcher(x)

    x = x.flatten(start_dim=2)

    x = self.linear_projector(x)

    batch_size = x.shape[0]
    class_token = self.class_token.expand(batch_size, -1, -1)
    x = torch.cat((class_token, x), dim=1)

    return x

在添加了類標記之后,我們仍然需要添加位置編碼部分。transforms操作在一系列標記上,它們對序列順序視而不見。為了確保在訓練中加入順序,我們手動添加位置編碼。因為我們處理的是大小為 model_dim 的向量,我們不能簡單地添加順序 [0, 1, 2, …],位置應該是模型固有的,這就是為什么我們使用所謂的位置編碼。這個向量可以手動設置或訓練。在我們的例子中,我們將簡單地訓練一個位置嵌入,它只是一個大小為 (1, n_patches+1, model_dim) 的向量。我們將這個向量添加到完整的補丁序列中,以及類標記。如前所述,為了計算模型的輸出,我們簡單地對嵌入的第一個標記(類標記)應用一個帶有 SoftMax 層的 MLP,以獲得類別的對數幾率。

class ViT_RGB(nn.Module):
  def __init__(self, img_size, patch_size, model_dim= 100,n_classes=10):
    super().__init__()
    self.img_size = img_size
    self.patch_size = patch_size
    self.n_patches = (self.img_size // self.patch_size) ** 2
    self.model_dim = model_dim

    # 1) Patching
    self.patcher = Patcher(patch_size=self.patch_size)

    # 2) Linear Prjection
    self.linear_projector = nn.Linear( 3 * self.patch_size ** 2, self.model_dim)

    # 3) Class Token
    self.class_token = nn.Parameter(torch.rand(1, 1, self.model_dim))

    # 4) Positional Embedding
    self.positional_embedding = nn.Parameter(torch.rand(1,(img_size // patch_size) ** 2 + 1, model_dim))

    # 6) Classification MLP
    self.mlp = nn.Sequential(
            nn.Linear(self.model_dim, self.n_classes),
            nn.Softmax(dim=-1)
      )

  def forward(self, x):

    x = self.patcher(x)

    x = x.flatten(start_dim=2)
    x = self.linear_projector(x)

    batch_size = x.shape[0]
    class_token = self.class_token.expand(batch_size, -1, -1)
    x = torch.cat((class_token, x), dim=1)

    x = x + self.positional_embedding

    latent = x[:, 0]
    logits = self.mlp(latent)

    return logits

transforms塊

之前的代碼沒有包括非常重要的transforms塊。transforms塊是大小保持塊,它們通過交叉組成序列的標記本身來豐富信息序列。transforms塊的核心模塊是注意力模塊(同樣,您可以查看我關于注意力的帖子)。為了使模型更豐富地處理信息,我們通常使用多頭注意力。為了使模型吸收越來越抽象的信息,我們應用了幾個transforms塊。使用的頭數和transforms塊的數量是transforms模型的特征。我們稱使用的transforms塊數量為模型的 depth。

class TransformerBlock(nn.Module):
    def __init__(self, model_dim, num_heads, mlp_ratio=4.0, dropout=0.1):
        super(TransformerBlock, self).__init__()
        self.norm1 = nn.LayerNorm(model_dim)
        self.attn = nn.MultiheadAttention(model_dim, num_heads, dropout=dropout)
        self.norm2 = nn.LayerNorm(model_dim)

        # Feedforward network
        self.mlp = nn.Sequential(
            nn.Linear(model_dim, int(model_dim * mlp_ratio)),
            nn.GELU(),
            nn.Linear(int(model_dim * mlp_ratio), model_dim),
            nn.Dropout(dropout),
        )

    def forward(self, x):
        # Self-attention
        x = self.norm1(x)
        attn_out, _ = self.attn(x, x, x)
        x = x + attn_out

        # Feedforward network
        x = self.norm2(x)
        mlp_out = self.mlp(x)
        x = x + mlp_out

        return x
class ViT_RGB(nn.Module):
  def __init__(self, img_size, patch_size, model_dim= 100, num_heads=3, num_layers=2, n_classes=10):
    super().__init__()
    self.img_size = img_size
    self.patch_size = patch_size
    self.n_patches = (self.img_size // self.patch_size) ** 2
    self.model_dim = model_dim
    self.num_layers = num_layers
    self.num_heads= num_heads
    self.n_classes = n_classes

    # 1) Patching
    self.patcher = Patcher(patch_size=self.patch_size)

    # 2) Linear Prjection
    self.linear_projector = nn.Linear( 3 * self.patch_size ** 2, self.model_dim)

    # 3) Class Token
    self.class_token = nn.Parameter(torch.rand(1, 1, self.model_dim))

    # 4) Positional Embedding
    self.positional_embedding = nn.Parameter(torch.rand(1,(img_size // patch_size) ** 2 + 1, model_dim))

    # 5) Transformer blocks
    self.blocks = nn.ModuleList([
        TransformerBlock( self.model_dim,  self.num_heads) for _ in range(num_layers)
    ])

    # 6) Classification MLPk
    self.mlp = nn.Sequential(
            nn.Linear(self.model_dim, self.n_classes),
            nn.Softmax(dim=-1)
        )

  def forward(self, x):

    x = self.patcher(x)

    x = x.flatten(start_dim=2)
    x = self.linear_projector(x)

    batch_size = x.shape[0]
    class_token = self.class_token.expand(batch_size, -1, -1)
    x = torch.cat((class_token, x), dim=1)

    x = x + self.positional_embedding

    for block in self.blocks:
      x = block(x)

    latent = x[:, 0]
    logits = self.mlp(latent)

    return logits

最后,我們為訓練和測試準備好了模型,并放置了所有必要的組件。然而,在實踐中,我無法通過在類標記上應用 MLP 層使模型收斂。我不確定為什么——如果你知道,請告訴我。相反,我在整個圖像補丁的平均向量上應用了 MLP。

責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2024-12-18 08:00:00

2023-08-14 07:42:01

模型訓練

2023-02-02 13:22:40

AICIFAR數據集

2024-07-17 09:27:28

2022-07-06 13:13:36

SWIL神經網絡數據集

2024-11-21 16:06:02

2018-04-11 09:30:41

深度學習

2024-06-20 08:52:10

2022-02-08 15:43:08

AITransforme模型

2022-05-30 11:39:55

論文谷歌AI

2021-09-10 16:53:28

微軟瀏覽器Windows

2023-09-12 13:59:41

OpenAI數據集

2022-09-20 23:42:15

機器學習Python數據集

2021-10-29 14:14:26

AI數據人工智能

2025-04-08 13:12:49

2025-03-10 09:30:00

2025-07-03 15:37:32

2024-07-01 12:55:50

2024-12-05 08:30:00

2021-07-13 17:59:13

人工智能機器學習技術
點贊
收藏

51CTO技術棧公眾號

日韩性xxxx| 欧美丰满艳妇bbwbbw| 国产v综合v| 中文字幕日韩av资源站| www.成人av.com| 91浏览器在线观看| 日本大胆欧美| 欧美精品一区二区三区很污很色的| 欧美视频在线观看网站| av二区在线| 国产成人福利片| 国产a∨精品一区二区三区不卡| 久久成人小视频| 4438全国亚洲精品观看视频| 在线观看欧美日本| av网站手机在线观看| 最新av网站在线观看| 99久久精品费精品国产一区二区| 国产精品一区二区三区在线播放| 国产无码精品视频| 五月激情久久久| 亚洲天堂av图片| 性欧美丰满熟妇xxxx性久久久| 亚洲视频资源| 精品视频一区 二区 三区| 你真棒插曲来救救我在线观看| 91青青在线视频| 久久综合色一综合色88| 国产精品区一区二区三含羞草| 亚洲一级在线播放| 久久一区中文字幕| 97人人爽人人喊人人模波多| 国产一区二区精彩视频| 精品盗摄女厕tp美女嘘嘘| 亚洲成人a级网| 91视频福利网| 91精品国产色综合久久不卡粉嫩| 在线亚洲欧美专区二区| 黑森林福利视频导航| 青青青国产在线视频| 国产日韩一级片| 麻豆成人91精品二区三区| 日产日韩在线亚洲欧美| 青青操免费在线视频| 国一区二区在线观看| 久久国产精彩视频| 在线观看美女av| 国产精品99一区二区三| 日韩中文字幕免费| 免费看的黄色录像| 欧美wwwww| 在线看片第一页欧美| 日韩免费成人av| 精品久久电影| 亚洲一品av免费观看| 国产精品免费无码| 欧美影院三区| www亚洲欧美| 希岛爱理中文字幕| 欧美精品入口| 欧美多人乱p欧美4p久久| 九九九久久久久| 国产精品v亚洲精品v日韩精品| 欧美精品一区二区三区国产精品| 欧美日韩激情在线观看| 日韩午夜在线| 人人澡人人澡人人看欧美| 一级黄色在线视频| 免费xxxx性欧美18vr| 成人精品久久久| 性猛交富婆╳xxx乱大交天津| 成人一区二区三区视频 | 日日夜夜天天综合| 欧美中文字幕久久| 91丝袜超薄交口足| 国产精品玖玖玖在线资源| 日韩av一卡二卡| 亚洲精品成人av久久| 天天综合网网欲色| 国a精品视频大全| 国产性生活视频| 九色综合狠狠综合久久| 99电影在线观看| 日韩一区二区三区中文字幕| 欧美高清一级片在线观看| 99热都是精品| 亚洲欧美小说色综合小说一区| 欧美亚洲一区二区在线| 日韩精品xxx| 国产精品一区二区三区av麻| 久久国产精品影视| 欧美日韩乱国产| 久久er精品视频| 国产一区视频观看| 日本高清视频在线播放| 精品成人av一区| 图片区乱熟图片区亚洲| 九九热线有精品视频99| 美女福利视频一区| 国产91国语对白在线| 国产一区二区看久久| 开心色怡人综合网站| 免费观看在线午夜影视| 欧美性猛交丰臀xxxxx网站| 亚洲一级片av| 欧洲专线二区三区| 国语自产精品视频在线看| 在线观看免费黄色小视频| av资源站一区| 青青草免费在线视频观看| 亚洲欧美一区二区三区| 精品黑人一区二区三区久久| 调教驯服丰满美艳麻麻在线视频| 亚洲免费大片| 3d动漫精品啪啪一区二区三区免费| 国产中文在线视频| 午夜精品久久一牛影视| 中文字幕1区2区| 亚洲成人一区| 国产免费亚洲高清| 蜜桃视频在线播放| 午夜欧美一区二区三区在线播放| 中文字幕一区二区在线观看视频| 欧美日韩性在线观看| 欧美一级黄色网| 少妇人妻一区二区| 亚洲国产视频在线| www.亚洲自拍| 亚洲乱码电影| 国产欧美亚洲视频| eeuss影院www在线观看| 色88888久久久久久影院野外 | 11024精品一区二区三区日韩| 91一区二区在线观看| av日韩一区二区三区| 超碰成人福利| 久久久久久国产| 亚洲第一天堂在线观看| 亚洲精品va在线观看| 爱情岛论坛亚洲自拍| 911久久香蕉国产线看观看| 国产欧美精品日韩精品| 日本视频在线播放| 欧美日韩高清一区二区不卡| 日韩欧美视频免费观看| 蜜桃av噜噜一区| 亚洲一区二区不卡视频| 成人精品国产亚洲| 综合av色偷偷网| 国产精品嫩草影院精东| 综合久久给合久久狠狠狠97色| 国产一级片自拍| 99精品电影| 91久久久久久久久久| www在线免费观看视频| 日韩欧美一区在线| 黄色小说在线观看视频| 91欧美激情一区二区三区成人| 国产免费成人在线| 精品国产精品久久一区免费式| 国产精品高潮呻吟久久av无限| yw视频在线观看| 这里只有精品视频在线观看| 欧美成人免费观看视频 | 亚洲不卡的av| 国产一区二区成人久久免费影院| 成人av在线不卡| 人人香蕉久久| 国产精品日韩久久久久| av电影在线播放高清免费观看| 欧美丰满嫩嫩电影| 精品一区在线视频| 久久久久99精品一区| 日本在线播放一区二区| 好看的亚洲午夜视频在线| 久久久久久久久一区| 九七电影院97理论片久久tvb| 久久夜精品香蕉| 性感美女福利视频| 欧美日韩国产小视频在线观看| 久久久久无码国产精品不卡| 26uuu亚洲| 伊人网在线综合| 99精品视频免费| 一本色道久久综合亚洲精品婷婷| 高清日韩欧美| 国产精品人成电影| www.综合网.com| 在线播放亚洲激情| 免费观看毛片网站| 欧美日韩成人综合| 久草视频在线观| 亚洲色图制服诱惑| 亚洲a v网站| 国产成人高清在线| 怡红院亚洲色图| 亚洲专区免费| 久久精品在线免费视频| 国产亚洲电影| 国产一区视频观看| 精品中文在线| 国产精品私拍pans大尺度在线| 国产精品探花在线| 日韩三级影视基地| 韩国中文免费在线视频| 精品国产免费人成在线观看| 亚洲香蕉在线视频| 91精品福利在线| 日韩aaaaaa| 亚洲人成7777| 日本黄区免费视频观看| 久久尤物电影视频在线观看| 欧美老女人bb| 国产美女精品人人做人人爽| 熟妇人妻无乱码中文字幕真矢织江| 韩日成人在线| 超薄肉色丝袜足j调教99| 成人a'v在线播放| a黄色片在线观看| 国产精品免费视频一区| 精品少妇人妻av一区二区三区| 精品一区二区三区在线播放| 久久精品香蕉视频| 日韩视频免费| 黄色特一级视频| 小处雏高清一区二区三区| 久久综合婷婷综合| 理论片一区二区在线| 超碰在线97av| 日韩免费精品| 91日韩在线播放| 色8久久久久| 国产精品视频导航| 成人网ww555视频免费看| 欧亚精品中文字幕| 成人av免费电影网站| 66m—66摸成人免费视频| 视频在线观看入口黄最新永久免费国产| 久久国内精品一国内精品| 日韩免费网站| 久久精品视频网站| 成人在线观看亚洲| 欧美成人精品一区二区三区| 菠萝蜜视频国产在线播放| 久久中文字幕国产| 色综合999| 欧美黑人一级爽快片淫片高清| 欧洲成人综合网| 欧美高清激情视频| av中文字幕在线观看第一页| 97香蕉久久超级碰碰高清版| 欧美少妇精品| 国产成+人+综合+亚洲欧美丁香花| 久久野战av| 国产在线视频2019最新视频| 国产精品国产三级在线观看| 91久久精品www人人做人人爽| 爱爱精品视频| 欧美国产一区二区在线| 欧美特黄一级大片| 国产免费一区二区三区四在线播放| 欧美1区2区视频| 午夜免费福利小电影| 三级欧美韩日大片在线看| 手机看片福利日韩| 国产一区二区三区av电影| 亚洲少妇一区二区三区| 91免费国产视频网站| 久久丫精品忘忧草西安产品| 国产精品二区一区二区aⅴ污介绍| 在线观看成人毛片| 婷婷国产在线综合| 成人黄色激情视频| 日韩一区二区三区高清免费看看| 婷婷丁香一区二区三区| 在线电影中文日韩| 欧洲成人综合网| 国产精品激情av在线播放| 欧美极品在线| 狠狠色综合色区| 欧美一区2区| 国产真人做爰毛片视频直播| 日日摸夜夜添夜夜添精品视频| 免费成年人高清视频| www.av精品| 在线免费看视频| 亚洲成人tv网| 一区两区小视频| 亚洲精品国产精品久久清纯直播| av小片在线| 高清一区二区三区四区五区| 久久91视频| 韩国成人av| 亚洲精品97| 欧美成人精品欧美一级乱| 国产一区二区不卡| 性猛交ⅹxxx富婆video| 亚洲成a天堂v人片| 亚洲无码精品在线播放| 亚洲国产精品久久久| 在线视频1区2区| 欧美又大又硬又粗bbbbb| 欧美经典一区| 亚洲精品日韩精品| 免费精品视频| av av在线| 亚洲色图19p| 中文字幕一区二区三区波野结| 亚洲精品videossex少妇| 国产日产一区二区三区| 国产精品成人品| 一区三区在线欧| 国内精品视频一区二区三区| 精品一区中文字幕| 在线观看国产精品一区| 精品国产电影一区| 性猛交xxxx乱大交孕妇印度| 日韩中文字幕免费| 欧美aaa大片视频一二区| 极品尤物一区二区三区| 国内精品美女在线观看| 伊人免费视频二| 中文字幕在线播放不卡一区| 久久久精品视频网站| 亚洲黄页网在线观看| 国精产品一区一区三区mba下载| 91亚洲精品久久久久久久久久久久| 国产一区二区三区探花| 久久久久狠狠高潮亚洲精品| 91在线丨porny丨国产| 日本天堂中文字幕| 日韩一区二区三区电影在线观看 | 国产+成+人+亚洲欧洲在线| 免费成人进口网站| 国产在线精品视频| 亚洲波多野结衣| 欧美一区二区免费| 1769免费视频在线观看| 成人免费在线视频网址| 91一区二区| 成年人网站av| 亚洲一区在线看| 韩国av免费在线| 久久人人爽人人爽人人片av高请 | 国产酒店精品激情| 一区二区成人免费视频| 欧美一二三区在线观看| 性爱视频在线播放| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 日韩激情av| 粉嫩高清一区二区三区精品视频| 黑人一区二区| 女~淫辱の触手3d动漫| 在线看不卡av| huan性巨大欧美| 国产精品免费在线播放| 久久国产直播| 在线免费看视频| 欧美一区二区在线不卡| av在线最新| 日韩欧美精品一区二区| 精品亚洲免费视频| 久久久久性色av无码一区二区| 亚洲激情免费观看| 电影亚洲精品噜噜在线观看| 亚欧精品在线| 国产传媒日韩欧美成人| 国产女同在线观看| 在线视频精品一| 欧美日韩中出| 日韩少妇内射免费播放18禁裸乳| 久久久夜色精品亚洲| 中文字幕有码视频| 欧美乱妇40p| 亚洲另类av| 精品国产鲁一鲁一区二区三区| 黄色成人在线免费| 欧美边添边摸边做边爱免费| 国产精品午夜av在线| 日韩精品一二三| 麻豆疯狂做受xxxx高潮视频| 亚洲乱码av中文一区二区| 国产成人免费视频网站视频社区| 日韩中文字幕在线免费| 国产精品久久午夜| 天堂中文资源在线观看| 国产欧美在线观看| 一区二区久久| 亚洲欧美综合7777色婷婷| 亚洲成人亚洲激情| 久久亚洲精品中文字幕| 成熟了的熟妇毛茸茸| 成人欧美一区二区三区视频网页| 五月激情六月婷婷| 91久久久久久国产精品| 日日骚欧美日韩| 欧美成人精品欧美一级乱黄| 日韩视频免费大全中文字幕| 五月天亚洲一区| 久久久无码人妻精品无码|