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

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

人工智能 機器學習
我們在訓練和驗證模型時都會將訓練指標保存成起來制作成圖表,這樣可以在結束后進行查看和分析,但是你真的了解這些指標的圖表的含義嗎?

在本文中將對訓練和驗證可能產生的情況進行總結并介紹這些圖表到底能為我們提供什么樣的信息。

讓我們從一些簡單的代碼開始以下代碼建立了一個基本的訓練流程框架。

from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
import torch
from torch.utils.data import Dataset, DataLoader
import torch.optim as torch_optim
import torch.nn as nn
import torch.nn.functional as F
import numpy as np
import matplotlib.pyplot as pltclass MyCustomDataset(Dataset):
def __init__(self, X, Y, scale=False):
self.X = torch.from_numpy(X.astype(np.float32))
self.y = torch.from_numpy(Y.astype(np.int64))

def __len__(self):
return len(self.y)

def __getitem__(self, idx):
return self.X[idx], self.y[idx]def get_optimizer(model, lr=0.001, wd=0.0):
parameters = filter(lambda p: p.requires_grad, model.parameters())
optim = torch_optim.Adam(parameters, lr=lr, weight_decay=wd)
return optimdef train_model(model, optim, train_dl, loss_func):
# Ensure the model is in Training mode
model.train()
total = 0
sum_loss = 0
for x, y in train_dl:
batch = y.shape[0]
# Train the model for this batch worth of data
logits = model(x)
# Run the loss function. We will decide what this will be when we call our Training Loop
loss = loss_func(logits, y)
# The next 3 lines do all the PyTorch back propagation goodness
optim.zero_grad()
loss.backward()
optim.step()
# Keep a running check of our total number of samples in this epoch
total += batch
# And keep a running total of our loss
sum_loss += batch*(loss.item())
return sum_loss/total
def train_loop(model, train_dl, valid_dl, epochs, loss_func, lr=0.1, wd=0):
optim = get_optimizer(model, lr=lr, wd=wd)
train_loss_list = []
val_loss_list = []
acc_list = []
for i in range(epochs):
loss = train_model(model, optim, train_dl, loss_func)
# After training this epoch, keep a list of progress of
# the loss of each epoch
train_loss_list.append(loss)
val, acc = val_loss(model, valid_dl, loss_func)
# Likewise for the validation loss and accuracy
val_loss_list.append(val)
acc_list.append(acc)
print("training loss: %.5f valid loss: %.5f accuracy: %.5f" % (loss, val, acc))

return train_loss_list, val_loss_list, acc_list
def val_loss(model, valid_dl, loss_func):
# Put the model into evaluation mode, not training mode
model.eval()
total = 0
sum_loss = 0
correct = 0
batch_count = 0
for x, y in valid_dl:
batch_count += 1
current_batch_size = y.shape[0]
logits = model(x)
loss = loss_func(logits, y)
sum_loss += current_batch_size*(loss.item())
total += current_batch_size
# All of the code above is the same, in essence, to
# Training, so see the comments there
# Find out which of the returned predictions is the loudest
# of them all, and that's our prediction(s)
preds = logits.sigmoid().argmax(1)
# See if our predictions are right
correct += (preds == y).float().mean().item()
return sum_loss/total, correct/batch_count
def view_results(train_loss_list, val_loss_list, acc_list):
plt.rcParams["figure.figsize"] = (15, 5)
plt.figure()
epochs = np.arange(0, len(train_loss_list)) plt.subplot(1, 2, 1)
plt.plot(epochs-0.5, train_loss_list)
plt.plot(epochs, val_loss_list)
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'val', 'acc'], loc = 'upper left')

plt.subplot(1, 2, 2)
plt.plot(acc_list)
plt.title('accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'val', 'acc'], loc = 'upper left')
plt.show()

def get_data_train_and_show(model, batch_size=128, n_samples=10000, n_classes=2, n_features=30, val_size=0.2, epochs=20, lr=0.1, wd=0, break_it=False):
# We'll make a fictitious dataset, assuming all relevant
# EDA / Feature Engineering has been done and this is our
# resultant data
X, y = make_classification(n_samples=n_samples, n_classes=n_classes, n_features=n_features, n_informative=n_features, n_redundant=0, random_state=1972)

if break_it: # Specifically mess up the data
X = np.random.rand(n_samples,n_features)
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=val_size, random_state=1972) train_ds = MyCustomDataset(X_train, y_train)
valid_ds = MyCustomDataset(X_val, y_val)
train_dl = DataLoader(train_ds, batch_size=batch_size, shuffle=True)
valid_dl = DataLoader(valid_ds, batch_size=batch_size, shuffle=True) train_loss_list, val_loss_list, acc_list = train_loop(model, train_dl, valid_dl, epochs=epochs, loss_func=F.cross_entropy, lr=lr, wd=wd)
view_results(train_loss_list, val_loss_list, acc_list)

以上的代碼很簡單,就是獲取數據,訓練,驗證這樣一個基本的流程,下面我們開始進入正題。

場景 1 - 模型似乎可以學習,但在驗證或準確性方面表現不佳

無論超參數如何,模型 Train loss 都會緩慢下降,但 Val loss 不會下降,并且其 Accuracy 并不表明它正在學習任何東西。

比如在這種情況下,二進制分類的準確率徘徊在 50% 左右。

class Scenario_1_Model_1(nn.Module):
def __init__(self, in_features=30, out_features=2):
super().__init__()
self.lin1 = nn.Linear(in_features, out_features)
def forward(self, x):
x = self.lin1(x)
return x
get_data_train_and_show(Scenario_1_Model_1(), lr=0.001, break_it=True)

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

數據中沒有足夠的信息來允許‘學習’,訓練數據可能沒有包含足夠的信息來讓模型“學習”。

在這種情況下(代碼中訓練數據時隨機數據),這意味著它無法學習任何實質內容。

數據必須有足夠的信息可以從中學習。 EDA 和特征工程是關鍵! 模型學習可以學到的東西,而不是不是編造不存在的東西。

場景 2 — 訓練、驗證和準確度曲線都非常不穩

例如下面代碼: lr=0.1,bs=128

class Scenario_2_Model_1(nn.Module):
def __init__(self, in_features=30, out_features=2):
super().__init__()
self.lin1 = nn.Linear(in_features, out_features)
def forward(self, x):
x = self.lin1(x)
return x
get_data_train_and_show(Scenario_2_Model_1(), lr=0.1)

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

“學習率太高”或“批量太小”可以嘗試將學習率從 0.1 降低到 0.001,這意味著它不會“反彈”,而是會平穩地降低。

get_data_train_and_show(Scenario_1_Model_1(), lr=0.001)

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

除了降低學習率外,增加批量大小也會使其更平滑。

get_data_train_and_show(Scenario_1_Model_1(), lr=0.001, batch_size=256)

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

場景 3——訓練損失接近于零,準確率看起來還不錯,但驗證 并沒有下降,并且還上升了

class Scenario_3_Model_1(nn.Module):
def __init__(self, in_features=30, out_features=2):
super().__init__()
self.lin1 = nn.Linear(in_features, 50)
self.lin2 = nn.Linear(50, 150)
self.lin3 = nn.Linear(150, 50)
self.lin4 = nn.Linear(50, out_features)
def forward(self, x):
x = F.relu(self.lin1(x))
x = F.relu(self.lin2(x))
x = F.relu(self.lin3(x))
x = self.lin4(x)
return x
get_data_train_and_show(Scenario_3_Model_1(), lr=0.001)

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

這肯定是過擬合了:訓練損失低和準確率高,而驗證損失和訓練損失越來越大,都是經典的過擬合指標。

從根本上說,你的模型學習能力太強了。 它對訓練數據的記憶太好,這意味著它也不能泛化到新數據。

我們可以嘗試的第一件事是降低模型的復雜性。

class Scenario_3_Model_2(nn.Module):
def __init__(self, in_features=30, out_features=2):
super().__init__()
self.lin1 = nn.Linear(in_features, 50)
self.lin2 = nn.Linear(50, out_features)
def forward(self, x):
x = F.relu(self.lin1(x))
x = self.lin2(x)
return x
get_data_train_and_show(Scenario_3_Model_2(), lr=0.001)

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

這讓它變得更好了,還可以引入 L2 權重衰減正則化,讓它再次變得更好(適用于較淺的模型)。

get_data_train_and_show(Scenario_3_Model_2(), lr=0.001, wd=0.02)

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

如果我們想保持模型的深度和大小,可以嘗試使用 dropout(適用于更深的模型)。

class Scenario_3_Model_3(nn.Module):
def __init__(self, in_features=30, out_features=2):
super().__init__()
self.lin1 = nn.Linear(in_features, 50)
self.lin2 = nn.Linear(50, 150)
self.lin3 = nn.Linear(150, 50)
self.lin4 = nn.Linear(50, out_features)
self.drops = nn.Dropout(0.4)
def forward(self, x):
x = F.relu(self.lin1(x))
x = self.drops(x)
x = F.relu(self.lin2(x))
x = self.drops(x)
x = F.relu(self.lin3(x))
x = self.drops(x)
x = self.lin4(x)
return x
get_data_train_and_show(Scenario_3_Model_3(), lr=0.001)

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

場景 4 - 訓練和驗證表現良好,但準確度沒有提高

lr = 0.001,bs = 128(默認,分類類別= 5

class Scenario_4_Model_1(nn.Module):
def __init__(self, in_features=30, out_features=2):
super().__init__()
self.lin1 = nn.Linear(in_features, 2)
self.lin2 = nn.Linear(2, out_features)
def forward(self, x):
x = F.relu(self.lin1(x))
x = self.lin2(x)
return x
get_data_train_and_show(Scenario_4_Model_1(out_features=5), lr=0.001, n_classes=5)

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

沒有足夠的學習能力:模型中的其中一層的參數少于模型可能輸出中的類。 在這種情況下,當有 5 個可能的輸出類時,中間的參數只有 2 個。

這意味著模型會丟失信息,因為它不得不通過一個較小的層來填充它,因此一旦層的參數再次擴大,就很難恢復這些信息。

所以需要記錄層的參數永遠不要小于模型的輸出大小。

class Scenario_4_Model_2(nn.Module):
def __init__(self, in_features=30, out_features=2):
super().__init__()
self.lin1 = nn.Linear(in_features, 50)
self.lin2 = nn.Linear(50, out_features)
def forward(self, x):
x = F.relu(self.lin1(x))
x = self.lin2(x)
return x
get_data_train_and_show(Scenario_4_Model_2(out_features=5), lr=0.001, n_classes=5)

機器學習中訓練和驗證指標曲線圖能告訴我們什么?

總結

以上就是一些常見的訓練、驗證時的曲線的示例,希望你在遇到相同情況時可以快速定位并且改進。


責任編輯:華軒 來源: 今日頭條
相關推薦

2009-06-12 13:59:04

2013-11-11 11:10:03

WE大會馬化騰

2013-04-26 17:48:04

WWDC

2013-05-20 16:12:23

2021-05-22 06:56:18

OpenWrt 路由器刷機

2024-04-09 09:08:09

Kafka消息架構

2020-09-08 12:15:40

應用程序安全DevSecOps漏洞

2021-01-04 11:10:14

鴻蒙HarmonyOSCanvas

2013-08-05 10:19:34

小時代電影大數據

2021-11-10 11:46:49

《魷魚游戲》網絡安全安全觀察

2013-06-09 11:18:44

C++程序員

2018-08-28 16:35:57

2021-03-18 18:38:48

邊緣計算云計算數字化

2017-02-10 11:56:00

2023-11-23 13:50:26

AI模型

2018-08-05 06:48:34

2025-09-03 09:41:38

微服務架構

2020-04-24 09:35:46

機器學習技術模型

2022-01-13 10:24:53

供應鏈攻擊供應商第三方攻擊

2016-09-20 09:36:33

外媒速遞DevOps自動化工具
點贊
收藏

51CTO技術棧公眾號

日韩av电影免费在线观看| 欧美亚洲在线观看| 性活交片大全免费看| 极品视频在线| 国产精品嫩草99a| 99在线视频首页| 久久久蜜桃一区二区| 2023国产精品久久久精品双| 亚洲精品国产福利| 亚洲 国产 图片| 欧美gv在线| 国产精品丝袜一区| 精品国产乱码一区二区三区四区| 中文字幕精品无码亚| 欧美日韩伊人| 国产一区二区三区在线观看网站| 熟妇女人妻丰满少妇中文字幕| 欧美xxx性| 亚洲一区二区四区蜜桃| 亚洲精品无人区| 人成免费电影一二三区在线观看| 国产原创一区二区| 国产精品啪视频| 亚洲一区欧美在线| 亚洲成人av| 在线a欧美视频| 国产精品伦子伦| av不卡一区二区| 欧美日韩一区在线观看| 国产1区2区在线| 九色porny自拍视频在线播放| 亚洲免费高清视频在线| 色涩成人影视在线播放| 深夜福利在线看| 成人午夜碰碰视频| 亚洲综合国产精品| 一级黄色a毛片| 日本中文在线一区| 日韩av123| 日韩欧美三级视频| 一区二区亚洲| 色与欲影视天天看综合网| 18啪啪污污免费网站| 欧洲视频一区| 一区二区欧美久久| 91精品国自产在线| 少妇精品久久久一区二区| 日韩精品免费一线在线观看| 污污污www精品国产网站| 亚洲日本va| 91精品国产综合久久久久| 国产精品成人一区二区三区| 九九九九九伊人| 欧美色999| 欧美亚洲国产一卡| 一区二区三区 日韩| 外国电影一区二区| 欧美色精品天天在线观看视频| 99久久久无码国产精品6| 小h片在线观看| 一本一道综合狠狠老| 日韩视频第二页| 欧美精选视频一区二区| 欧美午夜精品久久久久久孕妇 | 欧美亚洲一级| 国产成人极品视频| 中文字幕 视频一区| 美国毛片一区二区三区| 成人国产精品免费视频| 国产精品永久久久久久久久久| 国产一区在线不卡| 99国产超薄肉色丝袜交足的后果| 色呦呦中文字幕| 2欧美一区二区三区在线观看视频| 免费h精品视频在线播放| 男同在线观看| 国产精品高潮呻吟| 国产一二三四五| 草美女在线观看| 欧美视频在线观看免费| 欧美 日韩 国产 激情| 91成人精品观看| 精品国产成人系列| 亚洲国产av一区| 欧美三级伦理在线| 久久九九有精品国产23| 精品无码人妻一区二区三区品| 在线日本高清免费不卡| 国产精品 欧美在线| 国产乱人乱偷精品视频| 成人自拍视频在线观看| 任我爽在线视频精品一| 搞黄网站在线观看| 精品福利樱桃av导航| 91插插插插插插插插| 日韩在线亚洲| 亚洲丝袜在线视频| 欧美日韩在线视频免费| 亚洲欧美成人| 亚洲最大的av网站| 国产视频第一页在线观看| 亚洲卡通欧美制服中文| 92看片淫黄大片一级| 一区二区三区日本视频| 精品亚洲一区二区三区四区五区| 国产视频精品免费| 国产精品一卡| 91在线中文字幕| 国产永久av在线| 亚洲国产精品自拍| 污污网站免费观看| 亚洲涩涩av| 久久久久久18| 99国产精品一区二区三区| 91小视频免费观看| 亚洲天堂第一区| 成人午夜一级| 亚洲码在线观看| 久久精品免费av| 国产综合一区二区| 日本一区高清不卡| 阿v视频在线| 欧美大胆一级视频| 熟女少妇a性色生活片毛片| 日韩精品国产精品| 国产在线一区二区三区欧美| av免费网站在线| 欧美撒尿777hd撒尿| 男生草女生视频| 日韩一级大片| 不卡一卡2卡3卡4卡精品在| 国产在线高清| 欧美午夜无遮挡| 国产精品久久久久久久无码| 综合视频在线| 成人福利视频网| 生活片a∨在线观看| 在线免费观看日本欧美| a级大片在线观看| 亚洲欧美清纯在线制服| 国产综合精品一区二区三区| 韩国日本一区| 精品久久久网站| 青娱乐av在线| 丁香天五香天堂综合| 91成人在线视频观看| 爱情电影网av一区二区| 久久精品国产96久久久香蕉| 91在线观看喷潮| 亚洲欧洲国产日韩| 91福利免费观看| 亚洲精品小说| 懂色av一区二区三区在线播放| 99在线视频观看| 日韩欧美电影一区| 国产精品.www| 久久综合久久综合久久综合| 国产在线观看欧美| 国产欧美一区二区三区米奇| 8x拔播拔播x8国产精品| 日韩a在线观看| 色综合一个色综合| 亚洲女人毛茸茸高潮| 国产尤物一区二区在线| 天天在线免费视频| 久久资源综合| 国产成人中文字幕| 91在线看片| 日韩午夜在线播放| 日本熟伦人妇xxxx| 久久久不卡网国产精品二区| 天天干天天干天天干天天干天天干| 日韩一区亚洲二区| 99精品国产一区二区| 草美女在线观看| 国产一区二区三区在线视频| 国产三级第一页| 精品久久久久久久久中文字幕 | 高清av在线| 欧美精品三级日韩久久| 久久久国产精华液| 久久久欧美精品sm网站| 在线观看免费av网址| 国内综合精品午夜久久资源| 欧美另类高清视频在线| 欧美风情在线视频| 午夜精品久久久久久久99热浪潮 | 天堂资源在线亚洲| 国产精品视频导航| 黄色影院在线看| 自拍偷拍亚洲一区| 人妻丰满熟妇av无码区hd| 在线视频中文字幕一区二区| 久久久久久久久久99| 久久精品视频免费| 深夜福利网站在线观看| 肉丝袜脚交视频一区二区| 永久久久久久| 婷婷综合一区| 91亚色免费| 亚洲电影有码| 国语自产精品视频在线看抢先版图片 | 久久99久久久欧美国产| 天天夜碰日日摸日日澡性色av| 成人在线免费观看视频| 国产伦精品一区二区三区视频黑人 | 男女男精品网站| 日韩av新片网| 欧美aaaa视频| 欧洲久久久久久| 美国成人xxx| 亚洲综合国产精品| 久久精品国产福利| 欧美一级片一区| 1区2区3区在线| 欧美精品制服第一页| 国产h视频在线观看| 亚洲精品久久久久国产| 国产av精国产传媒| 在线不卡a资源高清| 波多野结衣mp4| 欧美日韩亚洲一区二区三区| 国产亚洲精品久久777777| 亚洲视频一二三| 天天干天天操天天拍| 久久青草国产手机看片福利盒子 | 91精品国产免费久久久久久 | 色综合久久久网| 国产微拍精品一区| 亚洲成人激情综合网| 国产盗摄x88av| 亚洲欧美日韩国产成人精品影院 | 国产视频福利在线| 亚洲女同性videos| 四虎在线视频免费观看| 亚洲国产另类 国产精品国产免费| 国产黄色av网站| 日韩一区二区三区在线观看| av av片在线看| 欧美一区二区高清| 国产叼嘿视频在线观看| 欧美一区二区人人喊爽| 国产情侣激情自拍| 欧美一区二区三区婷婷月色 | 日韩欧乱色一区二区三区在线 | 亚洲最大成人av| 91福利精品视频| 无码人妻精品一区二区| 色菇凉天天综合网| 看黄色一级大片| 欧美天堂亚洲电影院在线播放| 国产精品第六页| 精品1区2区3区| 一区二区三区日| 欧美一级精品在线| 风流老熟女一区二区三区| 精品毛片乱码1区2区3区| 色呦呦视频在线| 亚洲欧洲高清在线| 一级毛片视频在线观看| xvideos亚洲人网站| 亚洲色图美国十次| 91产国在线观看动作片喷水| 台湾佬中文娱乐久久久| 国产精品久久久久久久久久| 91精品一区| 国产精品9999久久久久仙踪林| 久久a爱视频| 日本免费一区二区三区| 91亚洲成人| 日韩精品在线观看av| 亚洲专区免费| 午夜剧场高清版免费观看| 国产精品小仙女| 给我看免费高清在线观看| 久久久91精品国产一区二区精品| 亚洲av毛片基地| 亚洲蜜桃精久久久久久久| 五月天婷婷丁香| 欧美性淫爽ww久久久久无| 国产情侣激情自拍| 亚洲精品久久在线| 中文字幕日本在线| 午夜精品在线视频| a成人v在线| 国产欧美日韩综合精品二区| 国产剧情在线观看一区| 玖玖精品在线视频| 先锋影音久久| 午夜av中文字幕| 26uuu另类欧美亚洲曰本| 91久久久久久久久久久久久久| 亚洲电影一区二区| 亚洲图片视频小说| 日韩精品欧美激情| 成年视频在线观看| 国产成人精品一区二区| 一级毛片精品毛片| 色婷婷精品国产一区二区三区| 国产一区美女| 亚洲精品手机在线观看| 99精品国产99久久久久久白柏 | 欧美日韩免费网站| 国产乱淫片视频| 国产亚洲激情在线| 大黄网站在线观看| 成人午夜一级二级三级| 国产一卡不卡| 黄色一级视频片| 国产寡妇亲子伦一区二区| 日本一二三不卡视频| 天涯成人国产亚洲精品一区av| 97视频免费在线| 亚洲欧美国产另类| 蜜桃麻豆影像在线观看| 成人免费视频观看视频| 久久精品影视| 国产成人黄色网址| 国产日韩av一区| 免费在线不卡视频| 337p日本欧洲亚洲大胆精品 | 亚洲一本大道在线| 91在线精品入口| 国产一区二区三区视频在线观看 | 51精品国自产在线| av在线收看| 国产999在线| 久操成人av| 国产真实乱子伦| 久久这里都是精品| 可以在线观看av的网站| 精品成人在线观看| √天堂8资源中文在线| 国产91视觉| 亚洲国产导航| 亚洲一区二区三区四区av| 亚洲精品国产视频| 国产富婆一级全黄大片| 色综合咪咪久久| 亚洲区 欧美区| 亚洲欧洲av在线| 97在线播放免费观看| 精品精品国产国产自在线| 四虎永久精品在线| 欧美少妇一级片| 国产制服丝袜一区| 农村妇女精品一区二区| 日韩午夜在线影院| 国产白丝在线观看| 国产伦一区二区三区色一情| 亚洲精品一二| 日本免费福利视频| 日本二三区不卡| 极品白浆推特女神在线观看 | **日韩最新| 国产精品av免费观看| 成人免费不卡视频| 亚洲日本韩国在线| 一本大道久久加勒比香蕉| 巨大黑人极品videos精品| 在线国产伦理一区| 国产成人在线视频播放| 日本特黄特色aaa大片免费| 亚洲精品成人久久久| 成人美女视频| 亚洲精品乱码视频| 国产美女一区二区三区| 国产一卡二卡在线| 亚洲人成在线免费观看| 日本成人在线网站| 妺妺窝人体色www看人体| 99久久精品国产导航| 中文字幕亚洲乱码熟女1区2区| 一色桃子一区二区| 日本99精品| 免费黄色福利视频| 国产精品久久久久久亚洲毛片 | 色偷偷偷亚洲综合网另类 | 麻豆中文一区二区| 黄色在线观看免费| 亚洲片在线观看| 亚洲男人在线| 久草热视频在线观看| 中文字幕免费一区| 可以免费观看的毛片| 国产99久久久欧美黑人 | 国产综合在线视频| 欧洲视频一区| 中文字幕在线视频播放| 欧美日本一区二区| a在线视频v视频| 杨幂一区欧美专区| av电影在线观看一区| 91成人一区二区三区| 97精品免费视频| 中国成人一区| 怡红院一区二区三区| 精品久久久影院| 亚洲精品伊人| av丝袜天堂网|