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

快速學習一個算法,Transformer

人工智能
Transformer 模型是由 Vaswani 等人在 2017 年提出的一種用于自然語言處理的深度學習模型,特別擅長于處理序列到序列的任務,如機器翻譯、文本生成等。

大家好,我是小寒

今天給大家介紹一個強大的算法模型,Transformer

Transformer 模型是由 Vaswani 等人在 2017 年提出的一種用于自然語言處理的深度學習模型,特別擅長于處理序列到序列的任務,如機器翻譯、文本生成等。

今天,我們主要從編碼的角度來進行說明。

Transformer 模型架構

Transformer 模型由編碼器(Encoder)和解碼器(Decoder)兩部分組成,每部分包含多個相同的層 (Layer) 堆疊而成。

圖片圖片


編碼器

編碼器由 N 個相同的層組成,每個層包括以下兩個子層:

  1. 多頭自注意力機制(Multi-Head Self-Attention Mechanism)
  2. 前饋神經網絡(Feed-Forward Neural Network)

每個子層都采用殘差連接 (Residual Connection) 和層歸一化 (Layer Normalization)。

解碼器

解碼器也由 N 個相同的層組成,每個層包括以下三個子層:

  1. 多頭自注意力機制(Masked Multi-Head Self-Attention Mechanism)
  2. 編碼器-解碼器注意力機制(Encoder-Decoder Attention Mechanism)
  3. 前饋神經網絡(Feed-Forward Neural Network)

同樣,每個子層都采用殘差連接和層歸一化。

Transformer 模型的主要組件

  1. Token Embedding
    將輸入的離散單詞轉換為連續(xù)的向量表示。
  2. 位置編碼
    在輸入序列中引入位置信息,因為 Transformer 本身沒有順序依賴,需要位置編碼來幫助模型識別序列的順序。
  3. 多頭自注意力
    計算 token 之間的注意力分數,使模型能夠關注序列中的不同位置,從而捕捉全局信息。
  4. 前饋層
    對每個位置的表示進行獨立的線性變換和激活函數,以增強模型的表達能力。
  5. 編碼器-解碼器注意力機制
    解碼器中的每個位置可以關注編碼器中的所有位置,從而將編碼器的信息傳遞給解碼器。
  6. 殘差連接
    在每個子層(子模塊)的輸入和輸出之間添加一個快捷連接(skip connection),以避免梯度消失和梯度爆炸問題,使得訓練更穩(wěn)定。

代碼演練

首先,我們導入必要的庫;

import numpy as np
import torch
import math
from torch import nn
import torch.nn.functional as F

嵌入將單詞轉換為 Embedding ;

class Embeddings(nn.Module):
    def __init__(self, vocab_size, d_model):
        super(Embeddings, self).__init__()
        self.embed = nn.Embedding(vocab_size, d_model)
        self.d_model = d_model

    def forward(self, x):
        return self.embed(x) * math.sqrt(self.d_model)

位置編碼添加了有關序列順序的信息。

class PositionalEncoding(nn.Module):
    def __init__(self, d_model, max_sequence_length):
        super().__init__()
        self.max_sequence_length = max_sequence_length
        self.d_model = d_model

    def forward(self, x):
        even_i = torch.arange(0, self.d_model, 2).float()
        denominator = torch.pow(10000, even_i/self.d_model)
        position = (torch.arange(self.max_sequence_length)
                          .reshape(self.max_sequence_length, 1))
        even_PE = torch.sin(position / denominator)
        odd_PE = torch.cos(position / denominator)
        stacked = torch.stack([even_PE, odd_PE], dim=2)
        PE = torch.flatten(stacked, start_dim=1, end_dim=2)
        return PE

多頭自注意力層;

def scaled_dot_product(q, k, v, mask=None):
        d_k = q.size()[-1]
        scaled = torch.matmul(q, k.transpose(-1, -2)) / math.sqrt(d_k)
        if mask is not None:
            scaled = scaled.permute(1, 0, 2, 3) + mask
            scaled = scaled.permute(1, 0, 2, 3)
        attention = F.softmax(scaled, dim=-1)
        values = torch.matmul(attention, v)
        return values, attention
        
class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super().__init__()
        self.d_model = d_model
        self.num_heads = num_heads
        self.head_dim = d_model // num_heads
        self.qkv_layer = nn.Linear(d_model , 3 * d_model)
        self.linear_layer = nn.Linear(d_model, d_model)
        
    def forward(self, x, mask):
        batch_size, sequence_length, d_model = x.size()
        qkv = self.qkv_layer(x)
        qkv = qkv.reshape(batch_size, sequence_length, self.num_heads, 3 * self.head_dim)
        qkv = qkv.permute(0, 2, 1, 3)
        q, k, v = qkv.chunk(3, dim=-1)
        values, attention = scaled_dot_product(q, k, v, mask)
        values = values.permute(0, 2, 1, 3).reshape(batch_size, sequence_length, self.num_heads * self.head_dim)
        out = self.linear_layer(values)
        return out

前饋層使用 ReLu 激活函數和線性層。

class PositionwiseFeedForward(nn.Module):
    def __init__(self, d_model, hidden, drop_prob=0.1):
        super(PositionwiseFeedForward, self).__init__()
        self.linear1 = nn.Linear(d_model, hidden)
        self.linear2 = nn.Linear(hidden, d_model)
        self.relu = nn.ReLU()
        self.dropout = nn.Dropout(p=drop_prob)

    def forward(self, x):
        x = self.linear1(x)
        x = self.relu(x)
        x = self.dropout(x)
        x = self.linear2(x)
        return x

層規(guī)范化;

class LayerNormalization(nn.Module):
    def __init__(self, parameters_shape, eps=1e-5):
        super().__init__()
        self.parameters_shape=parameters_shape
        self.eps=eps
        self.gamma = nn.Parameter(torch.ones(parameters_shape))
        self.beta =  nn.Parameter(torch.zeros(parameters_shape))

    def forward(self, inputs):
        dims = [-(i + 1) for i in range(len(self.parameters_shape))]
        mean = inputs.mean(dim=dims, keepdim=True)
        var = ((inputs - mean) ** 2).mean(dim=dims, keepdim=True)
        std = (var + self.eps).sqrt()
        y = (inputs - mean) / std
        out = self.gamma * y + self.beta
        return out

編碼器由多個編碼器層組成。

class EncoderLayer(nn.Module):
    def __init__(self, d_model, ffn_hidden, num_heads, drop_prob):
        super(EncoderLayer, self).__init__()
        self.attention = MultiHeadAttention(d_model=d_model, num_heads=num_heads)
        self.norm1 = LayerNormalization(parameters_shape=[d_model])
        self.dropout1 = nn.Dropout(p=drop_prob)
        self.ffn = PositionwiseFeedForward(d_model=d_model, hidden=ffn_hidden, drop_prob=drop_prob)
        self.norm2 = LayerNormalization(parameters_shape=[d_model])
        self.dropout2 = nn.Dropout(p=drop_prob)

    def forward(self, x, self_attention_mask):
        residual_x = x.clone()
        x = self.attention(x, mask=self_attention_mask)
        x = self.dropout1(x)
        x = self.norm1(x + residual_x)
        residual_x = x.clone()
        x = self.ffn(x)
        x = self.dropout2(x)
        x = self.norm2(x + residual_x)
        return x

class SequentialEncoder(nn.Sequential):
    def forward(self, *inputs):
        x, self_attention_mask  = inputs
        for module in self._modules.values():
            x = module(x, self_attention_mask)
        return x

class Encoder(nn.Module):
    def __init__(self,
                 d_model,
                 ffn_hidden,
                 num_heads,
                 drop_prob,
                 num_layers,
                 max_sequence_length,
                 language_to_index,
                 START_TOKEN,
                 END_TOKEN,
                 PADDING_TOKEN):
        super().__init__()
        self.sentence_embedding = SentenceEmbedding(max_sequence_length, d_model, language_to_index, START_TOKEN, END_TOKEN, PADDING_TOKEN)
        self.layers = SequentialEncoder(*[EncoderLayer(d_model, ffn_hidden, num_heads, drop_prob)
                                      for _ in range(num_layers)])

    def forward(self, x, self_attention_mask, start_token, end_token):
        x = self.sentence_embedding(x, start_token, end_token)
        x = self.layers(x, self_attention_mask)
        return x

多頭交叉注意層;

class MultiHeadCrossAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super().__init__()
        self.d_model = d_model
        self.num_heads = num_heads
        self.head_dim = d_model // num_heads
        self.kv_layer = nn.Linear(d_model , 2 * d_model)
        self.q_layer = nn.Linear(d_model , d_model)
        self.linear_layer = nn.Linear(d_model, d_model)

    def forward(self, x, y, mask):
        batch_size, sequence_length, d_model = x.size() 
        kv = self.kv_layer(x)
        q = self.q_layer(y)
        kv = kv.reshape(batch_size, sequence_length, self.num_heads, 2 * self.head_dim)
        q = q.reshape(batch_size, sequence_length, self.num_heads, self.head_dim)
        kv = kv.permute(0, 2, 1, 3)
        q = q.permute(0, 2, 1, 3)
        k, v = kv.chunk(2, dim=-1)
        values, attention = scaled_dot_product(q, k, v, mask)
        values = values.permute(0, 2, 1, 3).reshape(batch_size, sequence_length, d_model)
        out = self.linear_layer(values)
        return out

解碼器由多個解碼器層組成。

class DecoderLayer(nn.Module):
    def __init__(self, d_model, ffn_hidden, num_heads, drop_prob):
        super(DecoderLayer, self).__init__()
        self.self_attention = MultiHeadAttention(d_model=d_model, num_heads=num_heads)
        self.layer_norm1 = LayerNormalization(parameters_shape=[d_model])
        self.dropout1 = nn.Dropout(p=drop_prob)

        self.encoder_decoder_attention = MultiHeadCrossAttention(d_model=d_model, num_heads=num_heads)
        self.layer_norm2 = LayerNormalization(parameters_shape=[d_model])
        self.dropout2 = nn.Dropout(p=drop_prob)

        self.ffn = PositionwiseFeedForward(d_model=d_model, hidden=ffn_hidden, drop_prob=drop_prob)
        self.layer_norm3 = LayerNormalization(parameters_shape=[d_model])
        self.dropout3 = nn.Dropout(p=drop_prob)

    def forward(self, x, y, self_attention_mask, cross_attention_mask):
        _y = y.clone()
        y = self.self_attention(y, mask=self_attention_mask)
        y = self.dropout1(y)
        y = self.layer_norm1(y + _y)

        _y = y.clone()
        y = self.encoder_decoder_attention(x, y, mask=cross_attention_mask)
        y = self.dropout2(y)
        y = self.layer_norm2(y + _y)

        _y = y.clone()
        y = self.ffn(y)
        y = self.dropout3(y)
        y = self.layer_norm3(y + _y)
        return y


class SequentialDecoder(nn.Sequential):
    def forward(self, *inputs):
        x, y, self_attention_mask, cross_attention_mask = inputs
        for module in self._modules.values():
            y = module(x, y, self_attention_mask, cross_attention_mask)
        return y

class Decoder(nn.Module):
    def __init__(self,
                 d_model,
                 ffn_hidden,
                 num_heads,
                 drop_prob,
                 num_layers,
                 max_sequence_length,
                 language_to_index,
                 START_TOKEN,
                 END_TOKEN,
                 PADDING_TOKEN):
        super().__init__()
        self.sentence_embedding = SentenceEmbedding(max_sequence_length, d_model, language_to_index, START_TOKEN, END_TOKEN, PADDING_TOKEN)
        self.layers = SequentialDecoder(*[DecoderLayer(d_model, ffn_hidden, num_heads, drop_prob) for _ in range(num_layers)])

    def forward(self, x, y, self_attention_mask, cross_attention_mask, start_token, end_token):
        y = self.sentence_embedding(y, start_token, end_token)
        y = self.layers(x, y, self_attention_mask, cross_attention_mask)
        return y
def forward(self, x, y, self_attention_mask, cross_attention_mask, start_token, end_token):
    y = self.sentence_embedding(y, start_token, end_token)
    y = self.layers(x, y, self_attention_mask, cross_attention_mask)
    return y

transformer 模型

class Transformer(nn.Module):
    def __init__(self,
                d_model,
                ffn_hidden,
                num_heads,
                drop_prob,
                num_layers,
                max_sequence_length,
                spn_vocab_size,
                english_to_index,
                spanish_to_index,
                START_TOKEN,
                END_TOKEN,
                PADDING_TOKEN
                ):
        super().__init__()
        self.encoder = Encoder(d_model, ffn_hidden, num_heads, drop_prob, num_layers, max_sequence_length, english_to_ind, START_TOKEN, END_TOKEN, PADDING_TOKEN)
        self.decoder = Decoder(d_model, ffn_hidden, num_heads, drop_prob,num_layers, max_sequence_length, spanish_to_ind, START_TOKEN, END_TOKEN, PADDING_TOKEN)
        self.linear = nn.Linear(d_model, spn_vocab_size)
        self.device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')

    def forward(self,
                x,
                y,
                encoder_self_attention_mask=None,
                decoder_self_attention_mask=None,
                decoder_cross_attention_mask=None,
                enc_start_token=False,
                enc_end_token=False,
                dec_start_token=False, # We should make this true
                dec_end_token=False): # x, y are batch of sentences
        x = self.encoder(x, encoder_self_attention_mask, start_token=enc_start_token, end_token=enc_end_token)
        out = self.decoder(x, y, decoder_self_attention_mask, decoder_cross_attention_mask, start_token=dec_start_token, end_token=dec_end_token)
        out = self.linear(out)
        return out



責任編輯:武曉燕 來源: 程序員學長
相關推薦

2024-06-20 08:52:10

2024-08-02 10:28:13

算法NLP模型

2024-08-12 00:00:05

集成學習典型算法代碼

2024-07-30 08:08:49

2024-08-08 12:33:55

算法

2024-09-09 23:04:04

2024-08-22 08:21:10

算法神經網絡參數

2024-09-24 07:28:10

2024-12-19 00:16:43

2024-06-03 08:09:39

2024-06-06 09:44:33

2024-07-19 08:21:24

2024-08-21 08:21:45

CNN算法神經網絡

2024-06-19 09:47:21

2024-08-29 09:18:55

2024-12-04 10:33:17

2024-11-11 00:00:02

卷積神經網絡算法

2024-08-22 08:24:51

算法CNN深度學習

2024-06-12 10:18:33

2021-08-10 07:27:42

Elasticsear集群開源
點贊
收藏

51CTO技術棧公眾號

蜜桃91麻豆精品一二三区| 精品裸体舞一区二区三区| 日韩在线一区二区三区免费视频| 日韩精品一区二区在线视频| 久久久精品毛片| 哺乳一区二区三区中文视频| 久久er精品视频| 国产视频自拍一区| 久激情内射婷内射蜜桃| 国产黄频在线观看| 亚洲精品成人| 欧美日韩国产一二三| 日本一区二区三区视频免费看| 久久精品免费av| 中文字幕亚洲在线观看| 亚洲欧美视频在线观看视频| 国产一区二中文字幕在线看 | 黄色资源网久久资源365| 精品香蕉一区二区三区| 日韩成人精品视频在线观看| 免费成人av电影| 久久97精品| 一区二区欧美精品| 亚洲精品免费av| 天天操夜夜操av| 不卡亚洲精品| 日本一区二区免费在线观看视频 | 日韩在线中文字幕视频 | 91精品久久久久久久久久久久久久| wwwxxx色| 人妖欧美1区| 国产91富婆露脸刺激对白| 久久91亚洲人成电影网站| 精产国品一区二区三区| 91看片一区| 国产精品美女久久久久久| 国产欧美日韩中文字幕| 日韩 欧美 中文| 中文字幕伦av一区二区邻居| 91九色最新地址| 午夜精品视频在线观看一区二区 | 欧美高清精品3d| 亚洲一区二区三区免费观看| 国产乱人乱偷精品视频| 亚洲免费二区| 精品国产乱码久久久久久免费| 99热久久这里只有精品| 人成在线免费视频| 免费看欧美美女黄的网站| www.日韩av.com| 人妻精油按摩bd高清中文字幕| 草莓视频成人appios| 亚洲欧美在线高清| 福利视频一区二区三区| 欧美啪啪小视频| 久久精品国产大片免费观看| 欧美xingq一区二区| 亚洲色图欧美自拍| 黄色漫画在线免费看| 久久精品无码一区二区三区| 91综合免费在线| 国产精品国产三级国产普通话对白| 人人狠狠综合久久亚洲| 欧美精品成人在线| 熟女俱乐部一区二区视频在线| 怡红院成人在线| 欧美性色视频在线| 特色特色大片在线| 深夜福利在线视频| 精品一区二区三区免费毛片爱| 国产精品亚洲片夜色在线| 久一区二区三区| 欧美综合在线视频观看| 欧美成人一区二区| 日本精品www| 羞羞的视频在线看| 国产精品色婷婷久久58| 亚洲成人午夜在线| 婷婷在线免费视频| 亚洲综合电影一区二区三区| 久久精品成人一区二区三区| 黄色污在线观看| 成人激情久久| 欧美色综合网站| 欧美国产亚洲一区| 欧美家庭影院| 无码av中文一区二区三区桃花岛| 亚洲一区三区在线观看| 成人ww免费完整版在线观看| 久久精品亚洲精品国产欧美 | 精品人妻一区二区三区免费| 在线成人视屏| 91精品婷婷国产综合久久性色| 天天摸天天碰天天添| 粉嫩91精品久久久久久久99蜜桃| 777亚洲妇女| 亚洲天堂2024| 久久九九精品视频| 欧美日韩亚洲国产综合| 污视频在线观看免费网站| 久久精品色综合| 色悠悠久久88| 中文字幕日韩一级| 国内自拍一区| 欧美另类极品videosbest最新版本| 五月天婷婷丁香| 国产精品theporn| 国产激情视频一区| 亚洲 欧美 日韩 在线| 久久se精品一区二区| 精品免费日产一区一区三区免费| 欧美视频xxx| 国产精品视频免费| www国产精品内射老熟女| 天天综合91| 91精品黄色片免费大全| 人人妻人人澡人人爽人人精品| 国产精品对白久久久久粗| 欧美va亚洲va国产综合| 性欧美一区二区| 久久精品播放| 欧美综合一区第一页| 国产一级一级国产| 日本中文字幕一区二区有限公司| 亚洲a中文字幕| 国产一区二区三区福利| 国产欧美一区二区三区在线老狼 | 亚洲黄色在线网站| 欧美色图五月天| 亚洲美女av在线| 亚洲色成人网站www永久四虎| 精品视频99| 97超碰国产精品女人人人爽| 天天操中文字幕| 国产精品一区二区久久精品爱涩| 亚洲自拍高清视频网站| 成年人在线观看| 亚洲日穴在线视频| 污污网站免费看| 日本在线视频一区二区三区| 精品乱人伦小说| 亚洲色图综合区| 狠狠色丁香久久婷婷综| 亚洲视频在线二区| jizz久久久久久| 一区二区三区国产在线观看| 久久高清内射无套| 国产在线欧美| 亚洲综合av影视| 国产福利在线播放麻豆| 欧美日韩美少妇 | 国产精品久久97| 国产精品16p| 国产精品一区二区三区乱码| 国产精品久久成人免费观看| 香蕉久久一区| 久久九九免费视频| 国产乱淫片视频| 亚洲蜜臀av乱码久久精品蜜桃| 中文字幕无码精品亚洲资源网久久| 英国三级经典在线观看| 欧美日韩在线播放三区| 欧美人与性囗牲恔配| 日韩电影网1区2区| 国产高清在线一区二区| 国产探花在线观看| 在线看国产日韩| 91精品国产高清91久久久久久 | 91在线播放观看| 国产成人午夜精品影院观看视频 | 婷婷久久综合九色国产成人| 国产美女喷水视频| 日韩av午夜在线观看| 久久av秘一区二区三区| 波多野结衣亚洲| 日韩欧美一区二区视频| 欧美精品一区二区蜜桃| 日韩av电影一区| 中文视频一区视频二区视频三区| 99爱在线视频| 日韩午夜电影av| 你懂得视频在线观看| 宅男噜噜噜66国产日韩在线观看| 国产一区在线播放| 色呦呦在线看| 日韩精品视频在线免费观看| 免费网站观看www在线观| 成人深夜在线观看| 国产亚洲精品久久久久久久| 久久99国产精品二区高清软件| 亚洲精品国产综合久久| 久久视频免费看| 91视视频在线观看入口直接观看www| 久久久久福利视频| 小说区图片区亚洲| 高清欧美性猛交xxxx黑人猛交| 国产露脸国语对白在线| 亚洲一级电影视频| 中文字幕无码毛片免费看| 亚洲国产精品第一区二区| 国产精品自拍首页| 2021国产在线| 欧美一二三四区在线| 91香蕉在线视频| 亚洲天堂av一区| 久久久无码人妻精品一区| 极品美女销魂一区二区三区 | 国产白丝在线观看| 一区二区三区www| 香蕉av在线播放| 91精品国产一区二区人妖| 肉色超薄丝袜脚交69xx图片| 另类调教123区| 在线观看一区二区三区三州| 国内精品国产成人国产三级粉色 | 激情婷婷综合网| 婷婷精品视频| 日韩免费观看高清| 成人在线观看免费| 欧美v国产在线一区二区三区| 中文字幕人妻一区二区在线视频| 国产精品视频观看| 波多野结衣影院| 国产在线一区观看| 国产日韩欧美精品在线观看| 欧美成人激情| 日本在线观看一区二区| 亚洲成人va| 欧美中文字幕在线播放| 8x8ⅹ拨牐拨牐拨牐在线观看| 久久av.com| 日韩一区二区三区不卡| 欧美一区二区视频免费观看| 欧美另类高清videos的特点| 亚洲欧美视频在线观看| 国产18无套直看片| 国产一区二区不卡在线| 亚洲成人天堂网| 日韩影院精彩在线| 久草青青在线观看| 国产免费成人| 亚洲一区在线免费| 日本高清免费电影一区| 91一区二区三区| 亚洲最大网站| 欧日韩不卡在线视频| 自拍偷拍欧美视频| 欧美一区二区影院| 三区四区在线视频| 欧美大肚乱孕交hd孕妇| 99久久99久久久精品棕色圆| 亚洲成人激情综合网| 人与嘼交av免费| 中文在线免费一区三区高中清不卡| 日本女人黄色片| 极品少妇xxxx偷拍精品少妇| 久久精品久久99| 国产91丝袜在线18| 日本美女视频网站| 免费人成精品欧美精品| 国产免费又粗又猛又爽| 日韩天天综合| 免费欧美一级视频| 午夜亚洲福利| 日韩欧美第二区在线观看| 视频精品在线观看| 国产成人免费电影| 高清日韩欧美| 久久久影院一区二区三区| 午夜视频在线观看精品中文| 国产精品大全| 欧美色图婷婷| 性欧美.com| 欧美精品三级| 亚洲视频在线观看日本a| 亚洲成av人电影| 久久精品无码中文字幕| 久久国产精品99国产| avav在线播放| 国产日韩欧美一区| 中文久久久久久| 噜噜爱69成人精品| 欧美大尺度做爰床戏| 国产精品99久久久久久有的能看| 欧美夫妇交换xxx| 国产在线一区观看| xfplay5566色资源网站| 国产农村妇女精品| 久操免费在线视频| 在线精品亚洲一区二区不卡| 亚洲AV无码成人片在线观看| 欧美精品在线观看播放| 高h调教冰块play男男双性文| 亚洲欧美中文字幕在线一区| 日韩在线无毛| 久久色精品视频| av伦理在线| 成人激情在线播放| 天堂成人娱乐在线视频免费播放网站| 一卡二卡3卡四卡高清精品视频| 91久久黄色| 欧美xxxxxbbbbb| 国产午夜精品久久| 日韩视频在线观看免费视频| 一区二区三区欧美视频| 青青操视频在线播放| 最新不卡av在线| 久久亚洲天堂网| 欧美一级一区二区| av中文字幕一区二区三区| 韩国三级日本三级少妇99| 2001个疯子在线观看| 国产精品最新在线观看| 综合亚洲自拍| 国产视频在线观看网站| 九九视频精品免费| 久久亚洲AV无码专区成人国产| 亚洲第一狼人社区| www.日韩在线观看| 亚洲第一男人av| 亚洲 欧美 激情 另类| 超碰精品一区二区三区乱码| 欧洲一级精品| 精品日本一区二区| 国产精品成人一区二区网站软件| 激情五月婷婷基地| 国产精品免费丝袜| 亚洲性猛交富婆| 亚洲午夜激情免费视频| 米奇精品一区二区三区| 欧美成人免费小视频| 波多野结依一区| 91网站在线看| 欧美高清视频看片在线观看| 8x8x华人在线| 国产美女精品一区二区三区| www成人啪啪18软件| 欧洲另类一二三四区| 激情小说 在线视频| 欧美一级免费视频| 欧美日韩麻豆| 欧美视频第一区| 久久综合99re88久久爱| 美女福利视频网| 欧美午夜精品电影| 亚洲成人中文字幕在线| 久久精品一区中文字幕| vam成人资源在线观看| 久久国产精品久久| 夜夜嗨av一区二区三区网站四季av| 青青草视频网站| 欧美性极品xxxx做受| 国产免费av高清在线| 欧美日韩成人在线观看| 久久久国产精品入口麻豆| 91传媒免费视频| 成人教育av在线| 在线日韩国产网站| 91精品国产综合久久久蜜臀图片| 欧美三级电影一区二区三区| 成人精品一区二区三区| 欧美在线网站| 男男一级淫片免费播放| 精品国产福利在线| 国产三级在线免费观看| 国产啪精品视频| 国产精品啊啊啊| 极品粉嫩小仙女高潮喷水久久| 91成人网在线| 影音先锋在线播放| 黄色国产精品一区二区三区| 久久综合激情| 先锋资源av在线| 色综合一区二区三区| 欧美 日韩 人妻 高清 中文| 91av视频在线观看| 日韩久久视频| 黄色高清无遮挡| 亚洲欧洲av色图| 手机看片一区二区三区| 国产精品69久久久久| 自拍日韩欧美| 一二三不卡视频| 欧美高清视频不卡网| 538在线视频| 一区二区精品免费视频| 成人av在线看| 亚洲精品91天天久久人人| 欧美成人免费一级人片100| 人体久久天天| 想看黄色一级片| 黑人巨大精品欧美一区二区一视频| 成人免费视频国产| 国产精品久久久久久久av电影| 一二三区不卡| 国产精品1000部啪视频| 欧美一二三区精品| 欧美aaa视频| 青青草精品视频在线| 国产精品久久久久婷婷二区次|