日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手把手教你使用pytorch实现双向LSTM机器翻译

發布時間:2024/3/24 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手把手教你使用pytorch实现双向LSTM机器翻译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 前言
  • 1. 數據集
    • 1.1 下載數據集并處理
    • 1.2 將數據集分為source和target
    • 1.3 定義詞匯類
    • 1.4 獲取訓練集
  • 2. 定義模型
    • 2.1 導入相關工具包
    • 2.2. 定義Encoder模型
    • 2.3.定義Decoder模型
    • 2.4.定義seq2seq模型
    • 2.5.定義loss
  • 3.訓練函數
  • 4.預測函數
  • 5.測試
    • 5.1定義參數
    • 5.2.訓練
    • 5.3.預測

前言

這兩天學習了RNN,就想實現一下機器翻譯,如果有什么問題,可以隨時交流!

1. 數據集

本文的數據集來自李沐老師的《動手學深度學習》

數據集下載 : https://github.com/codefly-xtl/translation/tree/main/data

首先看看數據集啥樣子:左邊為英語,右邊為法語

1.1 下載數據集并處理

在這一部分,我們首先讀取出數據存放到 raw_data 中,再使用空格替換不間斷字符,再小寫。再對標點符號前添加空格,最后返回數據。

def process_data():# 判斷標點前是否有空格def no_peace(char, pre_char):return char in set(',.!?') and pre_char != ' '# 加載數據with open('./data/fra.txt', encoding='utf-8') as f:raw_data = f.read()# 對數據進行處理:變小寫,在標點符號前插入空格raw_data = raw_data.replace('\u202f', ' ').replace('\xa0', ' ').lower()out = [' ' + char if i > 0 and no_peace(char, raw_data[i - 1]) else char for i, char in enumerate(raw_data)]data = ''.join(out)return data

1.2 將數據集分為source和target

在這一部分,我們獲取原文以及譯文的句子,source存放原文,target存放譯文。根據 \n 取出數據的每一行,再根據 \t 將數據分為原文以及譯文,再分別對原文以及譯文根據 空格 將句子按詞分開組成列表。source例子如下:source = [[‘i’, ‘am’, ‘person’],[‘i’, ‘like’, ‘you’]]

def get_sentence(data):# 存儲兩種語言source = []target = []# 取出每一行for line in data.split('\n'):# 取出每一行的兩個部分parts = line.split('\t')if len(parts) == 2:# 將英語放入sourcesource.append(parts[0].split(' '))# 將法語放入targettarget.append(parts[1].split(' '))# source 的樣子如下:# source = [['i', 'am', 'person'],['i', 'like', 'you']]return source, target

1.3 定義詞匯類

這個類的創建過程如下:

  • 先從句子列表中讀取到每一個單詞,得到all_words
  • 再按單詞出現的頻率排序得到word_preq
  • 接下來就實現index_to_word以及word_to_index,這兩個可以實現單個index和對應的word之間的互轉
  • 接下來實現to_index以及wo_word,這兩個可以實現index列表和對應的word列表之間的互相轉換,例如:index = [88,102,562,4850] 轉為 word = [‘點’,‘個’,‘贊’,‘😀’],to_index輸出的是tensor格式
  • 為了可以對一句話實現翻譯,因此設計了一個prase的方法,可以將句子轉換為對應的index的tensor格式,返回的數據是二維的,shape為 (batch_size , num+steps)
  • 實現獲取詞匯表大小的**len()**方法
  • # 詞匯類 class Vocab:# reserved_tokens 是一個預留token,比如預留開始字符<bos> def __init__(self, sentence, min_freq=0, reserved_tokens=None):if reserved_tokens is None:reserved_tokens = []# 取出所有單詞self.all_words = [word for words in sentence for word in words]# 統計詞頻,并按頻率大小從大到小排序self.word_preq = self.get_word_preq()# 首先將<unk>以及預留字放入index_to_word以及word_to_index,index_to_word可以根據index獲得word,word_to_index根據word獲得indexself.index_to_word = ['<unk>'] + reserved_tokensself.word_to_index = {word: index for index, word in enumerate(self.index_to_word)}# 再將所有詞放入index_to_word以及word_to_indexfor word, freq in self.word_preq:if freq < min_freq:breakself.index_to_word.append(word)self.word_to_index[word] = len(self.word_to_index)# 統計詞頻def get_word_preq(self):word_preq = {}for word in self.all_words:if word not in word_preq:word_preq[word] = 1else:word_preq[word] += 1# 排序word_preq = sorted(word_preq.items(), key=lambda x: x[1], reverse=True)return word_preq# 獲取詞數def __len__(self):return len(self.index_to_word)# 將index列表轉為word列表def to_word(self, indexs):return [self.index_to_word[i] for i in indexs]# 將word列表轉為index列表def to_index(self, words):output = []for word in words:if word not in self.index_to_word:output.append(self.word_to_index['<unk>'])else:output.append(self.word_to_index[word])return torch.tensor(output)# 將一句話轉為對應的tensor數據def prase(self, raw_data, num_steps):raw_data = raw_data.replace('\u202f', ' ').replace('\xa0', ' ').lower()out = [' ' + char if i > 0 and no_peace(char, raw_data[i - 1]) else char for i, char in enumerate(raw_data)]data = ''.join(out)source = data.split(' ')source.append('<eos>')source_valid_len =len(source)source_word = truncate_or_pad(source, num_steps)source_index = self.to_index(source_word)print(source_index)return torch.tensor(source_index).unsqueeze(0), torch.tensor(source_valid_len).reshape(-1, 1)

    1.4 獲取訓練集

    在這一部分,用于獲取訓練集,步驟如下:

  • 首先獲取數據,在將數據分為source_sentences, target_sentences
  • 分別對這上述兩個句子列表形成詞匯表source_Vocabtarget_Vocab
  • 根據句子的多少以及batch_size計算出整個數據集可以形成多少個batch
  • 每一個batch,存放四部分:source_batch,source_len_batch,target_batch,target_len_batch,其中,_batch存放句子,_len_batch用于存放每一個句子中有效長度為多少。
  • # 用于填充字符或者截斷句子 def truncate_or_pad(line, num_steps):# 例: line = ['i','am','person']# 超出后進行截斷if len(line) > num_steps:return line[:num_steps]# 沒有超出就padfor i in range(num_steps - len(line)):line.append('<pad>')return linedef get_train_iter(batch_size, num_steps):data = process_data()# source_sentences 例: source_sentences = [['i am person'],['i like you']]source_sentences, target_sentences = get_sentence(data)source_Vocab = Vocab(source_sentences, min_freq=0, reserved_tokens=['<pad>', '<bos>', '<eos>'])target_Vocab = Vocab(target_sentences, min_freq=0, reserved_tokens=['<pad>', '<bos>', '<eos>'])database = []batch_num = len(source_sentences) // batch_size# 每一個batch放在database里面for i in range(batch_num):source_batch = []source_len_batch = []target_batch = []target_len_batch = []for j in range(batch_size):# 獲取一個句子以及翻譯source_sentence = source_sentences[i * batch_size + j] + ['<eos>']target_sentence = target_sentences[i * batch_size + j] + ['<eos>']source_valid_len = len(source_sentence)target_valid_len = len(target_sentence)# 將句子變為單詞列表,超過num_steps的截斷,不夠num_steps的補齊source_word = truncate_or_pad(source_sentence, num_steps)target_word = truncate_or_pad(target_sentence, num_steps)# 獲取單詞對應的標號source_index = source_Vocab.to_index(source_word)target_index = target_Vocab.to_index(target_word)# 存放起來source_batch.append(source_index)source_len_batch.append(source_valid_len)target_batch.append(target_index)target_len_batch.append(target_valid_len)source_batch_tensor = torch.stack(source_batch)target_batch_tensor = torch.stack(target_batch)source_len_batch_tensor = torch.tensor(source_len_batch)target_len_batch_tensor = torch.tensor(target_len_batch)database.append((source_batch_tensor, source_len_batch_tensor, target_batch_tensor, target_len_batch_tensor))return database, source_Vocab, target_Vocab

    2. 定義模型

    2.1 導入相關工具包

    import torch from torch import nn import utils

    2.2. 定義Encoder模型

    class Encoder(nn.Module):def __init__(self, vocab_size, embed_size, num_hiddens, num_layers, bidirectional=False):super().__init__()self.embedding = nn.Embedding(vocab_size, embed_size)self.rnn = nn.LSTM(embed_size, num_hiddens, num_layers, bidirectional=bidirectional)self.num_layers = num_layersself.num_hiddens = num_hiddensself.bidirectional = bidirectionalif bidirectional:# 由于每一層有兩個方向,因此需要將兩個方向進行合并self.linear_hidden = nn.Linear(self.num_hiddens * 2, self.num_hiddens)self.linear_content = nn.Linear(self.num_hiddens * 2, self.num_hiddens)def forward(self, X):X = self.embedding(X)X = X.permute(1, 0, 2)output, state = self.rnn(X)hidden_state, content_state = stateif self.bidirectional:# 將每一層的正反state拼在一起,再放入神經網絡中,使得與decoder的num_hiddens一致hidden_state = torch.cat([hidden_state[:self.num_layers * 2:2, :, :], hidden_state[1:self.num_layers * 2 + 1:2, :, :]], dim=2)content_state = torch.cat([content_state[:self.num_layers * 2:2, :, :], content_state[1:self.num_layers * 2 + 1:2, :, :]], dim=2)hidden_state = self.linear_hidden(hidden_state)content_state = self.linear_content(content_state)return hidden_state, content_state

    2.3.定義Decoder模型

    class Decoder(nn.Module):def __init__(self, vocab_size, embed_size, num_hiddens, num_layers):super().__init__()self.embedding = nn.Embedding(vocab_size, embed_size)self.rnn = nn.LSTM(embed_size + num_hiddens * 2, num_hiddens, num_layers)self.linear = nn.Linear(num_hiddens, vocab_size)def init_state(self, encoder_output_state):return encoder_output_statedef forward(self, X, state, predict=False):if not predict:X = self.embedding(X).permute(1, 0, 2)# 由于decoder的信息全由encoder的最后一個時間state得到,# 因此最后一個state的最后一層很重要,要盡可能的充分利用,# 因此將最后一個state的最后一層也作為decoder的輸入hidden_state, content_state = statenew_hidden_state = hidden_state[-1].unsqueeze(0).repeat(target.shape[0], 1, 1)new_content_state = content_state[-1].unsqueeze(0).repeat(target.shape[0], 1, 1)X = torch.cat([new_hidden_state, new_content_state, X], dim=2)# X 的shape為:(num_steps, batch_size, decoder_embed_size + encoder_hidden_num * 2)output, state = self.rnn(X, state)output = self.linear(output).permute(1, 0, 2)return output, state

    2.4.定義seq2seq模型

    class EncoderDecoder(nn.Module):def __init__(self, encoder, decoder):super().__init__()self.encoder = encoderself.decoder = decoderdef forward(self, source, target):encoder_output_state = self.encoder(source)decoder_init_state = self.decoder.init_state(encoder_output_state)return self.decoder(target, decoder_init_state)

    2.5.定義loss

    由于損失矩陣形狀為 (batch_size, steps_num),每一個句子后邊有一部分是填充過的,因此不能計算填充數據的損失

    class Myloss(nn.CrossEntropyLoss):def value_mask(self, X, valid_len):mask = torch.arange(X.shape[1], dtype=torch.float32, device=X.device)[None, :] > valid_len[:, None]X[mask] = 0return Xdef forward(self, predict, target, valid_len=None):weights = torch.ones_like(target)weights = self.value_mask(weights, valid_len)self.reduction = 'none'unweighted_loss = super().forward(predict.permute(0, 2, 1), target)weighted_loss = unweighted_loss * weightsreturn weighted_loss.mean()

    3.訓練函數

    def train(net, data_iter, lr, num_epochs, device):net.to(device)optimizer = torch.optim.Adam(net.parameters(), lr=lr)loss = Myloss()net.train()for epoch in range(num_epochs):for batch in data_iter:optimizer.zero_grad()# 將數據放到device上source, source_valid_len, target, target_valid_len = [x.to(device) for x in batch]# 再每一個句子前面添加<bos>的index,bos的index為2bos = torch.tensor([2] * target.shape[0], device=device).reshape(-1, 1)decoder_input = torch.cat([bos, target[:, :-1]], dim=1)# 進行優化Y_hat, _ = net(source, decoder_input)l = loss(Y_hat, target, target_valid_len)l.backward()optimizer.step()print(l)

    4.預測函數

    def predict(net, source_sentence, source_Vocab, target_Vocab, num_steps, device):# 用于存儲譯文result = []# 原文source, source_valid_len = source_Vocab.prase(source_sentence, num_steps)source, source_valid_len = source.to(device), source_valid_len.to(device)# 獲取最后一個狀態state = net.encoder(source)# 獲取encoder的最后一個state的信息hidden_state, content_state = statenew_hidden_state = hidden_state[-1].unsqueeze(0)new_content_state = content_state[-1].unsqueeze(0)# 初始化decoder的第一個狀態state = net.decoder.init_state(state)# 構造翻譯的第一個詞X = torch.tensor(target_Vocab.word_to_index['<eos>']).reshape(-1, 1).to(device)X = net.decoder.embedding(X).permute(1, 0, 2)X = torch.cat([new_hidden_state, new_content_state, X], dim=2)for i in range(num_steps):# 開啟預測模式,進行預測Y, state = net.decoder(X, state, True)X = Y.argmax(dim=2)# 獲取最大概率的indexpred = X.squeeze(dim=0).type(torch.int32).item()# 如果index為eos,則停止預測if pred == target_Vocab.word_to_index['<eos>']:breakX = net.decoder.embedding(X).permute(1, 0, 2)X = torch.cat([new_hidden_state, new_content_state, X], dim=2)result.append(pred)return ' '.join(target_Vocab.to_word(result))

    5.測試

    5.1定義參數

    batch_size = 64 num_steps = 20 train_iter, source_Vocab, target_Vocab = utils.get_train_iter(batch_size, num_steps) encoder_embed_size = 300 decoder_embed_size = 300 hidden_size = 64 num_layers = 2 encoder = Encoder(len(source_Vocab), decoder_embed_size, hidden_size, num_layers, True) decoder = Decoder(len(target_Vocab), decoder_embed_size, hidden_size, num_layers) net = EncoderDecoder(encoder, decoder) num_epoch = 100 lr = 0.001 device = 'cuda'

    5.2.訓練

    train(net, train_iter, lr, num_epoch, device) # 顯示如下: tensor(0.0147, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0137, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0139, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0128, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0126, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0126, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0123, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0120, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0128, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0121, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0117, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0122, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0119, device='cuda:0', grad_fn=<MeanBackward0>) tensor(0.0124, device='cuda:0', grad_fn=<MeanBackward0>)

    5.3.預測

    predict(net, 'He did it just for fun.', source_Vocab, target_Vocab, num_steps, device)

    總結

    以上是生活随笔為你收集整理的手把手教你使用pytorch实现双向LSTM机器翻译的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    天天干天天做 | 色视频国产直接看 | 在线观看成人毛片 | 成人久久免费 | 国产精品久久久一区二区 | 久久久久高清毛片一级 | 久久精品99视频 | 久久理论视频 | 97精品国产一二三产区 | 国产又粗又长又硬免费视频 | 欧美激情va永久在线播放 | 黄视频网站大全 | 成人av电影免费在线观看 | 精品一区二区电影 | 久久国产露脸精品国产 | 日韩一区二区三区高清免费看看 | 成片人卡1卡2卡3手机免费看 | 久久久久久久久久久久久9999 | 久久久久久久99精品免费观看 | 免费看色视频 | 天堂av免费| 国产日产av | 天堂在线免费视频 | 精品欧美小视频在线观看 | 久久国语露脸国产精品电影 | 日韩欧美专区 | 日本在线观看中文字幕 | 欧美久久久久久久久 | 色搞搞| av免费片| 免费瑟瑟网站 | 国产大片黄色 | 欧美午夜性 | 国产精品中文久久久久久久 | 亚洲国产精品资源 | 麻豆视频免费在线播放 | 欧美日本国产在线观看 | 亚洲在线成人精品 | 91人人插| 成人小视频在线观看免费 | 精品免费一区 | 二区视频在线观看 | 久久精品免费电影 | 成人资源在线观看 | 亚洲精品看片 | 香蕉影院在线观看 | 日韩免费一区 | 国产一性一爱一乱一交 | 成片免费观看视频大全 | 亚洲精品国产精品99久久 | 精品国产一区二区三区四 | 最新精品视频在线 | 国产精品精品 | 精品福利视频在线 | 成人国产精品一区二区 | 久久午夜电影院 | 国内精品在线看 | 91九色视频网站 | 日韩成人欧美 | 国产免费又粗又猛又爽 | 亚州成人av在线 | 久久综合国产伦精品免费 | 亚洲精品免费在线观看 | 91视频亚洲| 久久久久久久久久国产精品 | 成人九九视频 | 久久综合综合久久综合 | 国产91综合一区在线观看 | 日日爱影视 | 国产成人精品久久久 | 日韩欧美亚洲 | 337p西西人体大胆瓣开下部 | 在线三级播放 | 精品视频免费观看 | 九九色视频 | 毛片网在线播放 | 香蕉在线观看 | 久久精品国产免费观看 | 精品视频区 | 成人蜜桃| 97av精品| 波多野结衣亚洲一区二区 | 91片网 | 在线 国产 亚洲 欧美 | 99人久久精品视频最新地址 | 西西大胆免费视频 | 国产日韩欧美自拍 | 高清色免费 | 天天综合人人 | 少妇性aaaaaaaaa视频 | 在线免费性生活片 | 超碰在线天天 | 粉嫩av一区二区三区四区在线观看 | 天堂av免费在线 | 欧美淫视频 | 91香蕉国产在线观看软件 | 亚洲综合在线播放 | 亚洲区二区 | 99视频久久| 91精品少妇偷拍99 | 国产91在线观 | 最新av在线播放 | 午夜精品久久久久久久99热影院 | 久久免费高清视频 | 国产在线观看99 | 欧美日韩午夜 | 久久综合久色欧美综合狠狠 | 九九视频精品免费 | 亚洲h色精品 | 成人在线免费观看网站 | av黄色免费在线观看 | 国产资源av | 四虎影视8848aamm | 一区二区不卡视频在线观看 | 亚洲精品www | 在线免费看黄色 | 91中文字幕视频 | 黄色小网站在线观看 | 久久色在线观看 | 免费精品在线观看 | 国产一区二区久久久久 | 中文字幕乱视频 | 在线国产高清 | 麻豆你懂的 | 手机成人免费视频 | 国产精品99久久久久久久久 | 狠狠艹夜夜干 | 色视频在线免费 | 亚洲精品欧美视频 | 欧美一级在线观看视频 | 天天色综合久久 | 国产精品视频地址 | 九九综合久久 | 欧美国产精品久久久久久免费 | 欧美日韩一区二区久久 | 99久久综合国产精品二区 | av福利在线看 | 天天射狠狠干 | 成人在线电影观看 | 日韩欧美一区二区三区在线观看 | 久久热亚洲 | 在线观看的黄色 | 国产亚洲精品久久网站 | 五月宗合网 | 夜夜看av | 国产亚洲精品久久19p | 国产一区二区三区免费观看视频 | 国产一区二区精品久久91 | 天天射色综合 | 狠狠操欧美 | 免费看片网址 | 欧美欧美| 天天干 夜夜操 | 久久久久亚洲精品成人网小说 | 日本不卡123| 国产精品久久一区二区三区不卡 | 久久久久一区二区三区四区 | 国产伦理精品一区二区 | 欧美动漫一区二区三区 | 中文av字幕在线观看 | 欧美极品少妇xbxb性爽爽视频 | 国产手机视频在线播放 | 欧美日韩三区二区 | 欧美天天射 | 日韩a欧美 | 视频一区二区在线 | 97在线免费观看 | 国产一二三四在线观看视频 | 中文字幕色综合网 | 免费视频久久久久 | 成人在线观看免费 | 东方av在线免费观看 | 国产一区二区在线精品 | 五月婷婷综合在线视频 | 国产最新福利 | 黄网av在线| 欧美精品亚洲精品日韩精品 | 99热这里只有精品1 av中文字幕日韩 | 亚洲最快最全在线视频 | 91成人精品观看 | 日本三级在线观看中文字 | 国产一区二区在线观看视频 | www.久草视频| 亚洲精品国内 | 国产一区二区在线影院 | av黄色一级片 | 成人av影视在线 | 国产精品18久久久久久久久久久久 | 99精品久久久久久久久久综合 | 人人爽人人爽人人 | 欧美日韩国语 | 91 在线视频 | 婷婷性综合 | 人人草在线观看 | 成人网大片| 欧美人人爱 | 97香蕉久久超级碰碰高清版 | 综合网天天 | 中文字幕乱码亚洲精品一区 | 亚洲在线高清 | 亚洲专区视频在线观看 | 极品久久久久 | 精品一区 在线 | 中文在线字幕免费观看 | 久久国产日韩 | 99精品免费视频 | 在线一二三区 | 日韩精品综合在线 | 午夜电影av| 免费情缘 | 精品视频在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产精品自产拍在线观看中文 | 国产精品久久久久永久免费 | 波多野结衣亚洲一区二区 | 中文字幕精品视频 | 中文字幕在线观看第一页 | 亚洲国产精品一区二区久久,亚洲午夜 | 久久精品永久免费 | 国产亚洲永久域名 | 六月丁香六月婷婷 | 国产精品一区二区久久精品 | 久久精品电影院 | 国产精品剧情在线亚洲 | 精品亚洲网 | 久久久精品国产免费观看一区二区 | 久久精品99国产 | 久久情网| 久久免费美女视频 | 亚洲视频在线观看 | 丁香午夜| 久久黄网站 | 碰超在线观看 | 久久精品视频在线看 | 婷婷免费在线视频 | 97夜夜澡人人双人人人喊 | 在线电影日韩 | 色综合网 | 欧美精品免费在线观看 | 99视频+国产日韩欧美 | 爱情影院aqdy鲁丝片二区 | 欧美先锋影音 | 亚洲精品免费在线观看 | 少妇18xxxx性xxxx片 | 高清有码中文字幕 | 免费看一级一片 | av片一区二区 | 麻豆综合网 | 日韩在线 一区二区 | 亚洲桃花综合 | 久久国产精品视频免费看 | 国产分类视频 | 91久久精品一区二区二区 | 国内外激情视频 | 麻花豆传媒一二三产区 | 人人玩人人添人人 | 亚洲 欧美 国产 va在线影院 | 久久国产午夜精品理论片最新版本 | 国产在线久草 | 六月丁香伊人 | 91成品人影院 | 精品久久一区二区三区 | 一区二区三区韩国免费中文网站 | 日韩免费av片 | 日韩伦理一区二区三区av在线 | 日韩理论在线观看 | 免费成人在线观看视频 | 色婷婷六月天 | 五月天综合婷婷 | av福利在线 | 精品国产乱码久久久久 | 探花视频免费观看 | 天天操福利视频 | 在线91色| 在线视频观看亚洲 | 久久综合之合合综合久久 | 国产精品久久久久一区二区国产 | 狠狠色丁香婷婷综合久小说久 | 精品久久久久久电影 | 五月综合在线观看 | 国产精品久久久久影院日本 | 久久国产精品99精国产 | 免费观看的av网站 | 天天爽人人爽夜夜爽 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 免费成人av网站 | 五月婷婷,六月丁香 | 99产精品成人啪免费网站 | 五月激情亚洲 | 久久国产亚洲视频 | 久久久免费观看完整版 | 制服丝袜天堂 | 久久午夜免费视频 | 97国产一区二区 | 69夜色精品国产69乱 | 国产精品永久 | 国产亚洲在线 | 国产精品福利在线播放 | 亚洲国产日韩精品 | 免费欧美高清视频 | 91丨九色丨91啦蝌蚪老版 | 精品在线一区二区 | 日本精品久久久一区二区三区 | 国色天香在线观看 | 六月天综合网 | 国产精品久久久一区二区三区网站 | 国产精品久久av | 精品久久久久久亚洲 | 99 色| 亚洲国产人午在线一二区 | 91精品蜜桃 | 亚洲综合一区二区精品导航 | 色综合天天天天做夜夜夜夜做 | 国产高清视频色在线www | 丁香久久婷婷 | 91精品啪 | 日韩高清在线不卡 | 在线观看色视频 | 91久久人澡人人添人人爽欧美 | 91精品一区二区在线观看 | 国产三级国产精品国产专区50 | 欧美一二三区播放 | 99人成在线观看视频 | 中文字幕视频 | 国产成人在线免费观看 | 97成人精品区在线播放 | 亚洲视频精选 | 8x成人免费视频 | 三级黄色理论片 | 久久情网| 97在线观| 正在播放国产一区 | 成人av电影在线 | 亚洲成人av一区 | 操操色 | 国产大尺度视频 | 波多野结衣理论片 | 久久久人人爽 | 精品在线二区 | 九九精品视频在线看 | 久久成人麻豆午夜电影 | 亚洲免费a| 91麻豆精品国产 | 欧美日韩精品在线观看 | www.五月天婷婷 | 欧美日韩18| 国产一区二区精品久久91 | 天天摸天天干天天操天天射 | 在线视频精品 | 国产亚洲永久域名 | 国产精品日韩欧美 | 69绿帽绿奴3pvideos | 亚洲第一中文字幕 | 草莓视频在线观看免费观看 | 91亚洲成人 | 在线亚洲精品 | 久久精品99国产精品日本 | 在线日韩视频 | 中文字幕免费播放 | 激情视频免费在线观看 | www.99久久.com | 国产精品videossex国产高清 | 久久a久久 | 日韩专区视频 | 欧美精选一区二区三区 | 99精彩视频在线观看免费 | 69久久99精品久久久久婷婷 | 国产日本在线播放 | 日本中文乱码卡一卡二新区 | 亚洲黄色小说网址 | 九九热在线视频免费观看 | 国产精品美乳一区二区免费 | 日韩美女久久 | 国产成人精品一区二区三区福利 | 一区二区电影在线观看 | 国产一级不卡毛片 | 日本精品在线视频 | 九九热精品视频在线观看 | 色噜噜在线观看 | 在线导航福利 | 国产小视频在线观看免费 | 国产精品嫩草影院99网站 | 黄色福利视频网站 | 97精品国产97久久久久久春色 | 亚洲午夜精品久久久久久久久久久久 | 久久久久久久久久久久久9999 | 国产精品自产拍在线观看中文 | 天天操夜夜爱 | 成年人在线免费看 | 欧美性猛片, | 日日夜夜狠狠操 | 婷婷丁香色 | 亚洲一区精品人人爽人人躁 | 欧美男女爱爱视频 | 91日韩在线专区 | 欧美精品久久久久久久亚洲调教 | 婷婷丁香导航 | 操一草| 福利视频午夜 | 久久成人一区二区 | 国产精品免费在线播放 | 欧美激情在线网站 | 亚洲国产精品va在线看黑人动漫 | 男女激情免费网站 | 天海冀一区二区三区 | 国产91全国探花系列在线播放 | 中文字幕 国产专区 | 免费日韩一区二区三区 | 成人h视频在线播放 | 精品高清视频 | 久久综合综合久久综合 | www久草 | 国产麻豆精品在线观看 | 色中射 | 国产亚洲精品电影 | 亚洲一区二区高潮无套美女 | 亚洲午夜小视频 | 国产色婷婷 | 亚洲成人黄色av | 午夜av免费| 99精品在线观看 | 97在线公开视频 | 成人免费视频播放 | 精品一区在线看 | 成人av免费在线观看 | 91麻豆精品国产自产在线游戏 | 992tv在线观看 | 精品国产一区二区三区男人吃奶 | 在线观看av中文字幕 | 狠狠狠的干 | 久久黄色小说 | 国产精品日韩在线观看 | 国产精品18久久久久久不卡孕妇 | 99久久精品国产一区二区三区 | 成年人视频在线免费播放 | 国产精品久久一区二区三区, | 日本黄色免费电影网站 | 国产精品美女久久久久久免费 | 激情久久婷婷 | 91在线蜜桃臀 | 99热精品久久 | 亚洲高清视频一区二区三区 | 国产你懂的在线 | 69国产盗摄一区二区三区五区 | 午夜久久久精品 | 国产精品一区二区三区久久久 | 国产亚洲视频在线 | 免费看的黄色录像 | 亚洲激情在线播放 | 免费a视频| 国产成人亚洲精品自产在线 | 99久久精品免费视频 | 久久久www成人免费精品 | 亚洲精品国产成人av在线 | 久久中文视频 | 亚洲精品白浆高清久久久久久 | 成人v| 国产女人40精品一区毛片视频 | 毛片无卡免费无播放器 | 欧美精品乱码久久久久久按摩 | 极品嫩模被强到高潮呻吟91 | 欧美日韩国产精品一区二区三区 | 国产一区二区高清不卡 | 免费在线观看成人av | 日本最新一区二区三区 | 中字幕视频在线永久在线观看免费 | 欧美极度另类 | 国产探花视频在线播放 | 亚洲 精品在线视频 | 日本中文字幕影院 | 国产精品综合久久久久 | 狠狠躁夜夜躁人人爽视频 | 亚洲欧洲成人 | 在线一区av | 成人免费看黄 | 日韩午夜在线播放 | 国产精品999久久久 久产久精国产品 | 日本久久久久久久久久久 | 国色天香第二季 | 四虎影视成人永久免费观看亚洲欧美 | 18pao国产成视频永久免费 | 在线看岛国av | 国产原创在线视频 | 国产黄色一级片 | 免费涩涩网站 | 日韩av电影免费观看 | 欧洲色吧 | 色九九在线 | 久久视频这里有精品 | 日韩av一区在线观看 | 久日视频| 国产原创在线视频 | 91精品综合在线观看 | 亚洲 欧洲 国产 日本 综合 | 丁香花在线视频观看免费 | 国产在线视频一区二区 | 91超级碰| 国产丝袜制服在线 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 一区二区三区播放 | 日日夜夜91 | 久久九九国产精品 | 操天天操| 91视频久久久久 | 久久久久女教师免费一区 | 日韩精品极品视频 | 欧美性超爽 | 欧美国产日韩一区二区三区 | 欧美日韩精品在线观看 | 日韩av不卡在线观看 | 开心激情久久 | 日韩在线电影观看 | 波多野结衣综合网 | 精品久久影院 | 美女黄濒 | 国模吧一区 | 久在线 | 日韩免费在线视频观看 | 天天摸夜夜操 | 国产二区视频在线 | 国产一二三区在线观看 | 99精品免费久久久久久日本 | 久久高清免费观看 | 少妇精品久久久一区二区免费 | 久久久黄视频 | 九九免费在线看完整版 | 日韩精选在线观看 | 国产黄a三级三级三级三级三级 | 人人超碰免费 | 在线观看免费 | 97超碰成人在线 | 国产美腿白丝袜足在线av | 日韩在线观看你懂的 | 久久久999| 国产色资源 | 成人毛片网| 911久久香蕉国产线看观看 | 91在线观看欧美日韩 | 中文国产在线观看 | 亚洲欧美日韩中文在线 | 激情视频在线观看网址 | 天天插天天爽 | 一区二区三区在线不卡 | 国色天香在线 | 久久国产精品视频 | 伊人午夜| 久产久精国产品 | 免费观看国产成人 | 中文字幕高清视频 | 黄色网中文字幕 | 在线成人免费av | 免费在线观看成人小视频 | 日韩有码第一页 | 欧美精品久久天天躁 | 亚洲第一香蕉视频 | 亚洲激情校园春色 | 四虎小视频 | 国产成人精品免高潮在线观看 | 综合五月| 欧美aaaxxxx做受视频 | 天天曰天天爽 | 少妇激情久久 | 超碰在97 | 1000部国产精品成人观看 | 久久久久久久久影院 | 成人h电影在线观看 | 91精品国产乱码在线观看 | 丁香六月婷婷综合 | 久久综合五月 | 99久久精品国产系列 | 久草网在线视频 | 亚洲激情电影在线 | 亚洲精品视频在线看 | 国产精品一区二区av影院萌芽 | 国产视 | 日本中文字幕视频 | 天天色天天综合 | 97超碰资源网 | 特级毛片网| 在线看片中文字幕 | zzijzzij日本成熟少妇 | 成人免费视频免费观看 | 成人v| www.五月婷婷 | 精品视频123区在线观看 | 久久黄色片子 | 91成人观看 | 日韩av成人在线 | 91大神免费视频 | 亚洲一区视频在线播放 | 丁香综合网 | 97精品国自产拍在线观看 | 亚洲精品乱码久久久久久蜜桃欧美 | 久久久久国产免费免费 | 久久国精品| 午夜影院一区 | 国产精品成人久久久 | 成人免费观看网址 | 国模视频一区二区三区 | 综合久久网 | 中日韩在线视频 | 久久免费看av | 成人黄色大片在线免费观看 | 欧美日韩亚洲在线观看 | 久久avav| 国产成人久久77777精品 | 精品在线观 | 国产无遮挡又黄又爽馒头漫画 | 欧美aⅴ在线观看 | av激情五月 | 久久精品2 | 97精品国自产拍在线观看 | 人人草网站| 欧美不卡在线 | 免费观看的av网站 | 欧美高清视频不卡网 | 亚洲精品国偷自产在线91正片 | 青青草在久久免费久久免费 | 国产日韩中文字幕在线 | 国产99区| 久久久夜色 | av免费福利 | 免费中文字幕在线观看 | 久草视频一区 | 日韩xxxxxxxxx| av一区二区在线观看中文字幕 | 色com| 在线视频 国产 日韩 | 黄色在线观看www | av一级免费 | 去干成人网 | 国产精品一区二区62 | 久久人人爽人人片 | 一区二区久久久久 | 成人av观看 | 韩国在线一区二区 | www.天天草 | 国产精品黄网站在线观看 | 久久观看最新视频 | 中文字幕人成不卡一区 | 日韩欧美91| 久草视频免费播放 | 国产亚洲久久 | 久久天天躁夜夜躁狠狠85麻豆 | 天天拍天天色 | 亚洲区视频在线 | 欧美一级性生活视频 | 日韩一级片观看 | 免费合欢视频成人app | 97在线看片 | 国产精品久久久久久久妇 | 麻豆国产精品va在线观看不卡 | 99在线免费观看视频 | 欧美精品一区二区三区一线天视频 | 国产成人在线精品 | 麻豆成人网 | 99精品国产99久久久久久福利 | 一本一本久久a久久精品综合妖精 | 国产黄影院色大全免费 | 精品你懂的 | 久久草在线视频国产 | 欧美黄在线 | 日日夜夜综合网 | 又色又爽又黄 | 国产欧美高清 | 999久久久免费精品国产 | 日本爱爱片| 久久精品91视频 | 欧美日韩在线视频一区二区 | 日韩毛片在线播放 | 国产精品mm | 日日夜夜天天人人 | 免费成视频| 欧美日韩一区二区在线观看 | 婷婷五天天在线视频 | 9i看片成人免费看片 | 日韩性色 | 欧美日韩一区久久 | 午夜久久美女 | 色婷婷狠狠五月综合天色拍 | 99热99re6国产在线播放 | 综合久久综合久久 | 色中色综合| 在线91网| 亚洲欧美综合 | 精品日韩在线一区 | 在线视频电影 | 久草在线网址 | 欧美精品免费在线观看 | av色一区 | 亚洲 欧美 91 | 蜜桃av久久久亚洲精品 | 91综合视频在线观看 | 最近更新好看的中文字幕 | 国产精品99在线播放 | 视频一区视频二区在线观看 | 97偷拍视频 | 国产高清成人 | 久久全国免费视频 | 在线影院av| 国产精品久久久久久久毛片 | 日本黄区免费视频观看 | 亚洲成a人片77777kkkk1在线观看 | 亚洲在线成人精品 | 国语精品免费视频 | 欧美日韩国语 | 国产精彩视频一区二区 | 久久色网站 | 在线国产一区二区三区 | 美女视频黄,久久 | 激情欧美丁香 | 91免费观看国产 | 综合网在线视频 | 亚洲精品中文在线 | 超碰在线网| 日韩欧美在线中文字幕 | 欧美亚洲专区 | 91丨九色丨首页 | 国产一区二区三区四区大秀 | 欧美在线视频一区二区三区 | 亚洲成人午夜在线 | 国产精品 视频 | 亚洲v欧美v国产v在线观看 | 久久久久成人精品亚洲国产 | 国产精品美女久久久久久久久久久 | 99色视频在线 | 日本精品一区二区三区在线观看 | www.69xx| 看av在线| 欧美天天综合网 | 婷婷久久网 | 久久久久久高潮国产精品视 | 久热只有精品 | 久久免费a | 色网站在线免费观看 | 日韩av专区 | 日韩电影一区二区三区 | 婷婷草 | 久久狠狠干| 午夜精品三区 | 亚洲一级性 | 正在播放国产一区 | 亚洲三区在线 | 色综合久久88色综合天天免费 | 在线观看日韩国产 | 国产视频在线观看一区二区 | 在线观看免费黄色 | 天天操 夜夜操 | 成人三级av | 国产亚洲人 | 91天堂素人约啪 | 久久不卡日韩美女 | 久久婷婷视频 | 日韩亚洲国产中文字幕 | 看片黄网站| 欧美另类sm图片 | 国产精品18久久久久久久网站 | 99精品成人 | 中文字幕 国产视频 | 午夜精品视频免费在线观看 | h视频日本| 国产精品免费成人 | av成人亚洲 | 国产精品久久久久久久久搜平片 | 九九在线播放 | 91爱爱网址 | 国产午夜三级一二三区 | 超碰在线观看99 | 国语自产偷拍精品视频偷 | 国精产品999国精产品视频 | 99精品国产在热久久下载 | 黄色国产精品 | 国产精品毛片 | 久久精品国产99 | 欧美日韩1区 | 欧美日韩在线视频一区二区 | 天天操天天射天天爽 | 色99久久 | 亚洲欧洲精品视频 | 国产精品久久久久久久99 | 成人久久精品视频 | 天天艹日日干 | 97成人在线观看 | 国产一在线精品一区在线观看 | 91秒拍国产福利一区 | 国产精品久久久久亚洲影视 | 国产精品成人aaaaa网站 | 99热官网 | 又黄又刺激的网站 | 国产在线国偷精品产拍 | 精品久久久久久久 | 韩日精品视频 | 激情伊人五月天 | 97超碰人人 | 午夜精品久久久 | 丁香伊人网 | 精品国产乱子伦一区二区 | 久久在线精品视频 | 免费网站看av片 | 国内外激情视频 | 成年人国产精品 | 欧美激情亚洲综合 | 色国产精品 | 免费看特级毛片 | 日日精品 | 88av色| 精品亚洲午夜久久久久91 | 成人网中文字幕 | 国内精品视频免费 | 欧美成人影音 | 国产女人免费看a级丨片 | 亚洲黄色app | av中文在线观看 | 久久99精品久久久久久三级 | 欧美日韩国产成人 | 丁香花在线观看免费完整版视频 | 在线精品在线 | 黄色av电影一级片 | 亚洲精品中文在线 | 美女又爽又黄 | 97在线播放 | 国产精品99久久久久久久久久久久 | av免费试看 | 美女黄网站视频免费 | 亚洲jizzjizz日本少妇 | 国产一区欧美日韩 | 国产日韩中文字幕在线 | 99这里都是精品 | 91中文字幕在线播放 | 欧美久久久久久久 | 香蕉久久久久久av成人 | av在线日韩| 国产精品久久麻豆 | 在线中文字幕观看 | 国产精品女人久久久久久 | 狠狠狠色丁香婷婷综合激情 | 国产99久久久精品视频 | 99久久精品日本一区二区免费 | 久久久久9999亚洲精品 | 激情视频综合网 | 国产一级片久久 | 在线天堂v| 91精品视频免费在线观看 | 国产99久久九九精品免费 | 国产精品久久久久久久久搜平片 | 天天操欧美 | 亚洲高清91 | 国产亚洲精品久久久网站好莱 | 色天天 | 亚洲精品五月天 | 欧美一区二视频在线免费观看 | 色婷丁香| 亚洲成av人影片在线观看 | 高清av不卡 | 久久久久久国产精品 | 碰超人人| 欧美精品成人在线 | 国内综合精品午夜久久资源 | 日韩精品久久久 | 99久久精品免费 | 婷婷综合伊人 | 青草视频在线 | 国产精品igao视频网网址 | 日日夜夜免费精品视频 | 国产99久久精品一区二区300 | 激情久久综合 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲乱码在线观看 | 久久99久久99精品中文字幕 | www操操操| www.超碰| 国产伦精品一区二区三区高清 | 青青看片 | 日韩精品极品视频 | 国产在线观看免费观看 | 国内免费久久久久久久久久久 | 天天爱天天操 | 啪啪免费试看 | 日一日操一操 | 在线一二区 | 中文字幕五区 | 天天草天天草 | 欧洲亚洲精品 | www视频免费在线观看 | 处女av在线 | 成人资源在线观看 | 国产va精品免费观看 | 亚洲电影在线看 | 日韩精品一区二区免费视频 | 久久伊人精品一区二区三区 | 毛片网站在线看 | av不卡免费在线观看 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 精品欧美一区二区精品久久 | 一区二区毛片 | 日韩精品久久一区二区 | 久久久久免费观看 | 久久a国产 | 国产成人一区二区啪在线观看 | 久久黄色影视 | 一区二区三区播放 | 久久亚洲精品国产亚洲老地址 | 成人免费精品 | 91av九色| 中文字幕精品三区 | 青青草视频精品 | 五月婷婷综合在线视频 | 精品一区 在线 | 久久丁香 | 人人看人人| 一区在线免费观看 | 亚洲精品理论片 | 欧洲亚洲国产视频 | 国产精品成久久久久三级 | 色亚洲网 | 日日夜夜av | 亚洲电影第一页av | 色五月激情五月 | 在线a视频免费观看 | 黄av在线| 精品一区久久 | 亚洲播放一区 | 97夜夜澡人人爽人人免费 | 久久激情网站 | 欧美人牲 | 97av免费视频 | 久久久九色精品国产一区二区三区 | 日韩欧美高清一区二区 | 国模精品一区二区三区 | 亚洲 av网站 | 精品国产一区二区三区四区在线观看 | 中文视频在线看 | 国产丝袜高跟 | 中文字幕在线视频一区 | 国产韩国精品一区二区三区 | 日本三级中文字幕在线观看 | 五月黄色| 九九精品毛片 | 亚洲午夜精 | 国产精品永久久久久久久久久 | 97在线免费视频观看 | 久久五月天婷婷 | 亚州精品成人 | 国产精品久久精品 | 国产九九在线 | 一区二区三区不卡在线 | 免费看的av片 | 日日摸日日碰 | 97精品视频在线播放 | 日韩av影视在线观看 | 国产精品久久久精品 | 中文字幕av全部资源www中文字幕在线观看 | 亚洲 欧美 国产 va在线影院 | 成人h电影在线观看 | 天天做天天爱天天爽综合网 | 日韩av免费一区二区 | 久久国产综合视频 | 免费看污在线观看 | 日韩a在线播放 | 91视频链接 | 日韩免费在线播放 | 久久精品系列 | 91精品免费视频 | 九九热在线视频免费观看 | 国产精品久久久久久久久久久久久久 | 欧美色精品天天在线观看视频 | 天天干天天拍 | 色干综合| 激情丁香5月 | 精品国产网址 | 午夜资源站 | 亚洲精品理论片 | 午夜国产在线观看 | 国产亚洲无 | 日日夜操| 国产精品99免视看9 国产精品毛片一区视频 | 亚洲精品在线免费播放 | 成人在线观看影院 | 色婷婷狠| 最近高清中文字幕 | 精品99视频| 日韩 国产 | 粉嫩aⅴ一区二区三区 | 精品福利av | 在线视频电影 | 992tv人人网tv亚洲精品 | 国内外成人在线 | 亚洲精品在线免费观看视频 | 日韩激情影院 | 国产亚洲精品美女 | 日韩在线视频在线观看 | 黄色软件视频网站 | 久久久精品久久 | 免费a视频在线 | 黄色三级久久 | 成年人在线免费看视频 | 国产中文字幕在线观看 | 狠狠色丁香久久婷婷综合丁香 |