国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

【深度學(xué)習(xí)】在PyTorch中使用 LSTM 自動編碼器進(jìn)行時間序列異常檢測

共 12521字,需瀏覽 26分鐘

 ·

2022-01-23 18:54


寫在前面

環(huán)境準(zhǔn)備

本次數(shù)據(jù)集的格式.arff,需要用到arff2pandas模塊讀取。

#?!nvidia-smi
#?!pip?install?-qq?arff2pandas
#?!pip?install?-q?-U?watermark

另外本次運(yùn)行環(huán)境可通過如下方法查看。

%reload_ext?watermark
%watermark?-v?-p?numpy,pandas,torch,arff2pandas
Python implementation: CPython
Python version : 3.8.8
IPython version : 7.22.0

numpy : 1.19.5
pandas : 1.2.4
torch : 1.9.1
arff2pandas: 1.0.1

導(dǎo)入相關(guān)模塊

import?torch

import?copy
import?numpy?as?np
import?pandas?as?pd
import?seaborn?as?sns
from?pylab?import?rcParams
import?matplotlib.pyplot?as?plt
from?matplotlib?import?rc
from?sklearn.model_selection?import?train_test_split
from?torch?import?nn,?optim
import?torch.nn.functional?as?F
from?arff2pandas?import?a2p

%matplotlib?inline
%config?InlineBackend.figure_format='retina'
sns.set(style='whitegrid',?palette='muted',?font_scale=1.2)
HAPPY_COLORS_PALETTE?=?["#01BEFE",?"#FFDD00",?"#FF7D00",?"#FF006D",?"#ADFF02",?"#8F00FF"]
sns.set_palette(sns.color_palette(HAPPY_COLORS_PALETTE))
rcParams['figure.figsize']?=?15,?8
RANDOM_SEED?=?42
np.random.seed(RANDOM_SEED)
torch.manual_seed(RANDOM_SEED)

本文核心內(nèi)容

本案例使用真實(shí)的心電圖 (ECG) 數(shù)據(jù)來檢測患者心跳的異常情況。我們將一起構(gòu)建一個 LSTM 自動編碼器,使用來自單個心臟病患者的真實(shí)心電圖數(shù)據(jù)對其進(jìn)行訓(xùn)練,并將在新的樣本中,使用訓(xùn)練好的模型對其進(jìn)行預(yù)測分類為正?;虍惓韥頇z測異常心跳。

本案例主要圍繞以下幾大核心展開。

  • 從時間序列數(shù)據(jù)中準(zhǔn)備用于異常檢測的數(shù)據(jù)集
  • 使用 PyTorch 構(gòu)建 LSTM 自動編碼器
  • 訓(xùn)練和評估模型
  • 設(shè)定異常檢測的閾值
  • 將新的樣本分類為正常或異常



數(shù)據(jù)集


該數(shù)據(jù)集包含 5,000 個通過 ECG 獲得的時間序列樣本,樣本一共具有 140 個時間步長。每個序列對應(yīng)于一個患有充血性心力衰竭的患者的一次心跳。


心電圖(ECG 或 EKG)是一種通過測量心臟的電活動來檢查心臟功能的測試。每一次心跳,都會有一個電脈沖(或電波)穿過您的心臟。這種波會導(dǎo)致肌肉擠壓并從心臟泵出血液。?來源[1]

我們有 5 種類型的心跳類別,他們分別是:

  • 正常 (N)
  • 室性早搏 (R-on-T PVC)
  • 室性早搏 (PVC)
  • 室上性早搏或異位搏動(SP 或 EB)
  • 未分類的搏動 (UB)。

假設(shè)心臟健康,典型心率為每分鐘 70 到 75 次,每個心動周期或心跳大約需要 0.8 秒才能完成該周期。頻率:每分鐘 60–100 次(人類)持續(xù)時間:0.6–1 秒(人類)?來源[2]

如果你的設(shè)備安裝有 GPU,這將是非常好的,因?yàn)樗倪\(yùn)行速度更快,可以節(jié)約你寶貴的時間。

device?=?torch.device("cuda"?if?torch.cuda.is_available()?else?"cpu")

如下圖所示,數(shù)據(jù)有多種格式,我們將加載.arff格式的文件到pandas數(shù)據(jù)幀中。

數(shù)據(jù)獲取方法:?在公眾號機(jī)器學(xué)習(xí)研習(xí)院中后臺消息框回復(fù)【heart】免費(fèi)獲??!

with?open('./data/ECG5000/ECG5000_TRAIN.arff')?as?f:
????train?=?a2p.load(f)
with?open('./data/ECG5000/ECG5000_TEST.arff')?as?f:
????test?=?a2p.load(f)

把訓(xùn)練和測試數(shù)據(jù)組合成一個單一的數(shù)據(jù)框。兩者的加成,將為我們提供更多數(shù)據(jù)來訓(xùn)練我們的自動編碼器。

df?=?train.append(test)
df?=?df.sample(frac=1.0)
df.shape
(5000, 141)

看下數(shù)據(jù)集樣貌。

df.head()

我們有5000個例子。每一行代表一個心跳記錄。我們重新命名所有的類。并將最后一列重命名為target,這樣在后面引用它將更為方便。

CLASS_NORMAL?=?1
class_names?=?['Normal','R?on?T','PVC','SP','UB']

new_columns?=?list(df.columns)
new_columns[-1]?=?'target'
df.columns?=?new_columns

探索性數(shù)據(jù)分析

通過函數(shù)value_counts()可以看看每個不同的心跳類分別有多少個樣本。

df.target.value_counts()
1    2919
2 1767
4 194
3 96
5 24
Name: target, dtype: int64

當(dāng)然,為了更加直觀,我們通過可視化方法將心跳類別通過sns.countplot()清晰展示出。

ax?=?sns.countplot(x="target",?data=df,
???????????????????order?=?df['target'].value_counts().index)
ax.set_xticklabels(class_names);

通過統(tǒng)計(jì)分析,我們發(fā)現(xiàn)普通類的樣本最多。這個結(jié)果是非常理想的,也是意料之中的(異常檢測中的異常往往是最少的),又因?yàn)槲覀冃枰褂眠@些正常類的數(shù)據(jù)來訓(xùn)練模型。

接下來,我們看一下每個類的平均時間序列(前面和后面做一個標(biāo)準(zhǔn)差平滑)。

首先定義一個輔助繪圖函數(shù)。

def?plot_time_series_class(data,?class_name,?ax,?n_steps=10):
????"""
????param?data:數(shù)據(jù)
????param?class_name:?不同心跳類名
????param?ax:畫布
????"""

????time_series_df?=?pd.DataFrame(data)
????#?平滑時間窗口
????smooth_path?=?time_series_df.rolling(n_steps).mean()
????#?路徑偏差
????path_deviation?=?2?*?time_series_df.rolling(n_steps).std()
????#?以正負(fù)偏差上下定義界限
????under_line?=?(smooth_path?-?path_deviation)[0]
????over_line?=?(smooth_path?+?path_deviation)[0]
????#?繪制平滑曲線
????ax.plot(smooth_path,?linewidth=2)
????ax.fill_between(
??????path_deviation.index,
??????under_line,
??????over_line,
??????alpha=.125)
????ax.set_title(class_name)

根據(jù)上面的定義的輔助函數(shù),循環(huán)繪制每個心跳類的平滑曲線。

#?獲取所有不同心跳類別
classes?=?df.target.unique()
#?定義畫布
fig,?axs?=?plt.subplots(
??????nrows=len(classes)?//?3?+?1,
??????ncols=3,
??????sharey=True,
??????figsize=(14,?8))
#?循環(huán)繪制曲線
for?i,?cls?in?enumerate(classes):
????ax?=?axs.flat[i]
????data?=?df[df.target?==?cls]?\
??????.drop(labels='target',?axis=1)?\
??????.mean(axis=0)?\
??????.to_numpy()
????plot_time_series_class(data,?class_names[i],?ax)

fig.delaxes(axs.flat[-1])
fig.tight_layout();

根據(jù)上面五種心跳類的可視化結(jié)果看出,正常類具有與所有其他類明顯不同的特征,這也許就是我們構(gòu)建的模型能夠檢測出異常的關(guān)鍵所在。


LSTM 自動編碼器

自動編碼器是個啥

自編碼器模型架構(gòu)圖解

自動編碼器模型是一種神經(jīng)網(wǎng)絡(luò),旨在以無監(jiān)督的方式學(xué)習(xí)恒等函數(shù)以重建原始輸入,同時在此過程中壓縮數(shù)據(jù),從而發(fā)現(xiàn)更有效和壓縮的表示。

該網(wǎng)絡(luò)可以看作由兩部分組成:一個編碼器函數(shù)??和一個生成重構(gòu)的解碼器?

  • 編碼器網(wǎng)絡(luò):將原始的高維輸入轉(zhuǎn)換為潛在的低維代碼。輸入尺寸大于輸出尺寸。
  • 解碼器網(wǎng)絡(luò):解碼器網(wǎng)絡(luò)從代碼中恢復(fù)數(shù)據(jù),輸出層可能越來越大。

編碼器網(wǎng)絡(luò)本質(zhì)上完成了降維,就像我們?nèi)绾问褂弥鞒煞址治觯≒CA)或矩陣分解(MF)一樣。此外,自動編碼器針對代碼中的數(shù)據(jù)重構(gòu)進(jìn)行了顯式優(yōu)化。一個好的中間表示不僅可以捕獲潛在變量,而且有利于完整的解壓過程。

該模型包含由??參數(shù)化的編碼器函數(shù)??和由??參數(shù)化的解碼器函數(shù)?。在瓶頸層為輸入x學(xué)習(xí)的低維代碼為?,重構(gòu)輸入為?

參數(shù) (θ,?) 一起學(xué)習(xí)以輸出與原始輸入相同的重構(gòu)數(shù)據(jù)樣本,,或者換句話說,學(xué)習(xí)恒等函數(shù)。有多種指標(biāo)可以量化兩個向量之間的差異,例如激活函數(shù)為 sigmoid 時的交叉熵,或者像 MSE 損失一樣簡單:



心電數(shù)據(jù)異常檢測

我們將使用正常的心跳作為模型的訓(xùn)練數(shù)據(jù),并記錄重構(gòu)損失。但首先需要準(zhǔn)備數(shù)據(jù)。

數(shù)據(jù)預(yù)處理

獲取所有正常的心跳并刪除目標(biāo)類的列。

normal_df?=?df[df.target?==?str(CLASS_NORMAL)
??????????????].drop(labels='target',?axis=1)
normal_df.shape
(2919, 140)

合并所有其他類并將它們標(biāo)記為異常。

anomaly_df?=?df[df.target?!=?str(CLASS_NORMAL)].drop(labels='target',?axis=1)
anomaly_df.shape
(2081, 140)

將正常類樣本分為訓(xùn)練集、驗(yàn)證集和測試集。

train_df,?val_df?=?train_test_split(
??normal_df,
??test_size=0.15,
??random_state=RANDOM_SEED)

val_df,?test_df?=?train_test_split(
??val_df,
??test_size=0.33,?
??random_state=RANDOM_SEED)

需要將樣本轉(zhuǎn)換為張量,使用它們來訓(xùn)練自動編碼器。為此編寫一個輔助函數(shù)來實(shí)現(xiàn)樣本數(shù)據(jù)類型的轉(zhuǎn)換,以便后續(xù)復(fù)用。

def?create_dataset(df):

????sequences?=?df.astype(np.float32).to_numpy().tolist()
????dataset?=?[torch.tensor(s).unsqueeze(1).float()?for?s?in?sequences]
????n_seq,?seq_len,?n_features?=?torch.stack(dataset).shape

????return?dataset,?seq_len,?n_features

關(guān)于torch.unsqueeze()?和?torch.stack()?詳解可參見文末。

轉(zhuǎn)換示例:

每個時間序列將被轉(zhuǎn)換為形狀?序列長度?x *特征數(shù)量 *的二維張量 。在我們的例子中為140x1的二維張量。

接下來將所有需要用到的數(shù)據(jù)集進(jìn)行如上轉(zhuǎn)換。

#?_?表示不需要該項(xiàng)
train_dataset,?seq_len,?n_features?=?create_dataset(train_df)
val_dataset,?_,?_?=?create_dataset(val_df)
test_normal_dataset,?_,?_?=?create_dataset(test_df)
test_anomaly_dataset,?_,?_?=?create_dataset(anomaly_df)

構(gòu)建 LSTM 自動編碼器

自動編碼器的工作是獲取一些輸入數(shù)據(jù),將其通過模型傳遞,并獲得輸入的重構(gòu),重構(gòu)應(yīng)該盡可能匹配輸入。

從某種意義上說,自動編碼器試圖只學(xué)習(xí)數(shù)據(jù)中最重要的特征,這里使用幾個 LSTM 層(即LSTM Autoencoder)來捕獲數(shù)據(jù)的時間依賴性。接下來我們一起看看如何將時間序列數(shù)據(jù)提供給自動編碼器。

為了將序列分類為正常或異常,需要設(shè)定一個閾值,并規(guī)定高于該閾值時,心跳是異常的。

重構(gòu)損失

當(dāng)訓(xùn)練一個自動編碼器時,模型目標(biāo)是盡可能地重構(gòu)輸入。這里的目標(biāo)是通過最小化損失函數(shù)來實(shí)現(xiàn)的(就像在監(jiān)督學(xué)習(xí)中一樣)。這里所使用的損失函數(shù)被稱為重構(gòu)損失。常用的重構(gòu)損失是交叉熵?fù)p失和均方誤差。

接下來將以GitHub[3]中的 LSTM Autoencoder為基礎(chǔ),并進(jìn)行一些小調(diào)整。因?yàn)槟P偷墓ぷ魇侵亟〞r間序列數(shù)據(jù),因此該模型需要從編碼器開始定義。

class?Encoder(nn.Module):
??"""
??定義一個編碼器的子類,繼承父類?nn.Modul
??"""

????def?__init__(self,?seq_len,?n_features,?embedding_dim=64):
????????super(Encoder,?self).__init__()

????????self.seq_len,?self.n_features?=?seq_len,?n_features
????????self.embedding_dim,?self.hidden_dim?=?embedding_dim,?2?*?embedding_dim
????#?使用雙層LSTM
????????self.rnn1?=?nn.LSTM(
??????????input_size=n_features,
??????????hidden_size=self.hidden_dim,
??????????num_layers=1,
??????????batch_first=True)
????
????????self.rnn2?=?nn.LSTM(
??????????input_size=self.hidden_dim,
??????????hidden_size=embedding_dim,
??????????num_layers=1,
??????????batch_first=True)

????def?forward(self,?x):
????????x?=?x.reshape((1,?self.seq_len,?self.n_features))
????????x,?(_,?_)?=?self.rnn1(x)
????????x,?(hidden_n,?_)?=?self.rnn2(x)
????????return?hidden_n.reshape((self.n_features,?self.embedding_dim))

編碼器使用兩個LSTM層壓縮時間序列數(shù)據(jù)輸入。

接下來,我們將使用Decoder對壓縮表示進(jìn)行解碼。

class?Decoder(nn.Module):
??"""
??定義一個解碼器的子類,繼承父類?nn.Modul
??"""

????def?__init__(self,?seq_len,?input_dim=64,?n_features=1):
????????super(Decoder,?self).__init__()

????????self.seq_len,?self.input_dim?=?seq_len,?input_dim
????????self.hidden_dim,?self.n_features?=?2?*?input_dim,?n_features

????????self.rnn1?=?nn.LSTM(
??????????input_size=input_dim,
??????????hidden_size=input_dim,
??????????num_layers=1,
??????????batch_first=True)

????????self.rnn2?=?nn.LSTM(
??????????input_size=input_dim,
??????????hidden_size=self.hidden_dim,
??????????num_layers=1,
??????????batch_first=True)
????????self.output_layer?=?nn.Linear(self.hidden_dim,?n_features)

????def?forward(self,?x):
????????x?=?x.repeat(self.seq_len,?self.n_features)
????????x?=?x.reshape((self.n_features,?self.seq_len,?self.input_dim))
????????x,?(hidden_n,?cell_n)?=?self.rnn1(x)
????????x,?(hidden_n,?cell_n)?=?self.rnn2(x)
????????x?=?x.reshape((self.seq_len,?self.hidden_dim))

????????return?self.output_layer(x)

編碼器和解碼器均包含兩個 LSTM 層和一個提供最終重建的輸出層。

這里將所有內(nèi)容包裝成一個易于使用的模塊了。

class?RecurrentAutoencoder(nn.Module):
????"""
????定義一個自動編碼器的子類,繼承父類?nn.Module
????并且自動編碼器通過編碼器和解碼器傳遞輸入
????"""

????def?__init__(self,?seq_len,?n_features,?embedding_dim=64):
????????super(RecurrentAutoencoder,?self).__init__()
????????self.encoder?=?Encoder(seq_len,?n_features,?embedding_dim).to(device)
????????self.decoder?=?Decoder(seq_len,?embedding_dim,?n_features).to(device)

????def?forward(self,?x):
????????x?=?self.encoder(x)
????????x?=?self.decoder(x)
????????return?x

自動編碼器類已經(jīng)定義好,接下來創(chuàng)建一個它的實(shí)例。

model?=?RecurrentAutoencoder(seq_len,?n_features,?128)
model?=?model.to(device)

訓(xùn)練模型

自動編碼器模型已經(jīng)定義好。接下來需要訓(xùn)練模型。下面為訓(xùn)練過程編寫一個輔助函數(shù)train_model

def?train_model(model,?train_dataset,?val_dataset,?n_epochs):
????optimizer?=?torch.optim.Adam(model.parameters(),?lr=1e-3)
????criterion?=?nn.L1Loss(reduction='sum').to(device)
????history?=?dict(train=[],?val=[])
????best_model_wts?=?copy.deepcopy(model.state_dict())
????best_loss?=?10000.0
??
????for?epoch?in?range(1,?n_epochs?+?1):
????????model?=?model.train()
????????train_losses?=?[]
????????for?seq_true?in?train_dataset:
????????????optimizer.zero_grad()

????????????seq_true?=?seq_true.to(device)
????????????seq_pred?=?model(seq_true)

????????????loss?=?criterion(seq_pred,?seq_true)
????????????loss.backward()
????????????optimizer.step()

????????????train_losses.append(loss.item())

????????val_losses?=?[]
????????model?=?model.eval()
????????with?torch.no_grad():
????????????for?seq_true?in?val_dataset:
????????????????seq_true?=?seq_true.to(device)
????????????????seq_pred?=?model(seq_true)

????????????????loss?=?criterion(seq_pred,?seq_true)
????????????????val_losses.append(loss.item())

????????train_loss?=?np.mean(train_losses)
????????val_loss?=?np.mean(val_losses)

????????history['train'].append(train_loss)
????????history['val'].append(val_loss)

????????if?val_loss?????????????best_loss?=?val_loss
????????????best_model_wts?=?copy.deepcopy(model.state_dict())
????????print(f'Epoch?{epoch}:?train?loss?{train_loss}?val?loss?{val_loss}')

????model.load_state_dict(best_model_wts)
????return?model.eval(),?history

在每個epoch中,訓(xùn)練過程為模型提供所有訓(xùn)練樣本,并評估驗(yàn)證集上的模型效果。注意,這里使用的批處理大小為1 ,即模型一次只能得到一個序列。另外還記錄了過程中的訓(xùn)練和驗(yàn)證集損失。

值得注意的是,重構(gòu)時做的是最小化L1損失,它測量的是 MAE(平均絕對誤差),似乎比 MSE(均方誤差)更好。

最后,我們將獲得具有最小驗(yàn)證誤差的模型,并使用該模型進(jìn)行接下來的異常檢測預(yù)?,F(xiàn)在開始做一些訓(xùn)練。

#?這一步耗時較長
model,?history?=?train_model(
??model,?
??train_dataset,?
??val_dataset,?
??n_epochs=150
)

繪制模型損失

繪制模型在訓(xùn)練和測試數(shù)據(jù)集上面的損失曲線。

ax?=?plt.figure().gca()
ax.plot(history['train'])
ax.plot(history['val'])
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['train',?'test'])
plt.title('Loss?over?training?epochs')
plt.show();

從可視化結(jié)果看出,我們所訓(xùn)練的模型收斂得很好??雌饋砦覀兛赡苄枰粋€更大的驗(yàn)證集來優(yōu)化模型,但本文就不做展開了,現(xiàn)在就這樣了。


保存模型

存儲模型以備后用。模型保存是必須要做的,他是保存和避免我們寶貴工作不被浪費(fèi)的重要步驟。

MODEL_PATH?=?'model.pth'
torch.save(model,?MODEL_PATH)

如果要下載和加載預(yù)訓(xùn)練模型,請取消注釋下一行。

#?model?=?torch.load('model.pth')
#?model?=?model.to(device)

設(shè)定閾值

有了訓(xùn)練好了的模型,可以看看訓(xùn)練集上的重構(gòu)誤差。同樣編寫一個輔助函數(shù)來使用模型預(yù)測結(jié)果。

def?predict(model,?dataset):
????predictions,?losses?=?[],?[]
????criterion?=?nn.L1Loss(reduction='sum').to(device)
????with?torch.no_grad():
????????model?=?model.eval()
????????for?seq_true?in?dataset:
????????????seq_true?=?seq_true.to(device)
????????????seq_pred?=?model(seq_true)

????????????loss?=?criterion(seq_pred,?seq_true)

????????????predictions.append(seq_pred.cpu().numpy().flatten())
????????????losses.append(loss.item())
????return?predictions,?losses

該預(yù)測函數(shù)遍歷數(shù)據(jù)集中的每個樣本并記錄預(yù)測結(jié)果和損失。

_,?losses?=?predict(model,?train_dataset)
sns.distplot(losses,?bins=50,?kde=True);

從圖結(jié)果看,該閾值設(shè)定為26較為合適。

THRESHOLD?=?26

評估

利用上面設(shè)定的閾值,我們可以將問題轉(zhuǎn)化為一個簡單的二分類任務(wù):

  • 如果一個例子的重構(gòu)損失低于閾值,我們將其歸類為"正常"心跳
  • 或者,如果損失高于閾值,我們會將其歸類為**"異常"**

正常心跳

我們檢查一下模型在正常心跳上的表現(xiàn)如何。這里使用新的測試集中的正常心跳。

predictions,?pred_losses?=?predict(model,?test_normal_dataset)
sns.distplot(pred_losses,?bins=50,?kde=True);

計(jì)算下模型預(yù)測正確的樣本有多少。

correct?=?sum(l?<=?THRESHOLD?for?l?in?pred_losses)
print(f'Correct?normal?predictions:?{correct}/{len(test_normal_dataset)}')
Correct normal predictions: 142/145

異常心跳

我們對異常樣本執(zhí)行相同的操作,由于異常心跳和正常心跳的樣本數(shù)量不一致,因此需要獲得一個與正常心跳大小相同的子集,并對異常子集進(jìn)行模型的預(yù)測。

anomaly_dataset?=?test_anomaly_dataset[:len(test_normal_dataset)]
predictions,?pred_losses?=?predict(model,?anomaly_dataset)
sns.distplot(pred_losses,?bins=50,?kde=True);

最后計(jì)算高于閾值的樣本數(shù)量,而這些樣本將被視為異常心跳數(shù)據(jù)。

correct?=?sum(l?>?THRESHOLD?for?l?in?pred_losses)
print(f'Correct?anomaly?predictions:?{correct}/{len(anomaly_dataset)}')
Correct anomaly predictions: 142/145

由此可見,我們得到了很好的結(jié)果。在現(xiàn)實(shí)項(xiàng)目中,可以根據(jù)要容忍的錯誤類型來調(diào)整閾值。在這種情況下,可能希望誤報(正常心跳被視為異常)多于漏報(異常被視為正常)。

樣本對比觀察

可以疊加真實(shí)的和重構(gòu)的時間序列值,看看它們有多接近。得到相比的結(jié)果,可以針對一些正常和異常情況進(jìn)行處理。

#?定義輔助函數(shù)
def?plot_prediction(data,?model,?title,?ax):
????predictions,?pred_losses?=?predict(model,?[data])
????
????ax.plot(data,?label='true')
????ax.plot(predictions[0],?label='reconstructed')
????ax.set_title(f'{title}?(loss:?{np.around(pred_losses[0],?2)})')
????ax.legend()
#?繪圖
fig,?axs?=?plt.subplots(
??????????????nrows=2,
??????????????ncols=6,
??????????????sharey=True,
??????????????sharex=True,
??????????????figsize=(22,?8)
????????????)

for?i,?data?in?enumerate(test_normal_dataset[:6]):
????plot_prediction(data,?model,?title='Normal',?ax=axs[0,?i])

for?i,?data?in?enumerate(test_anomaly_dataset[:6]):
????plot_prediction(data,?model,?title='Anomaly',?ax=axs[1,?i])

fig.tight_layout();

到目前為止,該實(shí)戰(zhàn)案例已經(jīng)告一段落了。在本案例中,我們一起學(xué)習(xí)了如何使用 PyTorch 創(chuàng)建 LSTM 自動編碼器并使用它來檢測 ECG 數(shù)據(jù)中的心跳異常。

torch.unsqueeze 詳解

torch.unsqueeze(input,?dim,?out=None)

返回一個新的張量,對輸入的既定位置插入維度 1

作用:擴(kuò)展維度
注意:?返回張量與輸入張量共享內(nèi)存,所以改變其中一個的內(nèi)容會改變另一個。
參數(shù):

  • tensor?(Tensor) – 輸入張量
  • dim?(int) – 插入維度的索引,如果dim為負(fù),則將會被轉(zhuǎn)化dim+input.dim()+1
  • out?(Tensor, optional) – 結(jié)果張量

例子:

x?=?torch.Tensor([1,?2,?3,?4])
torch.unsqueeze(x,?0)??
>>>?tensor([[1.,?2.,?3.,?4.]])
torch.unsqueeze(x,?1)
>>>?tensor([[1.],
????????????[2.],
????????????[3.],?
????????????[4.]])

torch.stack() 詳解

沿著一個新維度對輸入張量序列進(jìn)行連接。序列中所有的張量都應(yīng)該為相同形狀。

簡而言之:把多個二維的張量湊成一個三維的張量;多個三維的湊成一個四維的張量…以此類推,也就是在增加新的維度進(jìn)行堆疊。

outputs?=?torch.stack(inputs,?dim=0)?→?Tensor

參數(shù):

  • inputs?(sequence of Tensors) - 待連接的張量序列。
    注:python的序列數(shù)據(jù)只有l(wèi)ist和tuple。函數(shù)中的輸入inputs只允許是序列;且序列內(nèi)部的張量元素,必須shape相等。
  • dim?(int) 新的維度, 必須在0到len(outputs)之間。注:len(outputs)是生成數(shù)據(jù)的維度大小,也就是outputs的維度值。dim是選擇生成的維度,必須滿足0<=dim;len(outputs)是輸出后的tensor的維度大小。

例子:

#?假設(shè)是時間步T1的輸出
T1?=?torch.tensor([[1,?2,?3],
???????????????????[4,?5,?6],
???????????????????[7,?8,?9]])
#?假設(shè)是時間步T2的輸出
T2?=?torch.tensor([[10,?20,?30],
??????????????????[40,?50,?60],
??????????????????[70,?80,?90]])
torch.stack((T1,T2),dim=1)
>>>?tensor([[[?1,??2,??3],
...????????[10,?20,?30]],
...
...???????[[?4,??5,??6],
...????????[40,?50,?60]],
...
...???????[[?7,??8,??9],
...????????[70,?80,?90]]])
torch.stack((T1,T2),dim=0)
>>>?tensor([[[?1,??2,??3],
...?????????[?4,??5,??6],
...?????????[?7,??8,??9]],
...
...????????[[10,?20,?30],
...?????????[40,?50,?60],
...?????????[70,?80,?90]]])

參考資料

[1]?

來源:?https://www.heartandstroke.ca/heart/tests/electrocardiogram

[2]?

來源:?https://en.wikipedia.org/wiki/Cardiac_cycle

[3]?

GitHub:?https://github.com/shobrook/sequitur

[4]?

參考原文:?https://curiousily.com/posts/time-series-anomaly-detection-using-lstm-autoencoder-with-pytorch-in-python/

[5]?

Sequitur - Recurrent Autoencoder (RAE):?https://github.com/shobrook/sequitur

[6]?

Towards Never-Ending Learning from Time Series Streams:?https://www.cs.ucr.edu/~eamonn/neverending.pdf

[7]?

LSTM Autoencoder for Anomaly Detection:?https://towardsdatascience.com/lstm-autoencoder-for-anomaly-detection-e1f4f2ee7ccf


往期精彩回顧




瀏覽 86
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 人妻少妇一区二区| 日韩图色| 91精品国久久久久久无码一区二区三区| 麻豆国产精品| 黄色视频在线网站| 婷婷欧美日韩| 亚洲香蕉影院| 日韩精品区| 人人爽久久涩噜噜噜网站| 国产嫩草久久久一二三久久免费观看 | 97在线精品| 精品一区二区免费| 成人精品二区| 丝袜东京热AV高清| 亚洲一本在线电影av| 欧美色道| 老熟女露脸25分钟91秒| 豆花网| 岛国无码av| 天天日人人| 91av导航| 欧美性爱在线网站| 日韩三级在线免费观看| 日韩无码高清视频| 天天拍天天干| 国产做受91一片二片老头| 日韩| 91超碰免费| 猫咪AV大香蕉| 黄色电影一区二区| 久久中文字幕人妻| P站免费版-永久免费的福利视频平台 | 人人天天久久| 国产精品乱码一区二区三区| 亚洲视频网址| 国产A片免费视频| 亚洲中文字幕久久日| 青青草手机视频| 国模精品无码一区二区免费蜜桃| 最新AV在线| 中文字幕日本在线| 天天想夜夜操| 亚洲自拍网站| 黄片51| 欧美熟妇BBB搡BBB| 精品人妻一区二区免费蜜桃| 影音先锋91久久网| 中文无码AV在线| 一本色道久久88亚洲精品综合| 综合激情五月婷婷| 色狠狠网| 99精品六月婷婷综合在线| 黄色一区二区三区| 大香蕉尹人| 精品欧美一区二区三区| 成人日韩无码| 久久久久网站| 成人H动漫精品一区二区三区蘑菇 高清无码视频在线免费观看 | 国产免费久久| 亚洲性爱视频在线观看| 日韩一级网站| 91在线视频精品| 一级黄色视频在线观看| 国产成人精品电影| 亚洲精品97久久中文字幕| 免费视频二区| 日韩日屄视频| 免费视频91蜜桃| 欧美女人操逼| 日本亚洲黄色视频| 日韩一区二区免费视频| 狠操在线| 亚洲人妻在线观看| 麻豆内射| 亚洲欧美国产日韩字幕| 日韩欧美高清第一期| 日韩免费在线播放| 免费在线看a| 亚洲AV激情无码专区在线播放| 丁香五月婷婷六月| 精品成人无码| 国产一级a毛一级a做免费图片| 69成人无码| 日韩中文字幕高清| 国产成人无码区亚洲A片356p| A在线免费观看| 久热国产精品| 亚洲天堂第一页| 黄色视频网站国产| 99久久精品国产精品有折扣吗| 天天色情| 婷婷无码视频| 2014天堂网| 亚洲玖玖爱| 国产高清无码视频在线观看| 日韩精品人妻一区二区| 国产精品视频免费| 精品九九九| 丁月婷婷五香天日五月天| 韩国午夜激情| 天天谢天天干| 这里视频很精彩免费观看电视剧最新| 18禁91| 国产h视频在线观看| 日本不卡中文字幕| 国产精品网站在线观看| 懂色av,蜜臀AV粉嫩av| 亚州无码免费| 国产成人精品一区| 性生活黄色视频| va在线| 色五月婷婷小说| 国产精品操逼网站| 日本无码在线| 中文字幕免费在线看一区七区| 五月天av在线观看| 成人天堂| 91插逼| 91干逼| 成人无码日韩精品| 北条麻妃在线一区| 亚洲人妻在线观看| 俺也去av| 在线二区| 狼友初视频在线观看| 欧美精品久久久久久久久爆乳| 免费观看一级A片| 中国免费毛片| 国产精品中文字幕在线观看| 五月丁香婷婷啪啪| 俺去也www俺去也com| 999大香蕉| 国产欧美一区二区三区视频在线观看| 99在线观看精品视频| 国产又爽又黄免费视频免费| 日韩在线视频播放| 亚洲成人免费视频| 香蕉漫画在线观看18| 黄色录像一级带| 国产凹凸视频在线观看| 婷婷五月天色综合| 日韩区在线| 先锋av资源网| 国产精品一区二| 成人天堂| 神马午夜精品95| 夜夜嗨av无码一区二区三区| 奇米色播| 97国产精品手机| 在线观看黄A片免费网站| 久操视频在线观看免费| 日韩免费在线观看视频| 亚洲久热| 欧美3区| 天天日天天爱| 高清无码在线免费视频| 欧美日韩中文字幕在线视频 | 中文字幕在线观看免费高清完整版在线观看 | 详情:绿帽夫妻多人运动开淫啪-91n| 国产毛片久久久久久国产毛片 | 欧美激情无码炮击| 亚洲黑人av| 熟女视频国产| 午夜日逼| 中文字幕A片无码免费看| 一本一道久久综合狠狠躁牛牛影视| 韩国高清无码| 天天日很很日| 在线日韩一区二区| 屁屁影院CCYYCOM发布地| 东京热一区二区三区四区| 一线毛片| 无码成人AV| 色五月综合网| 亚洲无码一| 好吊一区二区三区| 新超碰在线观看| 大香焦伊人国产| 亚洲无码av网站| 北条麻妃AV在线播放| 操逼视频网址| 国产91精品看黄网站在线观看| 男女啪啪免费网站| a在线观看| 天天爽天天| 先锋影音男人资源站| 香蕉视频成人在线| 亚洲综合在线播放| 深夜福利网| 日韩熟妇无码中文字幕| 精品国产久久久| 久久大香蕉视频| 欧美A一| 亚洲无码久久网| 国产精品一色哟哟哟| 久激情内射婷内射蜜桃欧美一级 | 在线免费亚洲视频| 黑人乱伦| 黄色片在线观看视频| 国精产品一品二品国精| 日韩中文字幕av| 亚洲秘AV无码一区二区qq群| 青青草综合视频| 无码在线专区| 国产操b视频| 久久99嫩草熟妇人妻蜜臀| 成人香蕉网| 亚洲无码门| 最新日韩中文字幕| 日韩人妻在线播放| 伊人久久视频| 成人性爱视频在线观看| 九九九精品| 91传媒在线免费观看| 婷婷色视频| 欧美日韩一级电影| 中文字幕不卡在线观看| 亚洲无码播放| 色吊妞| 欧美插菊花综合网| 综合色婷婷一区二区亚洲欧美国产 | 日韩美女毛片| 亚洲乱乱| 国产精品久久久久久久久久久久久久久| 国产AV三级| 五月婷婷av| 日韩无码人妻一区二区三区| 手机看片1024你懂的| 久久足交| 国产—a毛—a毛A免费| 北条麻妃无码视频| 日逼老女人| 可以免费看的黄色| 国产在线h| 五月天激情小说| 久草三级片| 天天舔天天干| 国产成人无码免费看片| 精品人妻一区二区三区含羞草| 麻豆国产成人AV一区二区三区| 国产亚洲无码激情| 免费看黄A级毛片成人片| 91视频久久| 色a视频| 中文字幕AV在线免费观看| 在线观看免费黄色| 国产91无码精品秘入口新欢| 一区性爱| 53岁露大奶熟女偷情贴吧| 天天日天天拍| 丁香激情五月| 五月丁香婷婷成人| 国产精品久久久久久精| 国产乱国产乱300精品| 精品一区二区三区四区| 简单AV网| 先锋影音中文字幕| www.蜜桃| 亚洲精品成人无码熟妇在线| 最新中文字幕av| 国产精品网站在线观看| 中国乱伦视频| 欧美插菊花综合网| 激情五月天色| 国产在线观看免费成人视频| 9无码| 日韩高清在线播放| 中文字幕一区二区三区四区| 日韩干网| 91国产在线播放| 国产又粗又长| 欧美色图亚洲另类| 天堂a在线| 中文字幕人妻无码| 女同一区二区三区| 色老板在线观看视频| 高清无码一区二区三区四区| 98在线++传媒麻豆的视频| 蜜桃一区| 中文字幕第315页| 国产福利小视频| 少妇人妻一级A毛片| 精品久久久国产| 午夜无码视频| 亚洲无码久久网| 久久五月丁香| 91综合在线| 无码人妻AV一区| 91人人视频| 五月婷婷六月丁香| 午夜美女福利视频| 天天肏天天干| 国产嫩草久久久一二三久久免费观看 | 男女性爱视频免费| 日韩操片| 日韩一区二区无码| 日韩美女在线视频| 韩国无码片| 中文字幕无码在线| 无码人妻AV一区| 中国黄色大片| 无码一区二区三区四季| 色综合婷婷| 久久伊人影院| 超碰997| 日韩无码性爱视频| 无码不卡视频| 久久久永久免费视频| 波多野结衣av在线播放| 秋霞91| 亚洲乱伦网站| 国产内射在线观看| 嘿咻嘿咻动态图| 成人激情视频网| 秋霞一区二区三区无码| 学生妹一级片内射视频| 大香蕉在线精品视频| 国产精品51麻豆cm传媒| 一级操逼毛片| 天天爽夜夜爽夜夜爽精品视频| 欧美亚洲在线观看| 日韩特级片| 国产伦子伦一级A片免费看老牛 | 97AV视频| 国产黄色免费网站| 91色在线视频| 日韩欧美亚洲| 狠狠躁夜夜躁人人爽视频| 成年人在线观看视频网站| 黄网站在线观看| 99免费热视频在线| 成人性爱视频在线观看| 在线免费观看av片| 激情五月天丁香| 久久99精品国产.久久久久| 色噜噜人妻丝袜无码影院| 国产久久久久| 伊人久久五月| 激情色播| 中文字幕+乱码+中文字幕一区 | 大香蕉男人天堂| 亚洲AV无码成人精品区天堂小说| 丰满人妻一区二区三区四区53| 老熟女乱伦| 欧美日韩在线观看一区二区三区| 欧美日韩在线视频播放| 秋霞日韩| 一级黄色片免费| 亚洲精品中文字幕在线| www.丁香五月| 久久久久久久人妻丝袜| 婷婷五月天影视| 久久久精品人妻| 午夜爱爱爱| 7799精品视频| 蜜桃91在线| 免费的黄色视频| 婷婷V亚洲V丁香月天V日韩V | 国产AV日韩AV| 艹b视频在线观看| 色色婷婷五月| 色伊人久操视频| 国产区欧美去区在线| 天堂无码| 在线观看黄视频| 操逼片| 韩国三级HD中文字幕的背景音乐 | 豆花视频一区| 一级黄色免费电影| 国产人妻中文字幕| 俺去| 免费看黄色录像| 亚洲无码AV一区二区三区| 亚洲无码在线高清| 91网站免费| 一卡二卡久久| 中文字幕黄色电影| 91久久精品一区二区三区| 丰满少妇一区二区三区| AV婷婷在线| 三级精品| 老女人肏屄视频| 久久久久久| 激情小说在线观看| 日韩色| 美女一级A片| 嫩BBB嫩BBB嫩BBBn嫩| 亚洲最大网站| www.蜜桃| 黄色三级av| 国产无码av| 中国免费XXXX18| 在线综合国产欧美| 青青草免费观看视频| 777欧美| 成人亚洲视频| 全部在线A片免费播放| 亚洲中文字幕2025| 精品国产AV无码一区二区三区| www.51av| www.99在线| AV黄色| 国产人妻精品一二三区| 国产一区二区00000视频| 午夜九九九| 国产精品无码毛片| 中国黄色大片| 亚洲综合图色40p| 成人一区二区三区四区| 丰滿人妻-区二区三区| 日本高清无码| 色婷婷国产精品综合在线观看| 91操美女视频| 久久久久久久网站| 国产精品一区二区AV日韩在线 | 亚洲日本视频| 亚洲日本中文字幕在线观看| 美女做爱视频| 日韩无码黄| 久久精品美臀| 久久极品| 亚洲天堂美女| 四川少扫搡BBw搡BBBB| 中文字幕无码影院| 大香蕉尹人| 粉嫩av懂色av蜜臀av熟妇| 久久双飞| 国产精品无码AV| 日日骚影院| 成人在线视频免费观看| 久久久久麻豆V国产精华液好用吗 色噜噜狠狠一区二区三区牛牛影视 | 婷婷久久久久久| 久久久91| 国产区一区| 日逼网站国产| 久久免费视频精品| 日本无码视频在线| 老女人操逼视频| 97亚洲精品| 91精品国产综合久久久蜜臀图片| 久久精品国产亚洲| 日本黄色视频网| 吴梦梦《女教师时间暂停》 | 日韩精品人妻中文字幕有| 亚洲人操逼| 国产一区二区三区免费视频| 99激情网| 黄色大片AV在线| 国产三级在线观看视频| 欧美色图狠狠干| 中文字幕精品视频| 日韩一区二区三| 九九九色视频| 亚洲中文无码字幕| 欧美四虎| 黄色大片av| 亚洲AV无码成人精品区欧洲| 91AV在线免费观看| 欧美国产综合在线| 色欲亚洲| 玖玖爱这里只有精品| 欧美日韩中文字幕| 三级片一区二区| 爱搞视频| 中文字幕av久久爽一区| 99成人视频| 亚洲中文字幕在线无码| 欧美一级二级三级| 亚洲成人观看| 亚洲色图15| 日本不卡视频| 黄色视频网站国产| 人人艹在线| 亚洲无码一级电影| 成人午夜福利电影| 日本免费黄| 日本高清中文字幕| 亚洲日韩国产AV无码无码精品| 尤物在线免费视频| 中文字幕97| 亚洲热视频| 超碰在线视| 国产黄色片在线免费观看| 狠狠干综合| 丰满岳乱妇一区二区三区| 国产在线拍揄自揄拍无码男男| 日韩无码中文字幕| 久久国产综合| 欧美一级成人| 偷拍九九热| 另类在线| 亚洲欧美成人在线观看| 大香蕉大香蕉免费网| 亲子乱婬一级A片| 91网站免费观看| 成人福利电影| 人妻少妇一区二区| 日韩三级在线| 国产97在线观看| 日韩综合精品| 亚洲天媒在线播放| 免费在线看a| 国产精品无码中文在线| 好吊妞操| 8050午夜| 日本久久网站| 久久熟妇| 大香蕉美女视频| 四虎永久www成人影院| 婷婷五月天小说| 国产A片电影| 俺去吔| 日本18禁网站| 蜜桃视频一区二区三区四区使用方法| 97人人爽人人爽人人爽人人爽| 啪啪成人网| 狠狠狠狠操| 大香蕉欧美在线| 国产中文字幕在线免费观看| 日韩精品一区二区三| 青青草99| 国产精品午夜福利视频| 蜜臀久久99精品久久| 在线看片AV| 久久精品夜色噜噜亚洲A∨ | 99久久婷婷| 天天看高清无码| 天天操嫩逼无套视频| 亚洲免费高清视频| 在线观看免费国产| 大色AV| 鸡巴在线观看| 人妻人人爽| 七十路の高齡熟妇无码| 久久久久久免费毛片精品| 色欲一区二区三区| 免费看日韩毛片| 亚洲中文字幕在线免费观看视频| 国产精品成人在线观看| 53岁露大奶熟女偷情贴吧| 69av视频在线观看| 91无码人妻一区二区三区| 69式荫蒂被添全过程频| 不卡视频一区二区三区| 伊人大香蕉婷婷| 国产精品乱码毛片在线人与| 懂色aV| 国产操比| 午夜福利播放| 欧洲亚洲无码| 伊人久久AV诱惑悠悠| 欧美成人无码片免费看A片秀色| 亚洲无码成人片| 北条麻妃精品在线| 丰满人妻-区二区三区| 三级国产网站| 欧美天天干| 超碰人人操人人爱| 国产小视频在线播放| 亚洲免费看黄| 高清在线无码视频| 午夜亚洲AV永久无码精品蜜芽| 中文字幕乱妇无码Av在线| 国产黄色免费乱伦片| 黄色A片电影| 黄色一级大片在线免费看产| 色五月婷婷五月天激情| 日本高清视频九区| 天堂中文字幕在线观看| 亚洲网站视频| 中文无码字幕在线| 黄片网址大全| 丰满大爆乳波霸奶| 91在线无码精品秘网站| 国产人人操| 久热精品在线观看| 天天日天天撸| 日韩区一中文字幕a∨| 亚洲无码中文视频| 日韩欧美黄色片| 国产无码在线影院| 亚洲无码视频免费观看| 婷婷伊人| 日本不卡在线视频| 免费无码av| 国产av中文| 精品久久久久久亚洲| 国产中文字幕AV| 亚洲综合激情五月久久| 中文字幕乱码人妻二区三区| 国产17c精品视频一二三区| 一区二区三区四区精品视频| 国内精品久久久久久久久久| 天天草天天爽| 久久狠狠干| 欧美午夜精品一区二区蜜桃| 欧美一卡二卡| 日韩欧美性爱| 亚洲AV电影网| 丁香五月天AV| 欧美激情影院| 黃色一級片黃色一級片尖叫声-百度-百 | 兔子先生和優奈玩游戲脫衣服,運氣報表優奈輸到脫精光 | 一区二区三区www污污污网站| 亚洲性爱大全| 亚洲激情视频网站| 国产探花视频在线免费观看| 国产v片| 人妻互换一二三区免费| AV资源在线播放| 丁香五月婷婷六月| 免费A在线观看| 天天精品视频| 免费视频爱爱| 久久99视频免费观看| 国产婷婷五月天| 波多野结衣vs黑人巨大| 亚洲女与黑人正在播放| 亚洲AV秘无码一区浜崎りお| 国产乱码一区二区三区四区在线| 超碰人人艹| 91成人导航| 日韩激情AV| 精品一区二区三区视频| 天天射夜夜操| 国产中文字幕波多| 超碰成人欧美| 色播视频在线观看| 伊人666| 婷婷男人天堂| 日韩成人黄色视频| 亚洲天堂av在线观看| 免费视频一区二区| 青青草原亚洲| 精品福利在线观看| 一级A片在线观看| 欧美日韩国产一区二区三区| 自慰精品| 国产亚洲精品久久久久动| 亚洲欧美精品在线| 国产成人a亚洲精品无码| 大香蕉中文网| 视色视频在线观看18| 亚洲H| 日比视频网站| 国产成人午夜高潮毛片| 在线无码中文字幕| 欧美自拍第一页| 一边做一边说国语对白| 精品久久免费一区二区三区 | 中国人妻HDbute熟睡| 日韩在线1| 四虎在线视频观看96| 黄色福利网址| 搡BBBB搡BBB搡五十粉嫩| 一区二区在线不卡| 大香蕉一级红色片青青河边草| 亚洲三级视频| 在线观看亚洲| 激情婷婷五月天| 深爱激情五月天| 国产天堂| a在线观看| 99在线观看| 日韩www| 亚洲133| 国产成人AV| 无码射精电影| 熟女探花精选| 欧美一二三区黄色免费视屏| 极品美女援交在线| 无码三级在线免费观看| 长泽梓黑人初解禁BDD07| 伊人成人视频在线观看| 午夜无码在线观看视频| 国产美女一级特黄大片| 91无码视频在线观看| 四虎色情| 这里视频很精彩免费观看电视剧最新| 肏逼视频免费看| 免费观看高清无码视频| 人人操成人| 大香蕉伊人青青草| 亚洲色成人中文字幕在线| 成人做爰黄级A片免费看土方 | 蜜桃精品在线| 一区二区三区四区五区在线| 泄火熟妇2-ThePorn| 亚洲成人一区二区三区| 狠狠干综合| 人妻无码| 韩国中文字幕HD久久精品| 做爱视频网站18| 成人午夜A片免费看| 一级视频免费观看| 天堂网影音先锋| 三级AV在线观看| 人人射人人射| 日韩a在线观看| www.操操操| 成人免费黄色视频| 嫩苞又嫩又紧AV无码| 97三级| 在线午夜福利| 日韩无码AV电影| 精品香蕉视频| 精品久久视频| 中文字幕第一页在线| 国产午夜男女性爱| 国产三级日本三级国产三级| 影音av在线| 亚洲性爱大全| 午夜视频网| 精品欧美成人片在线| 91亚洲精品国偷拍自产在线观看| 天堂a在线| 国产精品一区二区不卡| 啪啪毛片| 国产色无码网站www色视频| 青青草97国产精品麻豆| 国产精品A片| 婷婷导航| 欧美老女人操逼群| 日韩性无码| 国产91在线拍揄自揄拍无码九色 | 人人妻人人澡人人DⅤD| 国产精品男女| 免费看无码| 天天射夜夜操| 黄色免费看| 亚洲三级久久| 国产成人网| 中文字幕在线观看一区| 北条麻妃久久视频在线播放 | 国产一卡二卡在线观看| 西西人体大胆ww4444| 成人A片在线观看| 苍井空亚洲精品AA片在线播放| 操逼日韩欧美| 久久99精品久久久久| 亚洲一二三四区| www亚洲视频| 日本中文字幕免费| 亚洲v欧美| 国产免费小视频| 欧美性爱视频网站| 11孩岁女精品A片BBB| 成人a电影| 丁香五月婷婷基地| 亚洲国产久久| 岛国无码破解AV在线播放| 国产av中文字幕| 五月丁香网站| 久久黄色免费看| 黄网站欧美内射| 中文字幕36页| 午夜激情乱伦| 人人操人人干人人爽| 日韩福利在线观看| www.91av| 欧美性爱高清| 天天透天天干| 国产成人自拍视频在线观看| 黄色综合网| 人人妻人人爽人人澡人人精品 | av无码网站| 天天干夜夜操| 丁香五月婷婷综合网| 国产又爽又黄网站免费观看| 无码区一区二区| 丁香五月综合网| 黄色免费在线观看视频| 成人黄色网| 日韩和的一区二区| 亚洲无码av电影| 色网站在线| av香蕉| 五月丁香网站| AV一二区| 国产v亚洲| 福利视频三区| 超碰最新在线| 欧美黄色电影网站| 中文字幕黑人无码| 婷婷五月六月| 蜜臀av在线播放| 久久成人小电影| 亚洲a在线观看| 亚洲无码AV麻豆| 草比网站| 7799精品视频天天看| 成人毛片在线播放| 无码aa| 激情内射| 久久亚洲一区| 日韩人妻丝袜中文字幕| 亚洲熟女一区| 日韩欧美一级片| 日韩一级乱伦| av乱伦小说| 手机在线观看AV| 热久久久| 欧美大吊在线| 无码欧精品亚洲日韩一区| 亚洲无码精品一区| 无码一二三| 亚洲天堂视频在线观看| 夜夜夜操操操| 国产成人精品777777| 国产足交| 丁香婷婷色五月| 亚洲视频1区| www.久热| 中文字幕2018第一页| 国产在线观看免费视频| 亚洲北条麻妃一级A片| 欧美不卡一区二区| 亚洲黄色视频在线| 国产综合激情| 亚洲综合免费| 在线视频A| 亚洲字幕无码| 强伦轩一区二区三区四区播放方式 | 九九九精品在线| 亚洲中文无码字幕| 国产主播精品| 国产在线性爱视频| 黄色操逼| 国产成人秘免费观看一区二区三区| 免费在线性爱视频| 国产中文自拍| 久久久久久久网站| 日韩做爱视频| 男人资源在线| 国产又爽又黄免费| 内射国产| 女同二人91| 久9久9久9久9久9久9| 懂色av蜜臀av粉嫩av分享| 免费福利在线观看| 操b视频免费看| 国产精品色情| 国产精品视频久久久| 久热久| 欧美日韩a片| 亚洲AV无码国产综合专区| 伊人久久大香| 久久久久久成人无码| 狠狠操2019| www.一区二区三区| 国产激情艹逼| 豆花视频在线免费观看| 在线免费看黄色视频| 五月天婷婷色| 日韩美女在线视频| 十八禁视频在线观看网站.www| 精品人妻一区二区三区-国产精品| 国产女人操逼视频| 亚洲狼人综合网| 亚洲日韩中字| 91在线观看| 成人大香蕉视频| 精品国产欧美一区二区三区成人| 精品国产av| 色噜噜网站| 久久XXX| 国产在线激情| 三级日韩视频| 特级西西444www精品视频| 51成人网站免费| 亚洲日韩精品欧美一区二区yw| 日韩免费视频观看| 天天射日日干| 2019中文字幕mv第三季歌词| 91在线一区二区三区| 黄色小电影网站| 亚洲jizzjizz| 人人草在线观看| 日本日韩欧美| 久久国产高清视频| 喷潮视频| 黄片www| 高清无码小视频| 五月婷亚洲精品AV天堂| 日韩黄色片| 另类国产| 亚洲无码一二三区| 亚洲国产97| 97大香蕉在线视频| 欧美激情网址| 久久久久少妇| 91狠狠色丁香婷婷综合久久精品 | 欧美日韩伊人| 免费18禁网站| 好叼操| 婷婷成人在线| 婷婷五月丁香花| 精品无码一| 人人人人人人人人操| 成人免费无码婬片在线观看免费|