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

使用Pytorch Geometric 進行鏈接預(yù)測代碼示例

人工智能
PyTorch Geometric (PyG)是構(gòu)建圖神經(jīng)網(wǎng)絡(luò)模型和實驗各種圖卷積的主要工具。在本文中我們將通過鏈接預(yù)測來對其進行介紹。

PyTorch Geometric (PyG)是構(gòu)建圖神經(jīng)網(wǎng)絡(luò)模型和實驗各種圖卷積的主要工具。在本文中我們將通過鏈接預(yù)測來對其進行介紹。

鏈接預(yù)測答了一個問題:哪兩個節(jié)點應(yīng)該相互鏈接?我們將通過執(zhí)行“轉(zhuǎn)換分割”,為建模準(zhǔn)備數(shù)據(jù)。為批處理準(zhǔn)備專用的圖數(shù)據(jù)加載器。在Torch Geometric中構(gòu)建一個模型,使用PyTorch Lightning進行訓(xùn)練,并檢查模型的性能。

庫準(zhǔn)備

  • Torch 這個就不用多介紹了
  • Torch Geometric 圖形神經(jīng)網(wǎng)絡(luò)的主要庫,也是本文介紹的重點
  • PyTorch Lightning 用于訓(xùn)練、調(diào)優(yōu)和驗證模型。它簡化了訓(xùn)練的操作
  • Sklearn Metrics和Torchmetrics 用于檢查模型的性能。
  • PyTorch Geometric有一些特定的依賴關(guān)系,如果你安裝有問題,請參閱其官方文檔。

數(shù)據(jù)準(zhǔn)備

我們將使用Cora ML引文數(shù)據(jù)集。數(shù)據(jù)集可以通過Torch Geometric訪問。

 data = tg.datasets.CitationFull(root="data", name="Cora_ML")

默認情況下,Torch Geometric數(shù)據(jù)集可以返回多個圖形。我們看看單個圖是什么樣子的

data[0]
 > Data(x=[2995, 2879], edge_index=[2, 16316], y=[2995])

這里的 X是節(jié)點的特征。edge_index是2 x (n條邊)矩陣(第一維= 2,被解釋為:第0行-源節(jié)點/“發(fā)送方”,第1行-目標(biāo)節(jié)點/“接收方”)。

鏈接拆分

我們將從拆分?jǐn)?shù)據(jù)集中的鏈接開始。使用20%的圖鏈接作為驗證集,10%作為測試集。這里不會向訓(xùn)練數(shù)據(jù)集中添加負樣本,因為這樣的負鏈接將由批處理數(shù)據(jù)加載器實時創(chuàng)建。

一般來說,負采樣會創(chuàng)建“假”樣本(在我們的例子中是節(jié)點之間的鏈接),因此模型學(xué)習(xí)如何區(qū)分真實和虛假的鏈接。負抽樣基于抽樣的理論和數(shù)學(xué),具有一些很好的統(tǒng)計性質(zhì)。

首先:讓我們創(chuàng)建一個鏈接拆分對象。

 link_splitter = tg.transforms.RandomLinkSplit(
    num_val=0.2, 
    num_test=0.1, 
    add_negative_train_samples=False,
    disjoint_train_ratio=0.8)

disjoint_train_ratio調(diào)節(jié)在“監(jiān)督”階段將使用多少條邊作為訓(xùn)練信息。剩余的邊將用于消息傳遞(網(wǎng)絡(luò)中的信息傳輸階段)。

圖神經(jīng)網(wǎng)絡(luò)中至少有兩種分割邊的方法:歸納分割和傳導(dǎo)分割。轉(zhuǎn)換方法假設(shè)GNN需要從圖結(jié)構(gòu)中學(xué)習(xí)結(jié)構(gòu)模式。在歸納設(shè)置中,可以使用節(jié)點/邊緣標(biāo)簽進行學(xué)習(xí)。本文最后有兩篇論文詳細討論了這些概念,并進行了額外的形式化:([1],[3])。

 train_g, val_g, test_g = link_splitter(data[0])
 
 > Data(x=[2995, 2879], edge_index=[2, 2285], y=[2995], edge_label=[9137], edge_label_index=[2, 9137])

在這個操作之后,我們有了一些新的屬性:

edge_label :描述邊緣是否為真/假。這是我們想要預(yù)測的。

edge_label_index 是一個2 x NUM EDGES矩陣,用于存儲節(jié)點鏈接。

讓我們看看樣本的分布

th.unique(train_g.edge_label, return_counts=True)
 > (tensor([1.]), tensor([9137]))
 
 th.unique(val_g.edge_label, return_counts=True)
 > (tensor([0., 1.]), tensor([3263, 3263]))
 
 th.unique(val_g.edge_label, return_counts=True)
 > (tensor([0., 1.]), tensor([3263, 3263]))

對于訓(xùn)練數(shù)據(jù)沒有負邊(我們將訓(xùn)練時創(chuàng)建它們),對于val/測試集——已經(jīng)以50:50的比例有了一些“假”鏈接。

模型

現(xiàn)在我們可以在使用GNN進行模型的構(gòu)建了一個

class GNN(nn.Module):

def __init__(
    self, 
    dim_in: int, 
    conv_sizes: Tuple[int, ...], 
    act_f: nn.Module = th.relu, 
    dropout: float = 0.1,
    *args, 
    **kwargs):
    super().__init__()
    self.dim_in = dim_in
    self.dim_out = conv_sizes[-1]
    self.dropout = dropout
    self.act_f = act_f
    last_in = dim_in
    layers = []
     
    # Here we build subsequent graph convolutions.
    for conv_sz in conv_sizes:
        # Single graph convolution layer
        conv = tgnn.SAGEConv(in_channels=last_in, out_channels=conv_sz, *args, **kwargs)
        last_in = conv_sz
        layers.append(conv)
    self.layers = nn.ModuleList(layers)
 
def forward(self, x: th.Tensor, edge_index: th.Tensor) -> th.Tensor:
    h = x
    # For every graph convolution in the network...
    for conv in self.layers:
        # ... perform node embedding via message passing
        h = conv(h, edge_index)
        h = self.act_f(h)
        if self.dropout:
            h = nn.functional.dropout(h, p=self.dropout, training=self.training)
    return h

這個模型中值得注意的部分是一組圖卷積——在我們的例子中是SAGEConv。SAGE卷積的正式定義為:

????????????

v是當(dāng)前節(jié)點,節(jié)點v的N(v)個鄰居。要了解更多關(guān)于這種卷積類型的信息,請查看GraphSAGE[1]的原始論文

讓我們檢查一下模型是否可以使用準(zhǔn)備好的數(shù)據(jù)進行預(yù)測。這里PyG模型的輸入是節(jié)點特征X的矩陣和定義edge_index的鏈接。

gnn = GNN(train_g.x.size()[1], conv_sizes=[512, 256, 128])
 with th.no_grad():
    out = gnn(train_g.x, train_g.edge_index)
     
 out
 
 
 > tensor([[0.0000, 0.0000, 0.0051, ..., 0.0997, 0.0000, 0.0000],
        [0.0107, 0.0000, 0.0576, ..., 0.0651, 0.0000, 0.0000],
        [0.0000, 0.0000, 0.0102, ..., 0.0973, 0.0000, 0.0000],
        ...,
        [0.0000, 0.0000, 0.0549, ..., 0.0671, 0.0000, 0.0000],
        [0.0000, 0.0000, 0.0166, ..., 0.0000, 0.0000, 0.0000],
        [0.0000, 0.0000, 0.0034, ..., 0.1111, 0.0000, 0.0000]])

我們模型的輸出是一個維度為:N個節(jié)點x嵌入大小的節(jié)點嵌入矩陣。

PyTorch Lightning

PyTorch Lightning主要用作訓(xùn)練,但是這里我們在GNN的輸出后面增加了一個Linear層做為預(yù)測是否鏈接的輸出頭。

class LinkPredModel(pl.LightningModule):

def __init__(
    self,
    dim_in: int,
    conv_sizes: Tuple[int, ...], 
    act_f: nn.Module = th.relu, 
    dropout: float = 0.1,
    lr: float = 0.01,
    *args, **kwargs):
    super().__init__()
     
    # Our inner GNN model
    self.gnn = GNN(dim_in, conv_sizes=conv_sizes, act_f=act_f, dropout=dropout)
     
    # Final prediction model on links.
    self.lin_pred = nn.Linear(self.gnn.dim_out, 1)
    self.lr = lr
 
def forward(self, x: th.Tensor, edge_index: th.Tensor) -> th.Tensor:
    # Step 1: make node embeddings using GNN.
    h = self.gnn(x, edge_index)
     
    # Take source nodes embeddings- senders
    h_src = h[edge_index[0, :]]
    # Take target node embeddings - receivers
    h_dst = h[edge_index[1, :]]
     
    # Calculate the product between them
    src_dst_mult = h_src * h_dst
    # Apply non-linearity
    out = self.lin_pred(src_dst_mult)
    return out
 
def _step(self, batch: th.Tensor, phase: str='train') -> th.Tensor:
    yhat_edge = self(batch.x, batch.edge_label_index).squeeze()
    y = batch.edge_label
    loss = nn.functional.binary_cross_entropy_with_logits(input=yhat_edge, target=y)
    f1 = tm.functional.f1_score(preds=yhat_edge, target=y, task='binary')
    prec = tm.functional.precision(preds=yhat_edge, target=y, task='binary')
    recall = tm.functional.recall(preds=yhat_edge, target=y, task='binary')
     
    # Watch for logging here - we need to provide batch_size, as (at the time of this implementation)
    # PL cannot understand the batch size.
    self.log(f"{phase}_f1", f1, batch_size=batch.edge_label_index.shape[1])
    self.log(f"{phase}_loss", loss, batch_size=batch.edge_label_index.shape[1])
    self.log(f"{phase}_precision", prec, batch_size=batch.edge_label_index.shape[1])
    self.log(f"{phase}_recall", recall, batch_size=batch.edge_label_index.shape[1])

    return loss
 
def training_step(self, batch, batch_idx):
    return self._step(batch)
 
def validation_step(self, batch, batch_idx):
    return self._step(batch, "val")
 
def test_step(self, batch, batch_idx):
    return self._step(batch, "test")
 
def predict_step(self, batch):
    x, edge_index = batch
    return self(x, edge_index)
 
def configure_optimizers(self):
    return th.optim.Adam(self.parameters(), lr=self.lr)

PyTorch Lightning的作用是幫我們簡化了訓(xùn)練的步驟,我們只需要配置一些函數(shù)即可,我們可以使用以下命令測試模型是否可用

 model = LinkPredModel(val_g.x.size()[1], conv_sizes=[512, 256, 128])
 with th.no_grad():
    out = model.predict_step((val_g.x, val_g.edge_label_index))

訓(xùn)練

對于訓(xùn)練的步驟,需要特殊處理的是數(shù)據(jù)加載器。

圖數(shù)據(jù)需要特殊處理——尤其是鏈接預(yù)測。PyG有一些專門的數(shù)據(jù)加載器類,它們負責(zé)正確地生成批處理。我們將使用:tg.loader.LinkNeighborLoader,它接受以下輸入:

要批量加載的數(shù)據(jù)(圖)。num_neighbors 每個節(jié)點在一次“跳”期間加載的最大鄰居數(shù)量。指定鄰居數(shù)目的列表1 - 2 - 3 -…-K。對于非常大的圖形特別有用。

edge_label_index 哪個屬性已經(jīng)指示了真/假鏈接。

neg_sampling_ratio -負樣本與真實樣本的比例。

 train_loader = tg.loader.LinkNeighborLoader(
    train_g,
    num_neighbors=[-1, 10, 5],
    batch_size=128,
    edge_label_index=train_g.edge_label_index,
     
    # "on the fly" negative sampling creation for batch
    neg_sampling_ratio=0.5
 )
 
 val_loader = tg.loader.LinkNeighborLoader(
    val_g,
    num_neighbors=[-1, 10, 5],
    batch_size=128,
    edge_label_index=val_g.edge_label_index,
    edge_label=val_g.edge_label,
 
    # negative samples for val set are done already as ground-truth
    neg_sampling_ratio=0.0
 )
 
 test_loader = tg.loader.LinkNeighborLoader(
    test_g,
    num_neighbors=[-1, 10, 5],
    batch_size=128,
    edge_label_index=test_g.edge_label_index,
    edge_label=test_g.edge_label,
     
    # negative samples for test set are done already as ground-truth
    neg_sampling_ratio=0.0
 )

下面就是訓(xùn)練模型

model = LinkPredModel(val_g.x.size()[1], conv_sizes=[512, 256, 128])
 trainer = pl.Trainer(max_epochs=20, log_every_n_steps=5)
 
 # Validate before training - we will see results of untrained model.
 trainer.validate(model, val_loader)
 
 # Train the model
 trainer.fit(model=model, train_dataloaders=train_loader, val_dataloaders=val_loader)

試驗數(shù)據(jù)核對,查看分類報告和ROC曲線。

with th.no_grad():
    yhat_test_proba = th.sigmoid(model(test_g.x, test_g.edge_label_index)).squeeze()
    yhat_test_cls = yhat_test_proba >= 0.5
     
 print(classification_report(y_true=test_g.edge_label, y_pred=yhat_test_cls))

結(jié)果看起來還不錯:

precision   recall f1-score   support

      0.0       0.68     0.70     0.69     1631
      1.0       0.69     0.66     0.68     1631

accuracy                           0.68     3262
macro avg       0.68     0.68     0.68     3262

ROC曲線也不錯

我們訓(xùn)練的模型并不特別復(fù)雜,也沒有經(jīng)過精心調(diào)整,但它完成了工作。當(dāng)然這只是一個為了演示使用的小型數(shù)據(jù)集。

總結(jié)

圖神經(jīng)網(wǎng)絡(luò)盡管看起來很復(fù)雜,但是PyTorch Geometric為我們提供了一個很好的解決方案。我們可以直接使用其中內(nèi)置的模型實現(xiàn),這方便了我們使用和簡化了入門的門檻。

本文代碼:https://github.com/maddataanalyst/blogposts_code/blob/main/graph_nns_series/pyg_pyl_perfect_match/pytorch-geometric-lightning-perfect-match.ipynb

責(zé)任編輯:華軒 來源: DeepHub IMBA
相關(guān)推薦

2024-01-30 01:12:37

自然語言時間序列預(yù)測Pytorch

2022-12-19 15:16:46

機器學(xué)習(xí)模型

2023-02-19 15:26:51

深度學(xué)習(xí)數(shù)據(jù)集

2022-06-09 09:14:31

機器學(xué)習(xí)PythonJava

2023-05-05 00:16:08

深度學(xué)習(xí)圖像分割Pytorch

2022-07-28 09:00:00

深度學(xué)習(xí)網(wǎng)絡(luò)類型架構(gòu)

2020-05-14 10:00:06

Python數(shù)據(jù)技術(shù)

2024-07-18 13:13:58

2025-01-14 13:32:47

2009-11-13 14:22:11

ADO.NET Dat

2023-08-15 16:20:42

Pandas數(shù)據(jù)分析

2023-03-16 07:27:30

CnosDB數(shù)據(jù)庫

2016-12-14 09:41:51

Jsuop鏈接提取

2024-06-17 16:02:58

2022-10-30 15:00:40

小樣本學(xué)習(xí)數(shù)據(jù)集機器學(xué)習(xí)

2024-06-11 00:00:01

用ReactGraphQLCRUD

2023-03-27 07:34:28

XGBoostInluxDB時間序列

2024-06-21 14:13:44

2011-04-02 14:24:25

SQL Server數(shù)網(wǎng)絡(luò)鏈接

2023-06-06 15:42:13

Optuna開源
點贊
收藏

51CTO技術(shù)棧公眾號

97国产suv精品一区二区62| www.国产福利| 久久久国产精品无码| 男人天堂综合| 99久久99九九99九九九| 销魂美女一区二区三区视频在线| 欧美精品久久99久久在免费线| 九色视频成人porny| 麻豆精品国产免费| 免费高清视频在线一区| 91亚洲资源网| 性欧美视频videos6一9| 性猛交ⅹxxx富婆video| 中老年在线免费视频| www.欧美日韩| 97色在线视频观看| 婷婷丁香综合网| 日韩一级二级| 亚洲午夜精品在线| 97人人干人人| 麻豆亚洲av成人无码久久精品| 亚洲伦理一区二区| 狠狠久久亚洲欧美专区| 精品国产乱码久久久久久久软件| 欧美成人一二三区| 欧美片网站免费| 亚洲精品精品亚洲| 999国内精品视频在线| 国产一级免费视频| 免费黄色成人| 在线观看网站黄不卡| 欧美一区二区三区在线播放| 青青视频在线免费观看| 精品国产一级毛片| 欧美在线高清视频| 在线成人性视频| 国产情侣在线播放| 亚洲欧美偷拍自拍| 精品国产91亚洲一区二区三区婷婷| 欧美视频在线第一页| 亚洲国产成人一区二区| 极品裸体白嫩激情啪啪国产精品| 日韩精品一区二区三区视频在线观看| 欧美黑人在线观看| 无码h黄肉3d动漫在线观看| 欧美综合国产| 色诱女教师一区二区三区| www.亚洲自拍| 国产污视频在线播放| www亚洲一区| 国产精品视频久久久| 国产精品白丝喷水在线观看| 亚洲视频一起| 色婷婷精品久久二区二区蜜臀av | 粉嫩av一区二区三区天美传媒 | 亚洲欧美日韩国产中文专区| 欧美精品成人网| 日本韩国在线视频爽| 国产精品99久久久久久久女警| 欧美肥婆姓交大片| 最新中文字幕视频| 日韩三级成人| 亚洲成人7777| 亚洲精品一区二区三区蜜桃久 | 在线免费三级电影网站| 精品国产老师黑色丝袜高跟鞋| 欧美福利精品| 国产精品无码在线播放| 亚洲激情婷婷| 视频直播国产精品| 国产精品18在线| 国产精品99久久免费观看| 在线观看日韩一区| 一本色道久久亚洲综合精品蜜桃| 女子免费在线观看视频www| 久久久久久久综合| 97久草视频| 国产小视频免费观看| 奇米精品一区二区三区在线观看一| 免费97视频在线精品国自产拍| 中出视频在线观看| 九一国产精品| 日韩在线国产精品| 青青草原免费观看| 国产精品久久777777毛茸茸 | 男男视频亚洲欧美| 色婷婷综合成人av| 99视频只有精品| 色综合久久一区二区三区| 亚洲国产天堂久久综合| 超碰人人草人人| 免费日韩电影| 午夜精品一区二区三区电影天堂| 亚洲国产欧美日韩| fc2ppv国产精品久久| 中文字幕精品一区二区精品绿巨人 | 亚洲日本网址| 亚洲v日本v欧美v久久精品| 亚洲美免无码中文字幕在线 | 一区二区三区在线看| 国产一级爱c视频| 成人无遮挡免费网站视频在线观看| 亚洲久草在线视频| 亚洲图色在线| 国产午夜视频在线观看| av一区二区三区在线| 日本在线观看不卡| 激情在线视频| 久久精品亚洲麻豆av一区二区| 自拍偷拍视频在线| 国产高清一区二区三区视频 | 精品国产网站地址| 国产三级短视频| 国产一区二区三区91| 亚洲欧洲国产精品| 欧美 日本 国产| 欧美大胆视频| 精品亚洲aⅴ在线观看| 水蜜桃av无码| 亚洲bt欧美bt精品777| 亚洲精品国产精品久久清纯直播| 永久免费观看片现看| 一本久久综合| 欧洲日本亚洲国产区| 青青青国产在线 | 亚洲国产成人一区二区| 欧美高清在线视频| 一女被多男玩喷潮视频| 在线人成日本视频| 欧美一区二区三区播放老司机| 国产精品久久久久久9999| 任你躁在线精品免费| 欧美高清一级大片| 国产免费一区二区三区最新不卡| 国产欧美综合在线观看第十页| 日韩免费三级| 少妇视频一区| 欧美视频一区二区三区在线观看 | 中文字幕人妻色偷偷久久| 奇米在线7777在线精品 | 欧美理论电影大全| 人人爽久久涩噜噜噜网站| 五月婷婷久久久| 婷婷开心激情综合| 插我舔内射18免费视频| 伊人久久大香线蕉综合热线 | 亚洲欧美色一区| 久久人妻无码一区二区| 日日夜夜精品| 日韩在线免费视频观看| 中文天堂在线视频| 中文字幕va一区二区三区| 欧美三级理论片| 日本亚州欧洲精品不卡| 亚洲精品www久久久久久广东| 九九九在线视频| 国产激情一区二区三区| 成人小视频在线观看免费| jazzjazz国产精品久久| 国产亚洲精品成人av久久ww | 亚洲精品午夜久久久| 国产探花在线看| 欧美一区二区三区久久精品| 88国产精品欧美一区二区三区| 在线观看国产区| 福利电影一区二区三区| 日本一区美女| 日韩色淫视频| 久久精品99久久久久久久久| 天天操天天爽天天干| 另类小说一区二区三区| 国产欧美一区二区在线播放| 香蕉视频网站在线观看| 欧美蜜桃一区二区三区| 久久久久久久久久网站| 99在线视频精品| 北条麻妃av高潮尖叫在线观看| 青青草97国产精品麻豆| 97在线免费观看| 蜜桃视频在线免费| 欧美人动与zoxxxx乱| 波多野结衣av在线免费观看| 久热综合在线亚洲精品| 国产乱码精品一区二区三区中文| 日本在线观看| 欧美成人猛片aaaaaaa| 国产精品免费在线视频| 国产精品1区2区3区| 免费观看日韩毛片| 国产成人av毛片| 日本免费久久高清视频| 少妇荡乳情欲办公室456视频| 国产精品久久久久久久裸模| 一本一本久久a久久精品综合妖精| 久久亚洲人体| 亚洲天堂视频在线观看| 国产美女自慰在线观看| 欧美日韩国产在线| 老熟妇高潮一区二区三区| aa级大片欧美| 性鲍视频在线观看| 午夜精品一区二区三区国产 | 日韩av电影网址| 国产福利精品一区二区| 日本欧美黄色片| 无需播放器亚洲| 成人黄色av免费在线观看| 自拍视频在线播放| 欧美亚洲图片小说| 久久久久久久久久久久久久久久久 | 久9re热视频这里只有精品| 久久国产精品99国产精| 天堂av网在线| 狠狠躁夜夜躁人人躁婷婷91 | 国产精品欧美久久久| 四虎永久免费观看| 欧美日韩在线国产| 日本伊人精品一区二区三区观看方式| 免费观看亚洲视频| 九九热爱视频精品视频| 成人免费视频观看视频| 直接在线观看的三级网址| 欧美一区二区三区在线观看视频| 中文字幕在线观看视频网站| 99精品一区二区| 黄色三级视频在线播放| 日本亚洲欧美天堂免费| 国产aaa免费视频| 开心激情综合| www日韩av| 九九色在线视频| 久久精品色欧美aⅴ一区二区| 三区在线观看| 精品视频1区2区| 来吧亚洲综合网| 国产日韩亚洲欧美综合| 一区二区免费av| 久久亚洲综合| 国产黄色一级网站| 亚洲国内自拍| 热99这里只有精品| 亚洲久久成人| 国产91xxx| 亚洲久久一区| 波多野结衣家庭教师在线| 亚洲理伦在线| 无罩大乳的熟妇正在播放| 日韩视频一区二区三区在线播放免费观看| 日韩中文字幕亚洲精品欧美| 久久亚洲精品中文字幕蜜潮电影| 91久色国产| 日本精品视频| 成人3d动漫一区二区三区91| 亚洲国产中文在线二区三区免| 91免费精品视频| 日韩伦理在线| 欧美一区二区.| 国产高清一区二区三区视频| 久久久精品国产| 污视频网站在线免费| 亚洲欧洲国产一区| 免费理论片在线观看播放老| 亚洲欧美激情精品一区二区| 久久精品色图| 色婷婷综合久久久久| 麻豆传媒在线免费看| 日韩精品久久久久久久玫瑰园| 少妇无套内谢久久久久| 欧美自拍偷拍一区| 亚洲最新av网站| 亚洲一区二区三区影院| 日本一级淫片色费放| 欧美日韩一区二区在线| 日本成人一级片| 91精品久久久久久久99蜜桃| 久久亚洲精品石原莉奈| 欧美性高潮床叫视频| 欧美性猛交xxxxx少妇| 亚洲图片有声小说| 国产中文字幕视频| 欧美男男青年gay1069videost | 欧美激情专区| 999精品在线| 中文字幕日韩精品无码内射| 国产一区二区高清| 免费网站在线观看黄| 成人免费观看男女羞羞视频| 中文字幕免费高清在线| 国产成人av一区二区三区在线 | 三上悠亚在线一区| 国产二区国产一区在线观看| 国产精品亚洲无码| 成人高清视频在线| xxx中文字幕| 99视频在线观看一区三区| 免费黄在线观看| 亚洲一区二区三区在线播放| 最近中文字幕在线观看视频| 日韩三级中文字幕| 国产av无码专区亚洲av| 7777女厕盗摄久久久| 色wwwwww| 久久久精品999| 欧洲精品一区二区三区| 国产精品swag| 99热在线成人| 欧美成人精品欧美一级乱| 亚洲免费一区二区| 成人av毛片在线观看| 久久久久免费观看| 久久久久久久久久99| 欧美精品久久99| 成人网视频在线观看| 在线精品国产成人综合| a天堂中文在线88| 97碰在线观看| 国产一区二区三区精品在线观看| 成人免费福利在线| 久久精品国产亚洲5555| 在线观看成人免费| 欧美三级小说| av之家在线观看| 国产馆精品极品| 精品女人久久久| 欧美性xxxx极品hd欧美风情| 丰满人妻一区二区| 欧美大奶子在线| 国语自产精品视频在线看抢先版结局| 精品国产一区二区三区麻豆小说| 欧美jizzhd精品欧美巨大免费| 嫩草影院国产精品| 久久久青草青青国产亚洲免观| 国产精品成人aaaa在线| 欧美视频一二三| 少妇一级淫片免费看| 欧美成人免费在线视频| 91麻豆精品国产综合久久久 | 国产一区玩具在线观看| 国产一区二区三区视频在线 | 午夜精品国产| 一卡二卡三卡四卡五卡| 亚洲天堂av老司机| 国产美女永久免费| 久久国产天堂福利天堂| 91精品福利观看| 日本丰满少妇黄大片在线观看| 久久99久久久欧美国产| 国产人妻精品午夜福利免费| 成年人网站91| 国产无遮挡又黄又爽又色| 精品国产一区二区精华| 波多野结衣久久| 国产精品白嫩美女在线观看| 高清不卡一区| av电影一区二区三区| 国产麻豆精品theporn| 熟女丰满老熟女熟妇| 欧美日韩国产丝袜另类| 日韩av成人| 国产精品91一区| 超碰在线亚洲| 亚洲 欧美 综合 另类 中字| 成人av免费在线| 日韩精品在线观看免费| 亚洲欧洲午夜一线一品| 国产免费不卡| 国产精品大全| 亚洲综合欧美| 日本黄区免费视频观看| 欧美一区二区三区在| 18aaaa精品欧美大片h| 91亚洲精华国产精华| 欧美精品国产| 国产麻豆天美果冻无码视频| 日本精品一级二级| 污视频在线免费| 国产成人av在线| 午夜片欧美伦| 欧美夫妇交换xxx| 日本福利一区二区| 粗大黑人巨茎大战欧美成人| 国内外成人免费视频| 日本中文字幕一区二区视频 | 亚洲国产精品第一页| 精品福利在线看| 777电影在线观看| 国产精品区一区二区三含羞草| 久久久久久久欧美精品| 中文字幕av久久爽一区| 日韩视频一区在线观看| 老色鬼在线视频| 自拍偷拍99| 91麻豆精品秘密| 国产口爆吞精一区二区| 78m国产成人精品视频| 91欧美大片| 久久久亚洲av波多野结衣| 91精品国产aⅴ一区二区| 日韩激情电影| 日韩亚洲欧美一区二区|