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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

PyTorch环境下对BERT进行Fine-tuning

發布時間:2025/3/21 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyTorch环境下对BERT进行Fine-tuning 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PyTorch環境下對BERT進行Fine-tuning

本文根據Chris McCormick的BERT微調教程進行優化并使其適應于數據集Quora Question Pairs里的判斷問題對是否一致的任務。(文字部分大部分為原文的翻譯)

原文博客地址:https://mccormickml.com/2019/07/22/BERT-fine-tuning/

原文colab地址:https://colab.research.google.com/drive/1pTuQhug6Dhl9XalKB0zUGf4FIdYFlpcX

本文項目地址:https://github.com/yxf975/pretraining_models_learning

前言

本文對刪除了很多原英文博文中一些介紹性的內容,著重于如何實現基礎的BERT微調方法。本解決方法不同于Chris McCormick的有以下幾點:

  • 使用的數據集為Quora問題對數據集
  • 添加了多gpu運行的選擇
  • 將部分代碼封裝進了函數中,方便使用
  • 添加了預測部分

具體對于BERT等預訓練模型的原理的理解,我會單獨創建一個話題,讓我們直接開始吧!

準備工作

檢查GPU

為了讓 torch 使用 GPU,我們需要識別并指定 GPU 作為設備。稍后,在我們的訓練循環中,我們將把數據加載到設備上。

import torch# If there's a GPU available... if torch.cuda.is_available(): # Tell PyTorch to use the GPU. device = torch.device("cuda")n_gpu = torch.cuda.device_count()print('There are %d GPU(s) available.' % n_gpu)print('We will use the GPU:', [torch.cuda.get_device_name(i) for i in range(n_gpu)])# If not... else:print('No GPU available, using the CPU instead.')device = torch.device("cpu")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

安裝Transformer庫

目前,Hugging Face的Transformer庫似乎是最被廣泛接受的、最強大的與BERT合作的pytorch接口。除了支持各種不同的預先訓練好的變換模型外,該庫還包含了這些模型的預構建修改,適合你的特定任務。例如,在本教程中,我們將使用BertForSequenceClassification。

該庫還包括用于標記分類、問題回答、下句預測等的特定任務類。使用這些預建的類可以簡化為您的目的修改BERT的過程。

!pip install transformers
  • 1

加載Quora Question Pairs數據

數據集在kaggle官網上,注冊登錄即可下載,下載地址:https://www.kaggle.com/c/quora-question-pairs 。另外本人在google drive上也共享了數據集,下載地址:https://drive.google.com/drive/folders/1kFkte0Kt2xLe6Ykl4O4_TrL2iCzorOYk

Quora Question Pairs數據集介紹

這個數據集針對于Quora平臺,很多人在Quora上會提出類似措辭的問題。具有相同意圖的多個問題可能會導致搜尋者花費更多時間來尋找問題的最佳答案,并使作者感到他們需要回答同一問題的多個版本。

該任務需要對問題對是否重復進行分類,從而解決自然語言處理問題。這樣做將使查找問題的高質量答案變得更加容易,從而為Quora的作家,搜尋者和讀者帶來了更好的體驗。

pandas加載數據

import pandas as pd import numpy as np# Load the dataset into a pandas dataframe. train_data = pd.read_csv("./train.csv", index_col="id",nrows=10000) train_data.head(6)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

這里我顯示6行,因為到第六行才有個正樣本。

idqid1qid2question1question2is_duplicate
012What is the step by step guide to invest in share market in india?What is the step by step guide to invest in share market?0
134What is the story of Kohinoor (Koh-i-Noor) Diamond?What would happen if the Indian government stole the Kohinoor (Koh-i-Noor) diamond back?0
256How can I increase the speed of my internet connection while using a VPN?How can Internet speed be increased by hacking through DNS?0
378Why am I mentally very lonely? How can I solve it?Find the remainder when [math]23^{24}[/math] is divided by 24,23?0
4910Which one dissolve in water quikly sugar, salt, methane and carbon di oxide?Which fish would survive in salt water?0
51112Astrology: I am a Capricorn Sun Cap moon and cap rising…what does that say about me?I’m a triple Capricorn (Sun, Moon and ascendant in Capricorn) What does this say about me?1

我們實際關心的三個屬性是"question1",“question1"和它們的標簽"is_duplicate”,這個標簽被稱為"是否重復"(0=不重復,1=重復)。

訓練集驗證集拆分

把我們的訓練集分成 80% 用于訓練,20% 用于驗證。

from sklearn.model_selection import train_test_split# train_validation data split X_train, X_val, y_train, y_val = train_test_split(train_data[["question1", "question2"]], train_data["is_duplicate"], test_size=0.2, random_state=405633)
  • 1
  • 2
  • 3
  • 4

Tokenization & Input 格式化

BERT Tokenizer

from transformers import BertTokenizer# load bert tokenizer tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True)
  • 1
  • 2
  • 3
  • 4

查看數據中句子的最長長度

#calculate the maximum sentence length max_len = 0 for _, row in train_data.iterrows():max_len = max(max_len, len(tokenizer(row['question1'],row['question2'])["input_ids"]))print("max token length of the input:", max_len)# set the maximum token length max_length = pow(2,int(np.log2(max_len)+1)) print("max token length for BERT:", max_length)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

轉換為BERT輸入

from torch.utils.data import TensorDataset# func to convert data to bert input def convert_to_dataset_torch(data: pd.DataFrame, labels = pd.Series(data=None)) -> TensorDataset:input_ids = []attention_masks = []token_type_ids = []for _, row in tqdm(data.iterrows(), total=data.shape[0]):encoded_dict = tokenizer.encode_plus(row["question1"], row["question2"], max_length=max_length, pad_to_max_length=True, return_attention_mask=True, return_tensors='pt', truncation=True)# Add the encoded sentences to the list.input_ids.append(encoded_dict['input_ids'])token_type_ids.append(encoded_dict["token_type_ids"])# And its attention mask (simply differentiates padding from non-padding).attention_masks.append(encoded_dict['attention_mask'])# Convert the lists into tensors.input_ids = torch.cat(input_ids, dim=0)token_type_ids = torch.cat(token_type_ids, dim=0)attention_masks = torch.cat(attention_masks, dim=0)if labels.empty:return TensorDataset(input_ids, attention_masks, token_type_ids)else:labels = torch.tensor(labels.values)return TensorDataset(input_ids, attention_masks, token_type_ids, labels)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
train = convert_to_dataset_torch(X_train, y_train) validation = convert_to_dataset_torch(X_val, y_val)
  • 1
  • 2

將數據放入DataLoader

我們還將使用 torch DataLoader 類為我們的數據集創建一個迭代器。這有助于在訓練過程中節省內存,因為與for循環不同,有了迭代器,整個數據集不需要加載到內存中。

from torch.utils.data import DataLoader, RandomSampler, SequentialSampler# set batch size for DataLoader(options from paper:16 or 32) batch_size = 32# Create the DataLoaders for training and validation sets train_dataloader = DataLoader(train, sampler = RandomSampler(train), # Select batches randomlybatch_size = batch_size )# For validation validation_dataloader = DataLoader(validation, sampler = SequentialSampler(validation), # Pull out batches sequentially.batch_size = batch_size )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

加載模型

加載預訓練模型BertForSequenceClassification

我們將使用BertForSequenceClassification。這是普通的BERT模型,上面增加了一個用于分類的單線性層,我們將使用它作為句子分類器。當我們輸入數據時,整個預先訓練好的BERT模型和額外的未經訓練的分類層會根據我們的特定任務進行訓練。

from transformers import BertForSequenceClassification, AdamW, BertConfig# Load BertForSequenceClassification, the pretrained BERT model with a single # linear classification layer on top. model = BertForSequenceClassification.from_pretrained("bert-base-uncased", # Use the 12-layer BERT model, with an uncased vocab.num_labels = 2, # The number of output labels--2 for binary classification.# You can increase this for multi-class tasks. output_attentions = False, # Whether the model returns attentions weights.output_hidden_states = False, # Whether the model returns all hidden-states. )# Tell pytorch to run this model on the GPU. model.cuda() if n_gpu > 1:model = torch.nn.DataParallel(model)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

當然也可以對BERT網絡結構進行修改以適應我們的任務,這里我就直接使用原模型。

優化器 & 學習率調度器

為了微調的目的,BERT論文的作者建議從以下數值中選擇(來自BERT論文的附錄A.3)。

  • batch大小:?16,32。(在Dataloader里設置)
  • 學習率(Adam):?5e-5、3e-5、2e-5。
  • epoch數:?2、3、4。
from transformers import get_linear_schedule_with_warmupoptimizer = AdamW(model.parameters(),lr = 2e-5, # args.learning_rateeps = 1e-8 # args.adam_epsilon)# Number of training epochs epochs = 2# Total number of training steps is [number of batches] x [number of epochs]. total_steps = len(train_dataloader) * epochs# Create the learning rate scheduler. scheduler = get_linear_schedule_with_warmup(optimizer, num_warmup_steps = 0, # Default value in run_glue.pynum_training_steps = total_steps)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

訓練

時間規范函數

import time import datetime# Helper function for formatting elapsed times as hh:mm:ss def format_time(elapsed):'''Takes a time in seconds and returns a string hh:mm:ss'''# Round to the nearest second.elapsed_rounded = int(round((elapsed)))# Format as hh:mm:ssreturn str(datetime.timedelta(seconds=elapsed_rounded))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

fit函數

from tqdm import tqdmdef fit_batch(dataloader, model, optimizer, epoch):total_train_loss = 0for batch in tqdm(dataloader, desc=f"Training epoch:{epoch+1}", unit="batch"):# Unpack batch from dataloader.input_ids = batch[0].to(device)attention_masks = batch[1].to(device)token_type_ids = batch[2].to(device)labels = batch[3].to(device)# clear any previously calculated gradients before performing a backward pass.model.zero_grad()# Perform a forward pass (evaluate the model on this training batch).outputs = model(input_ids, token_type_ids=token_type_ids, attention_mask=attention_masks, labels=labels)loss = outputs[0]total_train_loss += loss.item()# Perform a backward pass to calculate the gradients.loss.backward()# normlization of the gradients to 1.0 to avoid exploding gradientstorch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)# Update parameters and take a step using the computed gradient.optimizer.step()# Update the learning rate.scheduler.step()return total_train_loss
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

驗證評估函數

from sklearn.metrics import accuracy_scoredef eval_batch(dataloader, model, metric=accuracy_score):total_eval_accuracy = 0total_eval_loss = 0predictions , predicted_labels = [], []for batch in tqdm(dataloader, desc="Evaluating", unit="batch"):# Unpack batch from dataloader.input_ids = batch[0].to(device)attention_masks = batch[1].to(device)token_type_ids = batch[2].to(device)labels = batch[3].to(device)# Tell pytorch not to bother with constructing the compute graph during# the forward pass, since this is only needed for backprop (training).with torch.no_grad():# Forward pass, calculate logit predictions.outputs = model(input_ids, token_type_ids=token_type_ids, attention_mask=attention_masks,labels=labels)loss = outputs[0]logits = outputs[1]total_eval_loss += loss.item()# Move logits and labels to CPUlogits = logits.detach().cpu().numpy()label_ids = labels.to('cpu').numpy()# Calculate the accuracy for this batch of validation sentences, and# accumulate it over all batches.y_pred = np.argmax(logits, axis=1).flatten()total_eval_accuracy += metric(label_ids, y_pred)predictions.extend(logits.tolist())predicted_labels.extend(y_pred.tolist())return total_eval_accuracy, total_eval_loss, predictions ,predicted_labels
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

訓練函數

def train(train_dataloader, validation_dataloader, model, optimizer, epochs):# list to store a number of quantities such as # training and validation loss, validation accuracy, and timings.training_stats = []# Measure the total training time for the whole run.total_t0 = time.time()for epoch in range(0, epochs):# Measure how long the training epoch takes.t0 = time.time()# Reset the total loss for this epoch.total_train_loss = 0# Put the model into training mode. model.train()total_train_loss = fit_batch(train_dataloader, model, optimizer, epoch)# Calculate the average loss over all of the batches.avg_train_loss = total_train_loss / len(train_dataloader)# Measure how long this epoch took.training_time = format_time(time.time() - t0)t0 = time.time()# Put the model in evaluation mode--the dropout layers behave differently# during evaluation.model.eval()total_eval_accuracy, total_eval_loss, _, _ = eval_batch(validation_dataloader, model)# Report the final accuracy for this validation run.avg_val_accuracy = total_eval_accuracy / len(validation_dataloader)print("\n")print(f"score: {avg_val_accuracy}")# Calculate the average loss over all of the batches.avg_val_loss = total_eval_loss / len(validation_dataloader)# Measure how long the validation run took.validation_time = format_time(time.time() - t0)print(f"Validation Loss: {avg_val_loss}")print("\n")# Record all statistics from this epoch.training_stats.append({'epoch': epoch,'Training Loss': avg_train_loss,'Valid. Loss': avg_val_loss,'Valid. score.': avg_val_accuracy,'Training Time': training_time,'Validation Time': validation_time})print("")print("Training complete!")print(f"Total training took {format_time(time.time()-total_t0)}")return training_stats
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

開始訓練

import random# Set the seed value all over the place to make this reproducible. seed_val = 2020random.seed(seed_val) np.random.seed(seed_val) torch.manual_seed(seed_val) if n_gpu > 0:torch.cuda.manual_seed_all(seed_val)training_stats = train(train_dataloader, validation_dataloader, model, optimizer, epochs)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

查看訓練過程中的的評估數據

df_stats = pd.DataFrame(training_stats).set_index('epoch') df_stats
  • 1
  • 2

預測

預測函數

def predict(dataloader, model):prediction = list()for batch in tqdm(dataloader, desc="predicting", unit="batch"):# Unpack batch from dataloader.input_ids = batch[0].to(device)attention_masks = batch[1].to(device)token_type_ids = batch[2].to(device)# Tell pytorch not to bother with constructing the compute graph during# the forward pass, since this is only needed for backprop (training).with torch.no_grad():# Forward pass, calculate logit predictions.outputs = model(input_ids, token_type_ids=token_type_ids, attention_mask=attention_masks)logits = outputs[0]# Move logits and labels to CPUlogits = logits.detach().cpu().numpy()prediction.append(logits)pred_logits = np.concatenate(prediction, axis=0)pred_label = np.argmax(pred_logits, axis=1).flatten()print("done")return (pred_label,pred_logits)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

為測試集創建Dataloader

# Create the DataLoader for test data. prediction_data = convert_to_dataset_torch(test_data) prediction_sampler = SequentialSampler(prediction_data) prediction_dataloader = DataLoader(prediction_data, sampler=prediction_sampler, batch_size=batch_size)
  • 1
  • 2
  • 3
  • 4

預測

也可以用softmax將logits轉化為相應的概率

y_pred,logits = predict(prediction_dataloader,model) # get the corresponding probablities prob = torch.nn.functional.softmax(torch.tensor(logits))
  • 1
  • 2
  • 3

總結

本篇文章演示了利用預先訓練好的 BERT 模型,微調適應于Quora問題對任務。在面對其他類似的文本分類問題時也可以采取類似的微調方法。

當然如果想要更精確的更好的預測結果,可能需要使用更好的更合適的預訓練模型,修改網絡模型使之更適合當前任務,或者加入對抗訓練等方法。

總結

以上是生活随笔為你收集整理的PyTorch环境下对BERT进行Fine-tuning的全部內容,希望文章能夠幫你解決所遇到的問題。

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

日韩免费看的电影 | 丁香婷婷激情五月 | 最近日本字幕mv免费观看在线 | 成人片在线播放 | 日韩高清网站 | 91久久奴性调教 | 亚洲视频 视频在线 | 免费视频久久久久 | 免费看黄电影 | 久久综合影视 | 毛片基地黄久久久久久天堂 | 在线免费高清视频 | 亚洲精品在线播放视频 | 免费在线观看av不卡 | 天天综合色 | www.五月婷 | 久久国产精品二国产精品中国洋人 | 日日日爽爽爽 | 97视频在线免费观看 | 99在线观看免费视频精品观看 | 久久综合狠狠 | 久久天堂精品视频 | 日韩xxxbbb| 黄色av在 | 久久久久日本精品一区二区三区 | 九九久久免费视频 | a级片在线播放 | 久草在线视频在线观看 | 日韩精品一区二区三区三炮视频 | 亚洲激情在线播放 | 国产精品美女久久久久aⅴ 干干夜夜 | 国产欧美精品xxxx另类 | 国产成人a v电影 | 深爱五月激情五月 | 黄网站色欧美视频 | 99久久久| 国产精品久久艹 | 在线观av| 97色涩| 国产视频一区在线免费观看 | 日韩欧美在线视频一区二区三区 | 免费黄色av.| 国产精品区在线观看 | 九月婷婷综合网 | 国产免费人成xvideos视频 | 激情 亚洲| 亚洲午夜精品一区 | 久久99热这里只有精品 | 亚洲综合成人专区片 | 96看片 | 国产成人一区二区三区在线观看 | 日韩成人免费在线电影 | 国产看片 色 | 91精品国产91久久久久 | 国产精品免费久久久久久久久久中文 | 精品96久久久久久中文字幕无 | 狠狠天天 | 日韩电影在线一区二区 | 成年人免费观看国产 | 超碰在线cao | 国产综合激情 | 国色天香在线 | 人人爽爽人人 | 99re视频在线观看 | 国产69久久精品成人看 | 99色婷婷| 夜夜躁天天躁很躁波 | 国产99区 | 国产精品久久久久aaaa | 六月色婷婷 | 在线香蕉视频 | 亚洲国产一区av | 国产美女永久免费 | 久久99电影 | 狠狠gao| 久久精品99国产精品 | 色噜噜在线观看视频 | 狠狠干在线 | 成人午夜性影院 | 久久人人爽人人爽人人片av软件 | 一级黄色av | 精品国模一区二区三区 | 亚洲精品视频网址 | 插综合网 | 久久精品伊人 | 麻豆传媒视频在线 | 国产精品免费麻豆入口 | 五月婷网 | 国产美女久久久 | 欧美精彩视频 | 又黄又爽的免费高潮视频 | 99精品视频免费全部在线 | 婷五月天激情 | 亚洲最大激情中文字幕 | 婷婷六月色 | 日日精品 | 热re99久久精品国产66热 | 成 人 黄 色视频免费播放 | 国产精品毛片一区二区三区 | 6080yy午夜一二三区久久 | 在线观看视频免费播放 | 成人羞羞视频在线观看免费 | 成片视频在线观看 | 日本三级全黄少妇三2023 | 一区二区三区中文字幕在线 | 日日夜夜网 | 狠狠色噜噜狠狠狠狠2021天天 | 中文字幕 欧美性 | 91在线视频精品 | 日韩高清dvd| 国产原创在线观看 | 在线免费观看亚洲视频 | 在线小视频你懂得 | 97视频网站 | 国产一线二线三线在线观看 | 国产亚洲成av人片在线观看桃 | 久久精品99国产精品日本 | 美女网站免费福利视频 | 免费高清看电视网站 | 伊人影院在线观看 | 国产97在线视频 | 亚洲国产日韩一区 | 亚洲美女精品区人人人人 | 青青久草在线视频 | 久久99精品国产91久久来源 | 久久精品视频日本 | 国产精品亚州 | 久久久久久久久久福利 | 亚洲最大免费成人网 | 一级一级一片免费 | 成人免费看电影 | av免费观看高清 | 久久免费成人 | 精品国产伦一区二区三区观看体验 | 久久久久久毛片精品免费不卡 | 精品人人人人 | 日韩欧美网站 | 亚洲国产中文字幕在线观看 | 久久人人97超碰com | 中文字幕人成乱码在线观看 | 人人爽人人爽人人爽学生一级 | 国产精品一区久久久久 | 国产又粗又硬又爽视频 | 欧美俄罗斯性视频 | 91免费版在线 | 四虎影视8848aamm | 精品国产成人av在线免 | 免费下载高清毛片 | av成人资源 | 久久免费视频一区 | 91系列在线| 日精品| 婷婷在线视频观看 | 麻豆国产网站入口 | 国产经典三级 | 亚洲黄色影院 | 亚洲视频免费在线观看 | 国产精品美女久久久久久网站 | 亚洲成色 | 最近中文字幕免费 | 成人av免费在线观看 | 久久久久国产一区二区三区 | 黄色一区二区在线观看 | 国产精品 亚洲精品 | 久久久国产精品免费 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | a视频免费看 | 国产精品视频全国免费观看 | 欧美aaa视频 | 久久精品女人毛片国产 | 日本三级全黄少妇三2023 | 久久人人爽人人爽人人 | 亚洲狠狠婷婷综合久久久 | 少妇啪啪av入口 | 激情喷水 | 精品国产一区二区三区久久久蜜月 | 精品久久网站 | 国产日韩精品一区二区三区 | 91精品视频在线观看免费 | www夜夜 | 激情久久综合网 | 日韩资源在线观看 | 九九影视理伦片 | 国产高清av在线播放 | 国产不卡在线看 | 欧美人体xx| 日韩欧美一级二级 | 日韩成人一级大片 | 婷婷六月久久 | 婷婷色伊人 | 美女视频黄是免费的 | 精品国产一二三四区 | 欧美做受高潮 | 国产精品精品久久久久久 | 成人污视频在线观看 | 婷婷在线不卡 | 久久不卡免费视频 | 成人免费视频播放 | av福利在线导航 | 欧美日韩免费观看一区=区三区 | 国精产品满18岁在线 | 天天爱天天 | 亚洲精品系列 | 国产在线小视频 | 91香蕉视频 mp4 | 国产操在线 | 久久精品美女视频网站 | 欧美福利网址 | 五月天久久久久久 | 在线观看免费黄色 | 欧美性黄网官网 | 美女网站在线免费观看 | 日韩av快播电影网 | 国产精品免费在线视频 | 久久精品中文 | 免费视频成人 | 国产成人久久精品77777综合 | 天堂在线免费视频 | 日韩在线免费看 | 500部大龄熟乱视频使用方法 | 激情久久小说 | 91精品婷婷国产综合久久蝌蚪 | a色网站| 亚洲婷婷综合色高清在线 | 久久亚洲欧美 | 久久精品国产精品 | 私人av| 91色网址| 日韩欧美视频一区 | av片免费播放 | 国产在线精品一区二区不卡了 | 亚洲精品婷婷 | 日韩啪啪小视频 | 久久久国产精品亚洲一区 | 亚洲 中文字幕av | 亚洲国内精品在线 | 免费观看版| 91污视频在线观看 | 精品久久久久久久久久久久久久久久 | 人成在线免费视频 | 久久久精品福利视频 | 粉嫩av一区二区三区四区 | 国产1区在线观看 | 美女网站黄免费 | 日韩精品一区二区在线观看视频 | 免费av一级电影 | 久久免视频 | 日av免费 | 亚洲精品一区二区网址 | 黄色三级久久 | 国产精品区二区三区日本 | 亚洲狠狠干 | 中文字幕中文字幕在线中文字幕三区 | 91经典在线| 激情视频在线高清看 | 国产精品久久久久三级 | 日韩免费在线观看网站 | 97人人澡人人爽人人模亚洲 | 麻豆视传媒官网免费观看 | 91丨九色丨高潮 | 日韩大片在线看 | 色偷偷88888欧美精品久久久 | 五月婷婷欧美视频 | 黄色小说视频在线 | 中文字幕在线观看网 | 国产精品毛片久久久久久久 | 日韩免费在线视频 | 欧美一级片 | 欧美精品在线视频 | 欧美日韩高清在线一区 | 国产成人精品综合久久久 | 日韩videos | 欧洲性视频 | 国产精品久久久一区二区 | 久草电影免费在线观看 | 激情 亚洲| 五月天精品视频 | 国产精品成人在线观看 | 波多野结衣一区二区三区中文字幕 | 一区二区三区不卡在线 | 中文字幕美女免费在线 | 狠狠色丁香婷婷综合橹88 | 久久精品一二三 | 97超碰国产精品女人人人爽 | 久久成人高清视频 | 国内精品美女在线观看 | 中国精品少妇 | 小草av在线播放 | 久草在线久 | 亚洲欧洲一区二区在线观看 | 日韩久久久久久久久久 | 三级黄色理论片 | 色偷偷88欧美精品久久久 | 国产在线观看91 | 亚洲精区二区三区四区麻豆 | 欧美精品一区二区在线观看 | 天天操天天操天天操 | 免费三级黄色片 | 久久深夜 | 日日操夜 | 亚洲一区视频免费观看 | 国产成人一区二区三区在线观看 | 日韩精品视频免费在线观看 | 国产精品一区二区三区免费视频 | 一区二区亚洲精品 | 精品国产一区二区在线 | 欧美性生活小视频 | 99国产精品视频免费观看一公开 | 综合色中色 | 午夜精品久久久 | 在线小视频你懂的 | 国产一区视频免费在线观看 | 一区二区三区四区在线免费观看 | 97手机电影网 | 日批视频国产 | 久久久精品日本 | 中文字幕一区二区三区四区在线视频 | 日韩专区在线播放 | 国内视频在线观看 | 97色综合 | 久久不卡av | 免费碰碰 | 日本久久中文字幕 | 亚洲综合爱 | 国产韩国日本高清视频 | 天天综合色 | 综合激情网 | 999久久久久久 | 欧美日韩高清在线 | 丁五月婷婷 | 91成熟丰满女人少妇 | 草久久久久久 | 涩涩网站在线 | 久久任你操 | 91视频电影 | 久久免费视频这里只有精品 | 国产精品一区二区免费 | 亚洲 欧美 综合 在线 精品 | 欧美日韩不卡在线 | 亚洲视频在线观看 | 亚洲精品视频在线观看网站 | 久久精品一级片 | 中文在线a在线 | 美女黄久久 | 色婷婷色| 日韩精品一区二区在线观看视频 | 欧美人体xx| 人人草在线视频 | 久久久在线免费观看 | 久草视频手机在线 | 中文字幕在线观看视频一区二区三区 | 欧美a级免费视频 | 四虎国产精品永久在线国在线 | 久久国产精品视频免费看 | 婷婷伊人五月天 | 国产精品青草综合久久久久99 | 国产亚洲婷婷 | 成人中文字幕在线观看 | 精品影院一区二区久久久 | 久久精品在线 | 永久精品视频 | 天天色天天操综合 | 91中文字幕永久在线 | av导航福利 | 色噜噜狠狠色综合中国 | 久久精品视频4 | 丝袜一区在线 | 国产又粗又长的视频 | 麻豆国产视频下载 | 九九久久国产精品 | 天天综合区 | 久草免费在线 | 欧美人体xx | 精品伊人久久久 | 国内精品久久久久影院一蜜桃 | 久久国产片| 天天干天天拍天天操 | 久久国精品 | 久久久人人人 | 成人a在线观看高清电影 | 国产美女主播精品一区二区三区 | 96精品高清视频在线观看软件特色 | 伊人婷婷久久 | 欧美福利久久 | 国产精品99在线播放 | 欧美视频二区 | 成人免费看黄 | 操操操天天操 | www.色婷婷| 天天摸天天操天天爽 | 视频二区 | 一区中文字幕 | 国产黄色免费看 | 国产亚洲精品中文字幕 | 人人艹人人 | 91精品网站| 国产日韩欧美自拍 | 91av视频观看 | 国产色婷婷精品综合在线手机播放 | 99精品欧美一区二区 | 在线观看黄色av | 99热这里| www.操.com| 久久精品视频在线免费观看 | 久久久久国产精品免费 | 国产xxxx做受性欧美88 | 国产精品一区二区果冻传媒 | 国产成人精品一区二区三区免费 | 国产精品亚洲片夜色在线 | 久久久久美女 | 麻豆mv在线观看 | 亚洲免费视频观看 | 午夜av激情 | 午夜视频亚洲 | 国产亚洲精品成人av久久ww | 国产91精品一区二区麻豆网站 | 久久草网站 | 国产探花 | 在线免费国产 | h网站免费在线观看 | 国内精品久久久久久久影视简单 | 色综合天天| 最近中文字幕免费av | 国产在线一卡 | 五月天色站 | 免费看片网页 | 在线免费91| 2021av在线 | 久久av免费电影 | 久久精品网址 | 黄色一级动作片 | 天天操夜夜做 | 国产黄色理论片 | 久久99国产精品二区护士 | 中文字幕第一 | 在线综合 亚洲 欧美在线视频 | 久草影视在线观看 | av综合站| 欧美激情视频免费看 | 最近日本韩国中文字幕 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日本性xxx| 夜夜躁狠狠躁日日躁视频黑人 | 国产中文字幕网 | 日韩高清免费无专码区 | 中文字幕在线视频一区二区三区 | 精品久久久久久综合日本 | 日日夜夜精品视频天天综合网 | 国产精品久久久久久久久久东京 | 天天鲁天天干天天射 | 日韩欧美一区二区三区黑寡妇 | 中文字幕亚洲五码 | 在线看日韩 | 婷婷激情网站 | 国产精品久久网站 | 婷婷丁香导航 | 日韩免费一级电影 | 4438全国亚洲精品观看视频 | 日韩欧美精品免费 | av天天澡天天爽天天av | 精产嫩模国品一二三区 | 2018亚洲男人天堂 | 色综合久久久久综合 | 精品久久福利 | 毛片网站在线看 | 国产成人性色生活片 | 日韩成人xxxx | 中文字幕在线观看第三页 | 综合网色| 国产亚洲精品久久 | 91桃色国产在线播放 | 日韩精品免费专区 | 精品电影一区二区 | 国产成人精品一区二区三区免费 | 国产精品乱码在线 | 色欧美视频 | 在线中文字幕观看 | 黄色网址av| 亚洲婷婷免费 | 在线观看日韩国产 | 欧美精品一区二区在线观看 | 国产精品第2页 | 99在线观看视频 | 国产成人久久精品亚洲 | 成人a级网站 | 国产精品久久久久久久久久久久久 | 日本久久久久久久久久久 | 天天射,天天干 | 午夜视频不卡 | 中文字幕视频一区 | 亚洲 综合 国产 精品 | 久久久国产成人 | 日韩精品一区二区三区免费观看 | 久草在线这里只有精品 | 久免费| 五月婷在线| 国产精品久久久久久久久久东京 | 婷婷伊人综合亚洲综合网 | 人人爽人人爽人人爽学生一级 | 久久久久久久免费看 | 久久综合九色综合欧美狠狠 | 午夜精品麻豆 | 黄色三级免费片 | 奇人奇案qvod | 成人福利在线播放 | 青草视频在线播放 | 久久久久久久久久久久久久电影 | 在线之家免费在线观看电影 | 黄色tv视频| 999视频在线播放 | 韩国av一区| 一区二区三区手机在线观看 | 天天操 夜夜操 | 97国产情侣爱久久免费观看 | 国产一区二区电影在线观看 | www.99热精品 | 国产99在线播放 | 91成年人在线观看 | 99热精品视 | 日色在线视频 | 99精品热视频只有精品10 | 国产xx在线 | 亚洲性xxxx| 亚洲精品乱码久久 | 久久天堂亚洲 | 色婷婷狠狠五月综合天色拍 | 日韩在线激情 | 婷婷丁香色综合狠狠色 | 精品国产区 | 97视频在线免费 | 国产精品久久久久久影院 | 中文字幕日本电影 | 91成人免费在线视频 | 天天想夜夜操 | www亚洲精品 | 夜添久久精品亚洲国产精品 | 国产aaa大片 | 国产极品尤物在线 | 久草免费看 | 国产精品入口麻豆www | 久草在线在线视频 | 亚洲精品av在线 | 国产精品国产亚洲精品看不卡15 | 91九色在线播放 | 色妞色视频一区二区三区四区 | 国产毛片aaa | 亚洲国产中文在线观看 | 精品在线视频一区 | 久草青青在线观看 | av三级av| 亚洲欧美国产精品18p | 亚洲精品www | 在线观看91精品国产网站 | 日韩欧美高清一区二区 | 日本xxxx.com| 国产精品久久片 | 97国产精品久久 | 久久久综合 | 久精品在线观看 | 亚洲国产天堂av | 精品免费观看视频 | 亚洲综合在线播放 | 五月婷婷另类国产 | 成人久久精品视频 | 日韩电影中文字幕在线 | 日韩久久视频 | 精品人人爽 | 黄色在线免费观看网址 | 五月婷av| 国产男女免费完整视频 | 日韩伦理片一区二区三区 | 久久久久久在线观看 | 中文字幕在线观看免费高清完整版 | 国产精品久久久久永久免费观看 | 五月在线 | 亚洲欧美日韩国产 | 国产无遮挡又黄又爽在线观看 | 免费成人在线视频网站 | 亚洲精品av在线 | 欧美影院久久 | 国产999在线 | 色综合久久久久综合 | 久久99久久99精品免视看婷婷 | 天天操夜夜操天天射 | 色婷婷在线观看视频 | 精品国产91亚洲一区二区三区www | 在线91网| 日韩精品无 | 国产福利免费在线观看 | 岛国av在线不卡 | 综合色在线 | 成 人 黄 色 视频播放1 | 久久亚洲免费 | 国产在线观看 | 91视频首页 | 伊人五月综合 | 99日韩精品 | 视频在线精品 | 国产精品一区二区吃奶在线观看 | 国产日产精品一区二区三区四区 | 国产成人精品久久亚洲高清不卡 | 国产精品一区在线观看 | 色婷婷啪啪免费在线电影观看 | www.99热精品| 久久免费观看视频 | 99热国产在线 | 国产不卡免费视频 | 在线黄色免费av | 人人舔人人爱 | 久久久久久久久久毛片 | 四虎国产视频 | 久久露脸国产精品 | 久久精品国产久精国产 | 91免费高清 | 人人射人人澡 | 一区二区三区免费在线 | 日韩视频精品在线 | 免费在线一区二区 | 在线免费观看不卡av | 日本69hd| 香蕉日日 | 黄色特一级片 | 久久香蕉国产 | 蜜桃视频精品 | 免费欧美高清视频 | 亚洲激情视频在线 | 国产中文字幕免费 | 一区二区三区免费网站 | 久久免费视频观看 | 激情丁香 | 日日摸日日添日日躁av | 久久久久国产精品视频 | 国产四虎在线 | 黄色精品久久 | 三级av在线播放 | 久久久久欠精品国产毛片国产毛生 | 欧洲一区二区在线观看 | 四虎欧美 | 免费在线观看中文字幕 | 亚洲1区在线 | 91av视频网 | 久久在线视频精品 | 91精品欧美一区二区三区 | 丁香花五月| 99久久婷婷国产综合亚洲 | 99精品视频一区 | 99免费看片| 色99之美女主播在线视频 | 婷婷伊人五月 | 日韩中文字幕在线 | 91资源在线免费观看 | 久久国产欧美日韩精品 | 国产美腿白丝袜足在线av | 黄色福利视频网站 | 国产免码va在线观看免费 | 综合影视 | 99精品视频免费 | 日韩黄色免费电影 | 色老板在线 | 欧美激情视频一区二区三区 | 欧美精品乱码久久久久久按摩 | 日本黄色大片免费看 | 精品久久网站 | 欧美-第1页-屁屁影院 | 成人午夜电影在线 | 国内精品久久影院 | 国产午夜在线观看视频 | 波多野结衣在线视频一区 | 成人久久影院 | 免费a级毛片在线看 | 日韩精品欧美专区 | 丁香激情五月 | 免费看三级网站 | 国产a级片免费观看 | 999热线在线观看 | 丁香六月伊人 | 热久久99这里有精品 | 最近中文字幕高清字幕免费mv | 综合久久久久久 | 成人av在线观 | 国产性天天综合网 | 九九视频免费观看视频精品 | 午夜精品久久久久久 | 91夫妻自拍 | 在线播放精品一区二区三区 | 中文字幕4| 月丁香婷婷 | 日韩欧美在线免费观看 | 免费在线黄| 天天综合日日夜夜 | 亚洲天堂免费视频 | 亚洲成色777777在线观看影院 | 欧美美女一级片 | 91丨九色丨勾搭 | 亚洲欧美综合精品久久成人 | 香蕉网在线观看 | 国产亚洲精品久久久久久久久久久久 | 国产视频在线观看一区二区 | 国产麻豆精品传媒av国产下载 | 最近中文字幕高清字幕免费mv | 亚洲成人黄色在线观看 | 国产资源在线播放 | 久久久亚洲影院 | 黄色99视频 | 日韩久久久 | 手机成人在线 | 欧美a级一区二区 | 国内视频一区二区 | 国产精品一区二区三区久久久 | 久久久免费视频播放 | 国产视频一区二区在线观看 | 播五月婷婷 | 欧洲激情综合 | 色综合天天综合在线视频 | 免费观看成人 | 最新午夜电影 | 日韩二级毛片 | 欧美成人区 | 久久精品国产亚洲a | 午夜视频在线观看网站 | 91精品在线观看入口 | 99久久久国产精品免费观看 | 粉嫩av一区二区三区四区五区 | 久久精品永久免费 | 在线观看精品黄av片免费 | 亚洲深夜影院 | 五月激情丁香图片 | 激情丁香婷婷 | 亚洲精品中文字幕在线观看 | 日韩乱理 | 久草视频在线资源 | a级一a一级在线观看 | 久草新在线 | 美女国产在线 | 国产精品久久二区 | 欧美激情综合五月色丁香 | 天堂av中文字幕 | 国产成人一二三 | 在线视频观看亚洲 | 国产97视频在线 | 看毛片网站 | 免费欧美精品 | 亚洲五月激情 | 日本公妇色中文字幕 | 国产在线不卡视频 | 成年一级片 | 久久精品国产精品亚洲精品 | 国产一区二区精品久久 | 成片免费观看视频 | 欧美一级在线看 | 黄色中文字幕 | 在线观看av中文字幕 | 免费成人黄色片 | 精品国产乱码久久久久久三级人 | 免费a v在线 | 色永久免费视频 | 久久精品国产一区二区 | 亚洲最大在线视频 | 波多野结衣在线观看视频 | 亚洲精品国产精品国自产观看 | 在线免费黄色片 | 中文字幕丝袜 | 久久色在线播放 | 亚洲一级性 | 成人a免费看 | www免费视频com━ | 免费高清在线一区 | www五月| 丁香五月亚洲综合在线 | 国产精品久久久久久欧美 | 午夜精品久久久久久久久久 | 日韩在线观看视频网站 | 99精品视频免费看 | 日韩国产欧美在线播放 | 亚洲最新在线 | 99精品视频免费观看 | 中文字幕日韩一区二区三区不卡 | 亚洲精品美女久久久 | 亚洲精品女人 | 福利视频一二区 | 99久久久国产精品免费99 | 久久五月精品 | 激情五月***国产精品 | 91精品国产综合久久久久久久 | 精品无人国产偷自产在线 | 国产高清在线永久 | 夜夜操天天操 | 午夜久久精品 | 国模精品一区二区三区 | 久久国产精品视频 | 国产一级二级在线 | 成人在线中文字幕 | 日本不卡一区二区三区在线观看 | 久久激情片 | 亚洲免费观看在线视频 | 99久久久久免费精品国产 | 欧美国产精品一区二区 | 欧美天堂视频在线 | 最近高清中文字幕在线国语5 | 婷婷色吧 | 久久久福利视频 | 色婷婷综合激情 | 91粉色视频 | 日批视频在线观看免费 | 色91在线| 国产高清在线视频 | 亚洲永久av| 亚洲第一中文网 | 日韩超碰在线 | 亚洲狠狠干 | 日韩色在线观看 | 国产在线无 | 日韩在线视频免费播放 | 久久久久成人免费 | 免费69视频 | 久久69精品久久久久久久电影好 | 久久久久久蜜av免费网站 | 黄色毛片视频 | 99久免费精品视频在线观看 | 国产视频 久久久 | 国产黄大片在线观看 | 99久久99久久精品国产片 | 青青草国产精品视频 | 992tv人人网tv亚洲精品 | 黄色网免费| 精品99久久 | 亚洲日日夜夜 | 久久97精品 | 91系列在线观看 | 久av在线| 涩涩网站免费 | 在线观看视频精品 | 天天干天天摸 | 在线观看自拍 | 高清中文字幕av | 操高跟美女 | 成人一级片免费看 | 最近日本韩国中文字幕 | 黄色网免费 | 九九久久久久久久久激情 | 中文字幕在线看视频国产 | 一区二区三区四区五区在线 | 色先锋资源网 | 欧洲激情在线 | 久久日韩精品 | 国产91亚洲精品 | 欧美激情视频一二三区 | 一区二区三区中文字幕在线观看 | 97超碰色偷偷 | 干干干操操操 | 免费的国产精品 | 婷婷丁香自拍 | 欧产日产国产69 | 国产精品嫩草55av | 欧美日韩精品综合 | 久久久久久视频 | 最新婷婷色 | 狠狠操91| 欧美乱熟臀69xxxxxx | 九九久久成人 | av久久久久久 | 在线影视 一区 二区 三区 | 成年人在线免费看 | 在线观看成人 | 成人在线免费观看网站 | 超碰国产在线 | 国产午夜三级一区二区三桃花影视 | 久久免费国产精品 | 国产麻豆精品一区二区 | 91粉色视频 | 特级毛片aaa | 亚洲激情在线观看 | 婷婷午夜激情 | 黄色av电影 | 一区二区三区日韩视频在线观看 | 久久精品资源 | 久久久久久久久久久网 | 免费看片网页 | 国产剧情在线一区 | 97中文字幕 | 成人在线视频免费观看 | 91在线你懂的 | 人人插人人艹 | 激情久久久久 | 黄色网大全 | 午夜在线观看一区 | 久久久免费精品 | 久久精品日韩 | 51久久夜色精品国产麻豆 | 亚洲成人av一区二区 | 99久久精品午夜一区二区小说 | 二区三区在线视频 | 免费的成人av | 国产成人在线观看 | 国产片免费在线观看视频 | www.天天成人国产电影 | 久99久中文字幕在线 | 国产v亚洲v | 中文在线天堂资源 | 亚洲国产精品激情在线观看 | 91黄色免费网站 | www.五月天 | 成人久久久精品国产乱码一区二区 | av黄色大片| 91在线一区二区 | 1024久久| 国产高清视频色在线www | 综合伊人av | 黄色小说视频网站 | 91丨九色丨91啦蝌蚪老版 | 日韩精选在线观看 | 色999视频 | 天天综合人人 | 蜜臀久久99静品久久久久久 | 99视频精品全部免费 在线 | 青青色影院 | 精品视频999| 久久精品久久久久电影 | 香蕉视频日本 | 中文字幕精品三级久久久 | 免费又黄又爽视频 | 草久久久久| 久久久网页 | 91中文字幕在线观看 | 欧美成年黄网站色视频 | 国产剧情一区二区在线观看 | 亚洲精品视频免费 | 中文av免费| 天天操天天色综合 | 91色国产在线 | 国外成人在线视频网站 | 国产精品18久久久久久首页狼 | 国产精品99久久久久久大便 | 免费看的黄色录像 | 综合在线观看 | 欧美日韩高清在线观看 | 国产亚洲精品bv在线观看 | 日韩视频中文字幕在线观看 | 五月天久久狠狠 | 日韩一区二区三区高清免费看看 | 欧美日韩在线网站 | 精品国模一区二区 | 91福利视频网站 | 成人黄在线观看 | 亚洲综合在线五月天 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 999亚洲国产996395 | 91九色在线| 日韩精品久久久久久中文字幕8 | 日日爱夜夜爱 | 国产精品自产拍在线观看 | 国产精品久久99精品毛片三a | 久久久高清免费视频 | 欧美在线aa | 国产伦理剧 | 成人av久久 | www.久久免费 | 日韩视频一 | 国产欧美综合在线观看 | 国产在线a视频 | 久久久久久久久久久精 | 成人在线观看网址 | 亚洲综合色站 | 444av| 成人黄色一级视频 | 欧亚日韩精品一区二区在线 | 欧美国产日韩一区 | 久久免费视频这里只有精品 | 91精品老司机久久一区啪 | 天天操天天射天天舔 | 国产麻豆精品久久 | 日韩伦理一区二区三区av在线 | 国产一区二区精品久久 | 毛片区 | 波多野结衣电影一区二区 | 2019天天干天天色 | 日韩av在线高清 | 色资源网免费观看视频 | 日本黄色免费在线观看 | 日日草夜夜操 | 公开超碰在线 | 国产97视频 | 日韩在线电影观看 | av中文字幕不卡 | 亚洲视频在线看 | 久久精品老司机 | 日韩专区在线 | 久久综合色8888 | 91高清在线看 | 亚洲精品在线一区二区 | 国产精品短视频 | 狠狠地日 | 中日韩在线视频 | 青青河边草免费观看完整版高清 | 婷婷伊人网| 在线a亚洲视频播放在线观看 | 成人av动漫在线 | 国产精品毛片久久久久久久 |