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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

seq2seq模型_Pytorch学习记录-Seq2Seq模型对比

發布時間:2024/4/19 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 seq2seq模型_Pytorch学习记录-Seq2Seq模型对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Pytorch學習記錄-torchtext和Pytorch的實例4

0. PyTorch Seq2Seq項目介紹

在完成基本的torchtext之后,找到了這個教程,《基于Pytorch和torchtext來理解和實現seq2seq模型》。 這個項目主要包括了6個子項目 1. ~~使用神經網絡訓練Seq2Seq~~ 2. ~~使用RNN encoder-decoder訓練短語表示用于統計機器翻譯~~ 3. ~~使用共同學習完成NMT的構建和翻譯~~ 4. ~~打包填充序列、掩碼和推理~~ 5. ~~卷積Seq2Seq~~ 6. ~~Transformer~~

結束Transformer之后隔了兩天沒有學習,這兩天對幾個模型進行對比和總結吧,在完成前三個模型的時候曾經寫過一個總結,今天主要是看一下六個模型的變化以及實現。關鍵是實現,用了15天,但是模型實現部分只能看懂一般Seq2Seq……

7. 總結,從一般Seq2Seq到Transformer

六個模型都是Seq2Seq,都包含有Encoder和Decoder兩部分,只是模型核心不同,并且在層與層或是Encoder與Decoder之間不斷加新東西分別是:LSTM->多層GRU->Attention->PadMaskAttention->CNN->Transformer

  • 1和2是一般Seq2Seq,分別使用了LSTM和它的變體GRU
  • 3和4是對Attention的補充,增加了打包、填充、掩碼
  • 5是使用CNN
  • 6是all-attention,什么高端的都給你用上

7.1 模型架構

  • Encoder
  • 雜七雜八(attention、pad、mask...)
  • Decoder
  • Seq2Seq(整合)

7.2 模型1和2對比

  • 這兩個模型在Encoder部分沒有太大區別,一個使用LSTM,一個使用GRU,輸入內容包括輸入的句子信息和上一層的隱藏層狀態信息(LSTM還有一個單元狀態信息)。
  • Decoder部分,都是基于同一層Encoder輸出的上下文向量z、上一時刻時間節點的預測單詞(或者是上一時刻時間節點的ground truth單詞,由teaching force rate決定)和Decoder上一層隱藏層狀態。

注意圖中Decoder部分。 OK,這里實現一下。

import torch import torch.nn as nnclass Encoder(nn.Module):def __init__(self, input_dim, hid_dim, emb_dim, dropout):super(Encoder, self).__init__()self.input_dim=input_dimself.emb_dim=emb_dimself.hid_dim=hid_dimself.dropout=dropoutself.embedding=nn.Embedding(input_dim, emb_dim)self.rnn=nn.GRU(emb_dim,hid_dim)self.dropout=nn.Dropout(dropout)def forward(self, src):embedded=self.dropout(self.embedding(src))outputs, hidden=self.rnn(embedded)return hiddenclass Decoder(nn.Module):def __init__(self, output_dim, hid_dim, emb_dim, dropout):super(Decoder.self).__init__()self.output_dim=output_dimself.emb_dim=emb_dimself.hid_dim=hid_dimself.dropout=dropoutself.embedding=nn.Embedding(output_dim,emb_dim)# 在實現的時候,通過將$y_t$和$z$串聯傳入GRU,所以輸入的維度應該是emb_dim+ hid_dim self.rnn=nn.GRU(emb_dim+hid_dim,hid_dim)# linear層輸入的是 $y_t, s_t$ 和 $z$串聯,而隱藏狀態和上下文向量都是$h$維度相同,所以輸入的維度是emb_dim+hid_dim*2 self.out=nn.Linear(emb_dim+hid_dim*2,output_dim)self.dropout=nn.Dropout(dropout)def forward(self, input, hidden, context):input=input.unsqueeze(0)embedded=self.dropout(self.embedding(input))emb_context=torch.cat((embedded,context),dim=2)output, hidden=self.rnn(emb_context, hidden)output=torch.cat((embedded.squeeze(0), hidden.squeeze(0), context.squeeze(0)), dim = 1)prediction=self.out(output)return prediction, hiddenclass Seq2Seq(nn.Module):def __init__(self, encoder, decoder, device):super(Seq2Seq,self).__init__()self.encoder=encoderself.decoder=decoderself.device=deviceassert encoder.hid_dim == decoder.hid_dim, "Hidden dimensions of encoder and decoder must be equal!"def forward(self,src, trg, teacher_forcing_ratio=0.5):batch_size=trg.shape[1]max_len=trg.shape[0]trg_vocab_size=self.decoder.output_dimoutputs=torch.zeros(max_len,batch_size,trg_vocab_size).to(self.device)context=self.encoder(src)hidden=contextinput=trg[0,:]for t in range(1,max_len):output,hidden=self.decoder(input,hidden,context)outputs[t]=outputteacher_force=random.random()<teacher_forcing_ratiotop1=output.max(1)[1]input=(trg[t] if teacher_force else top1)return outputs

但是這樣干的一個問題是,Decoder獲取的是上下文向量是Encoder輸入的所有單詞信息,但是當需要用到具體某一個時間節點的信息時,沒有,仍然是整個句子的全局信息。于是,就有了Attention

7.3 模型2、3、4對比

有了上面的需求,就需要將Encoder所有時間節點的隱藏層狀態輸出,然后進行加權求和。

權值是與Decoder當前時間節點相關聯的一套數值(這個的意思是,對于解碼器的每個時間節點,對于編碼器所有時間節點的hidden state的加權系數是不一樣的),權值即為attention vector,記作a。
a的維度為Encoder序列的時序長度,attention vector中每個分量的數值介于0-1之間,對于解碼器的每個時間節點,a不同,但是所有時間點的權值(即向量a的所有維度)之和為1。

就是說,現在通過attention vector來關注Encoder時間節點信息,通過將Encoder每個時間節點輸出的hidden state和attention vector加權求和之后,得到的w(t),上下文向量輸入到RNN和線性預測層(要注意的是:在Decoder的第1個時間節點,輸入RNN層的hidden state并不是w而是h,即Encoder最后一個時間節點輸出的隱藏狀態)。

另外在Encoder部分使用的是bidirectional RNN。通過bidirectional RNN,每層可以有兩個RNN網絡。 - 前向RNN從左到右處理句子(圖中綠色) - 后向RNN從右到左處理句子(圖中黃色) 在這里要做的就是設置 bidirectional = True ,然后輸入嵌入好的句子。

由于Decoder不是雙向的,它只需要一個上下文向量$ z $作為其初始隱藏狀態$ s_0 $,而Encoder提供有兩個,前向和后向($ z ^ rightarrow = h_T ^ rightarrow $和$ z ^ leftarrow = h_T ^ leftarrow $)。通過將兩個上下文向量連接在一起,通過線性層$ g $并應用$ tanh $激活函數來解決這個問題。$$z=tanh(g(h_T^rightarrow, h_T^leftarrow)) = tanh(g(z^rightarrow, z^leftarrow)) = s_0$$

由于我們希望我們的模型回顧整個源句,我們返回輸出,源句中每個標記的堆疊前向和后向隱藏狀態。我們還返回hidden,它在解碼器中充當我們的初始隱藏狀態。

OK,來實現一下看看區別,你會發現,Decoder基本類似,

class Encoder(nn.Module):def __init__(self, input_dim, emb_dim, enc_hid_dim, dec_hid_dim, dropout):super(Encoder,self).__init__()self.input_dim=input_dimself.emb_dim=emb_dimself.enc_hid_dim=enc_hid_dimself.dec_hid_dim=dec_hid_dimself.dropout=dropoutself.embedding=nn.Embedding(input_dim, emb_dim)self.rnn=nn.GRU(emb_dim, enc_hid_dim,bidirectional=True)self.fc=nn.Linear(enc_hid_dim*2, dec_hid_dim)self.dropout=nn.Dropout(dropout)def forward(self, src):embedded=self.dropout(self.embedding(src))outputs, hidden=self.rnn(embedded)# hidden[-2,:,:]和hidden[-1,:,:]分別代表前向和后向,通過tanh來激活hidden=torch.tanh(self.fc(torch.cat((hidden[-2,:,:],hidden[-1,:,:]),dim=1)))return outputs, hiddenclass Attention(nn.Module):def __init__(self, enc_hid_dim,dec_hid_dim):super(Attention,self).__init__()self.enc_hid_dim=enc_hid_dimself.dec_hid_dim=dec_hid_dimself.attn=nn.Linear((enc_hid_dim*2)+dec_hid_dim,dec_hid_dim)self.v=nn.Parameter(torch.rand(dec_hid_dim))def forward(self, hidden, encoder_outputs):batch_size=encoder_outputs.shape[1]src_len=encoder_outputs.shape[0]hidden=hidden.unsqueeze(1).repeat(1,src_len,1)encoder_outputs=encoder_outputs.permute(1,0,2)energy = torch.tanh(self.attn(torch.cat((hidden, encoder_outputs), dim = 2))) energy = energy.permute(0, 2, 1)v = self.v.repeat(batch_size, 1).unsqueeze(1)attention = torch.bmm(v, energy).squeeze(1)return F.softmax(attention, dim=1)class Decoder(nn.Module):def __init__(self,output_dim,emb_dim,enc_hid_dim,dec_hid_dim,dropout, attention):super(Decoder,self).__init__()self.emb_dim = emb_dimself.enc_hid_dim = enc_hid_dimself.dec_hid_dim = dec_hid_dimself.output_dim = output_dimself.dropout = dropoutself.attention = attentionself.embedding=nn.Embedding(output_dim,emb_dim)self.rnn=nn.GRU((enc_hid_dim*2)+emb_dim,dec_hid_dim)self.out=nn.Linear((enc_hid_dim*2)+dec_hid_dim+emb_dim,output_dim)self.dropout=nn.Dropout(dropout)def forward(self,input,hidden,encoder_outputs):input=input.unsqueeze(0)embedded=self.dropout(self.embedding(input))a=self.attention(hidden,encoder_outputs)a=a.unsqueeze(1)encoder_outputs=encoder_outputs.permute(1,0,2)weighted = torch.bmm(a, encoder_outputs)weighted = weighted.permute(1, 0, 2)rnn_input = torch.cat((embedded, weighted), dim = 2)output, hidden = self.rnn(rnn_input, hidden.unsqueeze(0))assert (output == hidden).all()embedded = embedded.squeeze(0)output = output.squeeze(0)weighted = weighted.squeeze(0)output = self.out(torch.cat((output, weighted, embedded), dim = 1))#output = [bsz, output dim]return output, hidden.squeeze(0)class Seq2Seq(nn.Module):def __init__(self, encoder, decoder, device):super().__init__()self.encoder = encoderself.decoder = decoderself.device = devicedef forward(self, src, trg, teacher_forcing_ratio=0.5):batch_size=src.shape[1]max_len=trg.shape[0]trg_vocab_size=self.decoder.output_dimoutputs=torch.zeros(max_len, batch_len,trg_vocab_size).to(self.device)encoder_outputs, hidden=self.encoder(src)output=trg[0,:]for t in range(1,max_len):output, hidden=self.decoder(output, hidden, encoder_outputs)outputs[t]=outputteacher_force = random.random() < teacher_forcing_ratiotop1=output.max(1)[1]output=(trg[t] if teacher_force else top1)return outputs

再來看一下PadMaskAttention與Attention的區別。

為什么要進行壓緊?
當我們進行batch個訓練數據一起計算的時候,我們會遇到多個訓練樣例長度不同的情況,這樣我們就會很自然的進行padding,將短句子padding為跟最長的句子一樣。但是這時會出現一個問題,只包含一個單詞的句子和包含20個單詞的句子,pad之后長度一樣,但是前者就有19個pad,這樣會導致LSTM對它的表示通過了非常多無用的字符,這樣得到的句子表示就會有誤差。
解決辦法就是用函數torch.nn.utils.rnn.pack_padded_sequence()以及torch.nn.utils.rnn.pad_packed_sequence()來進行處理。 這樣綜上所述,RNN在處理類似變長的句子序列的時候,我們就可以配套使用torch.nn.utils.rnn.pack_padded_sequence()以及torch.nn.utils.rnn.pad_packed_sequence()來避免padding對句子表示的影響

Encoder改變是在forward方法,這里接收源句長度。
- 源句完成嵌入后,使用pack_padded_sequence。數據喂給RNN后輸出的是packed_outputs,這是一個打包后的tensor,包含有句子的隱藏狀態。隱藏狀態是標準張量而不是以任何方式打包,唯一的區別是,由于輸入是打包序列,因此該張量來自序列中的最終非填充元素。 - 然后使用pad_packed_sequence解包我們的packed_outputs,它返回輸出和每個的長度,這是我們不需要的。 - 輸出的第一個維度是填充序列長度,但是由于使用打包填充序列,當填充標記是輸入時,張量的值將全為零。

attention用來計算源句attention值。
上面Attention模型中允許模塊通過源句注意填充的token,這里使用掩碼可以強制attention關注非填充元素。
forward函數放入掩碼輸入,tensor結構是[batch size, source sentence length],當源句token沒有被填充時,tensor是1,被填充時,tensor是0。

例子: ["hello", "how", "are", "you", "?", , ]->[1, 1, 1, 1, 1, 0, 0]。

在計算注意力之后但在通過softmax函數對其進行歸一化之前應用蒙版。它使用masked_fill應用。這將填充第一個參數(mask == 0)為true的每個元素的張量,其值由第二個參數(-1e10)給出。換句話說,它將采用未標準化的注意力值,并將填充元素上的注意力值更改為-1e10。由于這些數字與其他值相比微不足道,因此當通過softmax層時它們將變為零,從而確保源語句中的填充令牌不會受到關注。

Decoder只做了一點點更改,它需要接受源句子上的掩碼并將其傳遞給注意模塊。由于我們想要在推理期間查看注意力的值,我們也會返回注意力張量。

class Encoder(nn.Module):def __init__(self, input_dim, emb_dim, enc_hid_dim, dec_hid_dim, dropout):super(Encoder, self).__init__()self.input_dim=input_dimself.emb_dim=emb_dimself.enc_hid_dim=enc_hid_dimself.dec_hid_dim=dec_hid_dimself.dropout=dropoutself.embedding=nn.Embedding(input_dim,emb_dim)self.rnn=nn.GRU(emb_dim, enc_hid_dim, bidirectional=True)self.fc=nn.Linear(enc_hid_dim*2,dec_hid_dim)self.dropout=nn.Dropout(dropout)def forward(self, src, src_len):embedded=self.dropout(self.embedding(src))# 增加了一個壓緊的操作# 此時,返回的hidden(h_last和c_last)就是剔除padding字符后的hidden state和cell state,都是Variable類型的。# 代表的意思如下(各個句子的表示,GRU只會作用到它實際長度的句子,而不是通過無用的padding字符)# 返回的output是PackedSequence類型, 得到的_代表各個句子的長度packed_embedded=nn.utils.rnn.pack_padded_sequence(embedded, src_len)packed_outputs, hidden=self.rnn(packed_embedded)outputs, _=nn.utils.rnn.pad_packed_sequence(packed_outputs)# hidden[-2,:,:]和hidden[-1,:,:]分別代表前向和后向,通過tanh來激活hidden=torch.tanh(self.fc(torch.cat((hidden[-2,:,:],hidden[-1,:,:]),dim=1)))return outputs, hiddenclass Attention(nn.Module):def __init__(self, enc_hid_dim, dec_hid_dim):super(Attention,self).__init__()self.enc_hid_dim = enc_hid_dimself.dec_hid_dim = dec_hid_dimself.attn=nn.Linear((enc_hid_dim * 2) + dec_hid_dim, dec_hid_dim)self.v=nn.Parameter(torch.rand(dec_hid_dim))def forward(self,hidden,encoder_outputs,mask):batch_size=encoder_outputs.shape[1]src_len=encoder_outputs.shape[0]hidden=hidden.unsqueeze(1).repeat(1,src_len,1)encoder_outputs = encoder_outputs.permute(1, 0, 2)energy=torch.tanh(self.attn(torch.cat((hidden, encoder_outputs), dim = 2))) # permute將tensor的維度換位。energy=energy.permute(0,2,1)v= self.v.repeat(batch_size, 1).unsqueeze(1)attention=torch.bmm(v,energy).squeeze(1)# 和之前的沒有區別,就是在這里進行了處理attention=attention.masked_fill(mask==0,-1e10)return F.softmax(attention, dim = 1)class Decoder(nn.Module):def __init__(self,output_dim,emb_dim,enc_hid_dim,dec_hid_dim,dropout, attention):super(Decoder,self).__init__()self.emb_dim = emb_dimself.enc_hid_dim = enc_hid_dimself.dec_hid_dim = dec_hid_dimself.output_dim = output_dimself.dropout = dropoutself.attention = attentionself.embedding=nn.Embedding(output_dim,emb_dim)self.rnn=nn.GRU((enc_hid_dim*2)+emb_dim,dec_hid_dim)self.out=nn.Linear((enc_hid_dim*2)+dec_hid_dim+emb_dim,output_dim)self.dropout=nn.Dropout(dropout)def forward(self,input,hidden,encoder_outputs):input=input.unsqueeze(0)embedded=self.dropout(self.embedding(input))a=self.attention(hidden,encoder_outputs)a=a.unsqueeze(1)encoder_outputs=encoder_outputs.permute(1,0,2)weighted = torch.bmm(a, encoder_outputs)weighted = weighted.permute(1, 0, 2)rnn_input = torch.cat((embedded, weighted), dim = 2)output, hidden = self.rnn(rnn_input, hidden.unsqueeze(0))assert (output == hidden).all()embedded = embedded.squeeze(0)output = output.squeeze(0)weighted = weighted.squeeze(0)output = self.out(torch.cat((output, weighted, embedded), dim = 1))# 增加了注意力張量areturn output, hidden.squeeze(0),a.squeeze(0)class Seq2Seq(nn.Module):def __init__(self, encoder,decoder,pad_idx,sos_idx, eos_idx, device):super().__init__()self.encoder = encoderself.decoder = decoderself.pad_idx = pad_idxself.sos_idx = sos_idxself.eos_idx = eos_idxself.device = devicedef create_mask(self, src):mask=(src!=self.pad_idx).permute(1,0)return maskdef forward(self, src, src_len, trg, teacher_forcing_ratio = 0.5):#src = [src sent len, batch size]#src_len = [batch size]#trg = [trg sent len, batch size]#teacher_forcing_ratio is probability to use teacher forcing#e.g. if teacher_forcing_ratio is 0.75 we use teacher forcing 75% of the timeif trg is None:assert teacher_forcing_ratio == 0, "Must be zero during inference"inference = Truetrg = torch.zeros((100, src.shape[1])).long().fill_(self.sos_idx).to(src.device)else:inference = Falsebatch_size = src.shape[1]max_len = trg.shape[0]trg_vocab_size = self.decoder.output_dim#tensor to store decoder outputsoutputs = torch.zeros(max_len, batch_size, trg_vocab_size).to(self.device)#tensor to store attentionattentions = torch.zeros(max_len, batch_size, src.shape[0]).to(self.device)#encoder_outputs is all hidden states of the input sequence, back and forwards#hidden is the final forward and backward hidden states, passed through a linear layerencoder_outputs, hidden = self.encoder(src, src_len)#first input to the decoder is the <sos> tokensoutput = trg[0,:]mask = self.create_mask(src)#mask = [batch size, src sent len]for t in range(1, max_len):output, hidden, attention = self.decoder(output, hidden, encoder_outputs, mask)outputs[t] = outputattentions[t] = attentionteacher_force = random.random() < teacher_forcing_ratiotop1 = output.max(1)[1]output = (trg[t] if teacher_force else top1)if inference and output.item() == self.eos_idx:return outputs[:t], attentions[:t]return outputs, attentions

7.4 模型4、5對比

The English source sentence is encoded (top) and we compute all attention values for the four German target words (center) simultaneously. Our attentions are just dot products between decoder context representations (bottom left) and encoder representations. We add the conditional inputs computed by the attention (center right) to the decoder states which then predict the target words (bottom right). The sigmoid and multiplicative boxes illustrate Gated Linear Units. - 上左encoder部分:通過層疊的卷積抽取輸入源語言(英語)sequence的特征,圖中直進行了一層卷積。卷積之后經過GLU激活做為encoder輸出。 - 下左decoder部分:采用層疊卷積抽取輸出目標語言(德語)sequence的特征,經過GLU激活做為decoder輸出。 - 中左attention部分:把decoder和encoder的輸出做點乘,做為輸入源語言(英語)sequence中每個詞權重。 - 中右Residual connection殘差連接:把attention計算的權重與輸入序列相乘,加入到decoder的輸出中輸出輸出序列。

看了這個結構,和剛才的PadPackMaskAttention模型比較一下,會發現差別蠻大了,再往前,Transformer似乎開始有一些類似的地方。

歸一策略
將殘差塊的輸入和輸出之和乘以√0.5,以求和的方差減半。這假設兩個加法具有相同的方差,這在實踐中并不總是正確但有效。

OK,我們來實現一下,超級復雜

class Encoder(nn.Module):def __init__(self, input_dim, emb_dim, hid_dim, n_layers, kernel_size, dropout, device):super(Encoder, self).__init__()assert kernel_size%2==1,"Kernel size must be odd"self.input_dim=input_dimself.emb_dim=emb_dimself.hid_dim=hid_dimself.kernel_size=kernel_sizeself.dropout=dropoutself.device=device# 殘差連接,歸一策略self.scale=torch.sqrt(torch.FloatTensor([0.5])).to(device)self.tok_embedding=nn.Embedding(input_dim,emb_dim)self.pos_embedding=nn.Embedding(100,emb_dim)self.emb2hid=nn.Linear(emb_dim,hid_dim)self.hid2emb=nn.Linear(hid_dim,emb_dim)self.convs = nn.ModuleList([nn.Conv1d(in_channels = hid_dim, out_channels = 2 * hid_dim, kernel_size = kernel_size, padding = (kernel_size - 1) // 2)for _ in range(n_layers)])self.dropout=nn.Dropout(dropout)def forward(self,src):# 對tok和pos都做詞嵌入pos=torch.arange(0,src.shape[1]).unsqueeze(0).repeat(src.shape[0],1).to(self.device)tok_embedded=self.tok_embedding(src)pos_embedded=self.pos_embedding(pos)embedded=self.dropout(tok_embedded+pos_embedded)# 通過linear層將嵌入好的數據傳入Linear轉為hid_dimconv_input=self.emb2hid(embedded)#conv_input = [batch size, hid dim, src sent len]for i , conv in enumerate(self.convs):conved=conv(self.dropout(conv_input))conved=F.glu(conved,dim=1)conved=(conved+conv_input)*self.scaleconv_input=convedconved=self.hid2emb(conved.permute(0,2,1))combined=(conved+embedded)*self.scalereturn conved, combinedclass Decoder(nn.Module):def __init__(self, output_dim, emb_dim, hid_dim, n_layers, kernel_size, dropout, pad_idx, device):super(Decoder, self).__init__()self.output_dim = output_dimself.emb_dim = emb_dimself.hid_dim = hid_dimself.kernel_size = kernel_sizeself.dropout = dropoutself.pad_idx = pad_idxself.device = deviceself.scale=torch.sqrt(torch.FloatTensor([0.5])).to(device)self.tok_embedding = nn.Embedding(output_dim, emb_dim)self.pos_embedding = nn.Embedding(100, emb_dim)self.emb2hid = nn.Linear(emb_dim, hid_dim)self.hid2emb = nn.Linear(hid_dim, emb_dim)self.attn_hid2emb=nn.Linear(hid_dim,emb_dim)self.attn_emb2hid=nn.Linear(emb_dim,hid_dim)self.out=nn.Linear(emb_dim,output_dim)self.convs = nn.ModuleList([nn.Conv1d(hid_dim, 2*hid_dim, kernel_size) for _ in range(n_layers)])self.dropout = nn.Dropout(dropout)def calculate_attention(self, embedded, conved, encoder_conved,encoder_combined):conved_emb=self.attn_hid2emb(conved.permute(0,2,1))combined=(embedded+conved_emb)*self.scaleenergy=torch.matmul(combined, encoder_conved.permute(0,2,1))attention=F.softmax(energy, dim=2)attended_encoding=torch.matmul(attention,(encoder_conved+encoder_combined))attended_encoding = self.attn_emb2hid(attended_encoding)attended_combined = (conved + attended_encoding.permute(0, 2, 1)) * self.scalereturn attention, attended_combineddef forward(self, trg, encoder_conved, encoder_combined):pos=torch.arange(0, trg.shape[1]).unsqueeze(0).repeat(trg.shape[0], 1).to(device)tok_embedded = self.tok_embedding(trg)pos_embedded = self.pos_embedding(pos)#tok_embedded = [batch size, trg sent len, emb dim]#pos_embedded = [batch size, trg sent len, emb dim]embedded = self.dropout(tok_embedded + pos_embedded)conv_input=self.emb2hid(embedded)conv_input=conv_input.permute(0,2,1)for i, conv in enumerate(self.convs):conv_input=self.dropout(conv_input)padding = torch.zeros(conv_input.shape[0], conv_input.shape[1], self.kernel_size-1).fill_(self.pad_idx).to(device)padded_conv_input = torch.cat((padding, conv_input), dim=2)conved=conv(padded_conv_input)conved=F.glu(conved, dim=1)attention, conved=self.calculate_attention(embedded, conved, encoder_conved, encoder_combined)conved=(conved+conv_input)*self.scaleconv_input=convedconved=self.hid2emb(conved.permute(0,2,1))output=self.out(self.dropout(conved))return output, attentionclass Seq2Seq(nn.Module):def __init__(self, encoder, decoder, device):super().__init__()self.encoder = encoderself.decoder = decoderself.device = devicedef forward(self, src, trg):encoder_conved, encoder_combined = self.encoder(src)output, attention = self.decoder(trg, encoder_conved, encoder_combined)return output, attention

總結

以上是生活随笔為你收集整理的seq2seq模型_Pytorch学习记录-Seq2Seq模型对比的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产又粗又猛又爽 | 午夜免费福利片 | 中文资源在线官网 | 激情综合色综合久久综合 | 中文字幕一区二区三区久久 | 国产亚洲欧美精品久久久久久 | 国产视频精品久久 | 日韩精品一区二区三区在线视频 | 国产成人精品一区二区在线观看 | 国产九九九九九 | a在线观看国产 | 狠狠色噜噜狠狠狠狠 | 亚洲欧美va | 最新一区二区三区 | 伊人天堂av | 国产日产精品久久久久快鸭 | 激情综合站| 国产精品久久久久一区二区三区 | 麻豆一区二区 | 日韩黄色一级电影 | 五月天网站在线 | 久久精品国产精品 | 91av视频免费观看 | 国产高清网站 | a级国产片 | 免费在线观看a v | 一区二区视频欧美 | 久久人91精品久久久久久不卡 | 黄色片网站av | 麻豆国产在线视频 | 亚洲精品在线视频播放 | 99久久国产免费,99久久国产免费大片 | 欧美性生活大片 | 九九色综合 | 久久免费99精品久久久久久 | 欧美亚洲免费在线一区 | 成人高清在线观看 | 天天综合狠狠精品 | 婷婷精品视频 | 婷婷六月网 | 久久夜色精品国产欧美一区麻豆 | 日韩精品在线看 | 狠狠狠色丁香婷婷综合激情 | 草久久av| 日韩大片在线 | av+在线播放在线播放 | 亚洲一区二区三区毛片 | av日韩av| 午夜99| 在线看污网站 | 亚洲精品国产精品乱码不99热 | 欧美日韩高清免费 | 国产综合片 | 成人小视频免费在线观看 | 一区二区精| 国产亚洲观看 | 久久午夜网| 亚一亚二国产专区 | 97视频入口免费观看 | 欧美va天堂va视频va在线 | 亚洲深夜影院 | 久久99精品久久久久久久久久久久 | 日韩午夜剧场 | 久久久久亚洲精品 | 亚州激情视频 | va视频在线观看 | 天天射射天天 | 久久在现视频 | 成人毛片一区二区三区 | 亚洲专区一二三 | 一区二区电影在线观看 | 国产精品视频久久 | 成人免费视频视频在线观看 免费 | 久久综合久久综合这里只有精品 | 日韩成人中文字幕 | 午夜精品视频免费在线观看 | 中文字幕 婷婷 | 成年人免费电影在线观看 | www四虎影院 | 久久r精品| 精品一区二区在线免费观看 | 日韩欧美专区 | 丁香婷婷激情网 | 伊人午夜视频 | 黄色毛片在线看 | 国产精品久久久免费 | 免费看的黄色的网站 | 亚洲精品中文字幕视频 | 日韩精品中文字幕一区二区 | 91av在线视频播放 | 在线观看国产麻豆 | 国产成人精品亚洲a | 在线欧美中文字幕 | 国产精品一区二区av影院萌芽 | 国产高清区 | 国产成人在线一区 | 九九综合九九综合 | 亚洲成人精品影院 | 日韩大片免费观看 | 在线播放av网址 | 婷婷综合网 | 中文字幕av在线播放 | 国产精品电影一区二区 | 日韩在线视频网址 | 亚洲精品综合欧美二区变态 | 亚洲精品国产精品国自产观看 | 久久视频网 | 日韩免费看 | 操操日 | 欧美激情视频在线观看免费 | 成人理论电影 | 麻豆91在线看| 色婷婷激婷婷情综天天 | 怡春院av | 99国产一区二区三精品乱码 | 日日婷婷夜日日天干 | 在线视频欧美日韩 | www.夜色.com | 色橹橹欧美在线观看视频高清 | 婷婷激情在线 | 在线观看福利网站 | 日日夜夜综合 | 久热精品国产 | 四虎成人精品永久免费av | 婷婷午夜天 | 国产亚洲aⅴaaaaaa毛片 | 免费一级特黄毛大片 | 亚洲精品视频网站在线观看 | 日韩黄色在线电影 | av中文字幕亚洲 | 玖玖在线看 | 久久99国产精品二区护士 | 久久久精品网 | 精品国产一区二 | 日韩欧美视频免费看 | 欧美日韩有码 | 激情av资源 | 欧美性生活久久 | 日韩电影在线一区 | 亚洲人人av| 亚洲成a人片综合在线 | 成年人免费看片网站 | 超碰97公开| 国内精品久久久久影院优 | a级黄色片视频 | 国产精品久久久免费看 | 精品9999| 99精品在线观看视频 | 国产一区二区不卡在线 | 欧美孕妇与黑人孕交 | 亚洲综合婷婷 | 国产精品久免费的黄网站 | 亚洲成人精品在线观看 | 国产做aⅴ在线视频播放 | 91在线视频观看 | 日韩免费在线看 | 麻豆一区在线观看 | 日韩精品三区四区 | 成人h视频在线播放 | 亚洲精品1234区 | 久久九九免费 | 日韩资源在线播放 | 免费的黄色av | 伊人久久电影网 | 韩国精品在线观看 | 国产玖玖视频 | 有码一区二区三区 | 2021国产精品视频 | 亚洲天堂首页 | 日韩中文字幕在线看 | 天天干天天干天天色 | 日韩av电影手机在线观看 | 免费在线激情视频 | 日韩1页| 天堂av在线中文在线 | 午夜免费福利片 | 成人免费色 | 午夜精品久久久久99热app | 久久精品99北条麻妃 | 99精品视频观看 | 日韩在线第一 | 中文字幕黄色网址 | 国产999精品久久久久久绿帽 | 国产成人av福利 | 人人爱人人射 | avlulu久久精品 | 亚洲免费在线观看视频 | 亚洲国产中文字幕在线 | 欧美日韩高清一区二区三区 | 久久8精品| 狠狠操操网 | 国产一级片网站 | 久久不卡视频 | 国产小视频福利在线 | 激情久久综合 | 亚洲精品久久久蜜臀下载官网 | 欧美一级片免费 | 国产中文字幕三区 | 91精品成人 | 亚洲精品久久久久久国 | 日韩超碰 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 久草在线官网 | 96精品在线 | 毛片一二区 | 日韩午夜一级片 | 麻豆视频免费入口 | 国产91区| 精品久久久久一区二区国产 | 四虎在线免费观看 | 成人在线播放免费观看 | 日本爱爱免费 | 国色天香永久免费 | 亚洲精品美女久久久久 | a电影免费看 | 久久久国产精品一区二区中文 | 欧美日韩二区在线 | 91精品国产91久久久久 | 美女久久99 | 中文有码在线视频 | 婷婷久草 | 欧美淫视频 | 婷婷中文字幕综合 | 亚洲女在线 | 少妇bbbb | 免费看黄在线 | 天天想夜夜操 | 国产精品高清一区二区三区 | 日韩城人在线 | 国产精品国产精品 | 97电影院在线观看 | 丰满少妇一级片 | 日韩v在线91成人自拍 | bayu135国产精品视频 | 国产一级不卡视频 | www.成人精品 | 久青草影院| 色婷在线 | www.久久91| 国产精品高潮呻吟久久av无 | 久久久伊人网 | 亚洲三级av | 中文字幕 二区 | 国产性xxxx| 日韩网站免费观看 | 五月开心网| 国产精品久久麻豆 | 亚洲乱亚洲乱妇 | a电影在线观看 | 绯色av一区 | 精品国产一区二区三区av性色 | 免费看的黄网站软件 | 国产不卡免费av | 69国产在线观看 | 欧美日韩精品在线观看 | 日本中文字幕在线免费观看 | 欧美国产日韩在线视频 | 男女靠逼app | 日韩www在线| 亚洲精品视频免费在线观看 | 国产精品久久在线观看 | 一区二区三区日韩在线观看 | 欧美精品三级 | 精品国产精品久久一区免费式 | 免费一级特黄毛大片 | 一区二区三区在线观看免费 | 免费国产一区二区视频 | 国产日韩视频在线 | 亚洲aaa毛片 | 午夜在线观看 | av一二三区 | 免费色视频网址 | 亚洲黄色在线播放 | 国产福利网站 | 午夜三级福利 | 狠狠精品 | 国产精品a级 | 一区二区成人国产精品 | 亚洲国内在线 | 免费观看av| 国产精品福利午夜在线观看 | 国产黄色免费电影 | 免费电影一区二区三区 | 国产国语在线 | 丁香激情综合国产 | 日本系列中文字幕 | 欧美日韩高清国产 | 香蕉影视 | 九九热精 | 日韩欧美一区二区三区视频 | 天天干com| 九九免费观看全部免费视频 | 亚洲区另类春色综合小说校园片 | 色婷av | 亚洲国产精品电影 | 四虎在线观看网址 | 日韩中文字幕视频在线观看 | 日韩欧美中文 | 天天爱天天色 | 27xxoo无遮挡动态视频 | 99热精品国产一区二区在线观看 | 一级片视频免费观看 | 久久电影色 | 精品久久久久久久 | 亚洲精品视频在线播放 | 六月色婷婷 | 欧美 另类 交 | 久色小说| 成人在线观看网址 | 国产精品一区二区三区在线免费观看 | 国产福利午夜 | 一级免费黄视频 | 日韩电影中文,亚洲精品乱码 | 成人av免费电影 | 一区二区三区在线影院 | 久草爱视频 | www.国产高清 | 亚洲乱码在线观看 | 欧美一级黄色视屏 | 亚洲精品国偷拍自产在线观看 | 狠狠干成人 | 97国产在线| 探花视频免费观看 | 精品国产久 | 激情五月av | 国产私拍在线 | www.久久免费视频 | 特级西西444www高清大视频 | 九九热久久免费视频 | 午夜精品福利一区二区 | 人人添人人澡人人澡人人人爽 | 91视频这里只有精品 | 丁香五婷 | 亚洲一区在线看 | 国产精品永久免费在线 | 欧美一级乱黄 | 久久免费视频一区 | 亚洲精品网站在线 | 中文字幕av免费观看 | 日韩欧美网址 | 欧美a性 | 国产亚洲片 | 九九九热精品 | 久久人人干 | 人人爱人人射 | www.久久99| 日韩性久久 | 在线观看黄污 | 日韩av进入 | 在线观看视频你懂 | 欧美一区二区在线 | 亚洲精品乱码久久久久久蜜桃91 | 蜜臀久久99精品久久久无需会员 | 精品在线免费观看 | 天天操天天干天天玩 | 日韩久久精品一区二区三区 | 国产片网站 | 亚洲成av人片 | 丁香激情五月 | 久久久激情网 | 亚洲精品在线免费播放 | 全久久久久久久久久久电影 | 在线观看免费一区 | 深爱激情开心 | 日本狠狠色 | 激情av五月婷婷 | 91精品91 | 91丨精品丨蝌蚪丨白丝jk | 亚洲mv大片欧洲mv大片免费 | 看v片 | 久草在线视频免赞 | 日韩免费看视频 | 国产剧情一区 | 日本黄色免费在线 | 在线播放 亚洲 | 永久黄网站色视频免费观看w | 天天操一操| 久久精品视频国产 | 国色综合 | 成人h动漫精品一区二 | 国产美腿白丝袜足在线av | 久久精品79国产精品 | 91完整版在线观看 | 在线视频你懂 | 成人毛片100免费观看 | 在线 国产一区 | 激情五月***国产精品 | 手机av电影在线 | 日韩在线观看视频网站 | 日韩网页| 亚洲视频电影在线 | 国产精品美女久久久久久久久久久 | 国产精品麻豆果冻传媒在线播放 | 夜夜躁狠狠躁日日躁 | 欧美最猛性xxxxx免费 | 国语久久| 久久情侣偷拍 | 精品久久久久久一区二区里番 | 国产中文字幕在线看 | 2019av在线视频 | 一区在线观看视频 | 日日夜夜精品免费观看 | 美女视频黄频大全免费 | 午夜免费在线观看 | 超碰九九 | 日韩专区在线观看 | 国产成人免费网站 | 婷婷丁香激情网 | 成人免费视频网站在线观看 | 日韩动态视频 | 亚洲dvd| 插插插色综合 | 国产精品69久久久久 | 日韩欧美国产激情在线播放 | 国产丝袜一区二区三区 | 热久久免费视频 | 免费看一级特黄a大片 | 国产丝袜一区二区三区 | 日韩理论在线视频 | 精品美女久久久久久免费 | 人人精品久久 | 国产一级黄色电影 | 亚洲欧美婷婷六月色综合 | 日韩中文字幕视频在线观看 | 少妇自拍av| 青青草在久久免费久久免费 | 久久激情日本aⅴ | 国产精品久久久久一区二区三区 | 91久久爱热色涩涩 | 欧美在线aa| 国产精品精品国产 | 日韩和的一区二在线 | 日本中文字幕视频 | 久久欧美精品 | 成人av资源在线 | 五月天亚洲婷婷 | 日韩视频一 | 婷婷视频 | 国产91探花 | 国产福利免费在线观看 | 久久久一本精品99久久精品66 | 五月天天av | 一区二区视频播放 | 欧美在线free | 日韩精品免费在线视频 | 91在线免费公开视频 | 中文字幕日本在线 | av电影免费在线看 | 亚洲激情在线观看 | 国产一区二区在线观看免费 | 久久国产经典 | 美女视频黄色免费 | 成人av在线一区二区 | 91精品在线播放 | 精品久久久久_ | 久久精品123 | 欧美日韩久久 | 国产精品久久久久婷婷二区次 | 日韩精品一区电影 | 久久久三级视频 | 99国产一区二区三精品乱码 | 成人免费视频播放 | 九九热.com| 99中文在线| 久久久久久毛片精品免费不卡 | av片在线看| 成年人在线免费看片 | 久久久久久久久久影院 | 日韩av高清在线观看 | 夜夜干夜夜 | 精品视频不卡 | 久99久在线视频 | 成av人电影 | 亚洲精品一区二区18漫画 | 国产精成人品免费观看 | 91成人精品一区在线播放69 | 天堂久色 | 国产精品白浆视频 | 欧美大片在线观看一区 | 天天天天天天干 | 日本久久免费视频 | 国产精品一区二区在线观看免费 | 福利视频一区二区 | 久久99国产综合精品 | 黄色小网站在线 | 在线 国产一区 | 成人影片在线播放 | 国产美女精品人人做人人爽 | 中文字幕av日韩 | 亚洲精品99久久久久中文字幕 | 国精产品满18岁在线 | 亚洲va天堂va欧美ⅴa在线 | 91九色在线视频观看 | 亚洲精品影院在线观看 | 国产精品国产三级国产不产一地 | 国产99久久久国产精品免费二区 | 色欧美成人精品a∨在线观看 | 天天干夜夜夜操天 | 国产精品扒开做爽爽的视频 | 成人免费影院 | 黄色在线成人 | 天天综合视频在线观看 | 99九九免费视频 | 91福利国产在线观看 | 亚洲人精品午夜 | 精精国产xxxx视频在线播放 | 久久久久久美女 | 色爱区综合激月婷婷 | 久久久伊人网 | 亚洲欧美国产精品 | 五月婷婷综合激情 | 日韩成人免费在线 | 中文字幕在线看视频国产 | 国产精品久久久av | 中文字幕在线观看完整版电影 | www.五月天婷婷.com | 东方av免费在线观看 | 日韩另类在线 | 成人精品亚洲 | 亚洲国产精品久久久久婷婷884 | 色婷婷av一区二 | 亚洲国产精品成人va在线观看 | 91在线视频在线观看 | 天天综合久久 | 久久久久女教师免费一区 | 久久综合九色综合久久久精品综合 | 99精品视频免费看 | 黄色影院在线免费观看 | 久草网站| 亚洲精品午夜一区人人爽 | 在线免费观看欧美日韩 | 亚洲人成人在线 | 欧美成人tv | 亚洲成人一区 | 久草在线欧美 | 国产在线视频资源 | 日产乱码一二三区别在线 | 国产女人免费看a级丨片 | 久久久免费观看 | 国产精品久久久久久久免费 | av福利免费 | 国产黄色片免费观看 | 高清久久久 | 久久人人爽爽 | 丁香影院在线 | 日韩精品黄 | 成人黄色一级视频 | 精品国产一区二区三区久久久蜜月 | 国产成人性色生活片 | 美女在线国产 | 色www精品视频在线观看 | 成人午夜黄色 | 狠狠色香婷婷久久亚洲精品 | 香蕉视频网站在线观看 | 色操插| 国产女做a爱免费视频 | 日韩欧美在线综合网 | 日本久久成人中文字幕电影 | 日韩电影久久久 | 国内成人av | 中文字幕在线人 | 日本久久综合视频 | 天天操天天射天天爱 | 波多野结衣在线观看视频 | 国产精品女人网站 | 九九久久在线看 | 亚洲电影在线看 | 欧美激情精品久久 | 久久97久久 | 伊人影院av | 久久久久亚洲精品中文字幕 | 国产麻豆精品久久 | 激情久久久久久久久久久久久久久久 | 国产精品手机在线 | 国内视频在线观看 | 成年人网站免费在线观看 | 日韩午夜剧场 | 日本aaaa级毛片在线看 | 欧美激情视频一二三区 | 久久精品国产一区二区三 | 国产午夜三级一二三区 | 91av国产视频| 日韩欧美电影网 | 国产在线美女 | 亚洲美女精品 | 日韩免费视频 | 国产不卡毛片 | 欧美视频在线二区 | 中文字幕在线观看完整 | 欧美精品亚洲精品 | 又黄又爽又刺激视频 | 久久久久免费精品视频 | 天堂黄色片 | 黄色成人在线网站 | 精品xxx| 国产一区福利在线 | 六月色丁香| 天天色宗合 | 日韩久久精品一区二区 | a黄色片 | 97夜夜澡人人双人人人喊 | 国产日韩精品一区二区 | 日本精品久久久一区二区三区 | 毛片永久免费 | 91九色视频在线 | 久久综合久久久久88 | 久久久久国产精品免费免费搜索 | 欧美日韩国产一二三区 | www.天天色.com | 国产美女精彩久久 | 成人av一区二区在线观看 | 91在线免费看片 | 国产夫妻av在线 | 美女视频黄频大全免费 | 麻豆久久 | 久久久久久久久久久久影院 | www.狠狠色.com | 欧美 日韩 国产 成人 在线 | 久久的色 | 西西444www | 亚洲国产美女久久久久 | 婷婷资源站 | 亚洲美女视频网 | 天天操夜夜拍 | 天天插天天 | 久久免费视频在线 | 91人人爽久久涩噜噜噜 | 亚洲情婷婷 | 亚洲综合小说电影qvod | 一区二区三区免费播放 | 波多野结衣在线观看视频 | 国产午夜精品一区二区三区 | 久草网站| 国产精品久久久久久电影 | 99久久精品国产一区二区三区 | 久久99国产精品二区护士 | 99精彩视频在线观看免费 | 亚洲欧美日本国产 | 亚洲清纯国产 | 中日韩三级视频 | 视频在线一区 | 最新极品jizzhd欧美 | 国产一区二区三区 在线 | 2023年中文无字幕文字 | 99视频在线观看视频 | 国产精品久久网 | 欧美精品一区二区蜜臀亚洲 | 四虎在线免费观看 | 91精品久久久久久综合乱菊 | 日韩av一区二区在线 | 激情影音 | 日韩二三区 | 久久不卡日韩美女 | 福利av在线 | 最新国产精品久久精品 | 欧美日韩高清一区二区 | 久久这里精品视频 | 久久人人爽人人 | 碰超在线 | 日本h视频在线观看 | 亚洲欧美日韩在线看 | 99精品偷拍视频一区二区三区 | 91完整版在线观看 | 在线观看视频一区二区 | 欧美日韩精品在线观看视频 | 在线观看网站黄 | 国产一二三精品 | 四虎海外影库www4hu | 国产精品人成电影在线观看 | 超碰在线人人97 | 亚洲精品视频免费在线观看 | 色视频在线看 | 久久综合激情 | 午夜精品久久久久久久久久久久 | www..com毛片 | 亚洲手机av| 久久久精品一区二区三区 | 精品999久久久 | 日韩av在线资源 | 蜜臀久久99精品久久久酒店新书 | 808电影免费观看三年 | 成人av电影免费在线播放 | 天天干天天干天天操 | 91视频高清 | 国产亚洲一区二区在线观看 | 成人羞羞视频在线观看免费 | 日韩综合色 | 波多野结衣在线视频一区 | 欧美性大战 | 中文字幕色站 | 久久久久亚洲国产精品 | 五月天最新网址 | 日韩欧美在线视频一区二区 | 国产一级免费av | 欧美激精品 | 精品主播网红福利资源观看 | av中文资源在线 | 韩国一区二区三区视频 | 天天操网址 | 欧美成人久久 | 网站免费黄 | 91电影福利 | 久久精彩 | 97在线精品国自产拍中文 | 97精品国产97久久久久久久久久久久 | 久久免费高清 | 亚洲jizzjizz日本少妇 | 中文字幕免费高清在线观看 | 久草精品视频在线播放 | 免费在线观看不卡av | 日本激情视频中文字幕 | 亚洲高清视频在线播放 | 一二三区在线 | 欧美大片在线看免费观看 | 日本精品视频在线 | 午夜精品一区二区三区在线观看 | 日本精品在线 | 天天色成人网 | 亚洲高清在线观看视频 | 久草电影在线观看 | 午夜精品久久久久久久久久 | 国产欧美综合在线观看 | 国产成人黄色av | 99视频偷窥在线精品国自产拍 | 2023av| 五月激情久久 | av天天在线观看 | 99久久er热在这里只有精品15 | 麻豆一精品传二传媒短视频 | 久久艹国产视频 | 国产精品久久久久一区二区三区共 | 黄色片视频免费 | 久久精品久久精品久久精品 | 国产成人精品综合久久久久99 | 亚洲黄色大片 | 久久成人精品电影 | 91成品视频 | 黄色三级免费观看 | 黄色亚洲精品 | 中文字幕在线观看视频免费 | 婷婷成人亚洲综合国产xv88 | 国产精品色在线 | 天天摸日日摸人人看 | 99精品在线 | 99久久影院 | 在线亚洲播放 | 在线观看黄 | 久久久久久久久久影院 | 午夜10000 | 91av在线播放视频 | 日韩欧三级| 色香蕉网 | 国产精品国产亚洲精品看不卡15 | 亚洲国产精品一区二区久久hs | 手机版av在线 | 国产精品美女久久久久久久 | 国产又粗又长又硬免费视频 | 天天干天天操天天干 | 国产视频久久久 | 不卡的av中文字幕 | 国产va在线观看免费 | 美女黄频免费 | 国产精品视频在线观看 | 在线观看国产区 | 精品91视频 | 欧美黄网站 | 久草精品视频在线看网站免费 | 欧美日韩视频免费 | 性色av免费在线观看 | 精品91视频| 天天干一干 | 色诱亚洲精品久久久久久 | 黄色精品网站 | 国产精品igao视频网入口 | 天天操天天射天天爽 | 在线视频 影院 | 69久久99精品久久久久婷婷 | 久久激情综合网 | 超碰97.com| 日韩手机在线 | 久av电影| 一区二区三区在线观看 | 伊人五月 | 精品久久一区二区三区 | 97超碰在线免费观看 | 久久99热久久99精品 | 中文国产字幕在线观看 | 久精品视频免费观看2 | 亚洲激情视频 | av片在线看 | 中文字幕精品一区 | 天天操天天射天天舔 | 成年人黄色大全 | 日韩精品影视 | 99久久综合狠狠综合久久 | 天天操天天色天天射 | 成人av地址| 久免费视频| 男女全黄一级一级高潮免费看 | 99热最新网址 | 精品久久免费看 | 在线电影a | 国产精品久久久久久妇 | 亚洲一片黄 | 韩国av免费观看 | 狠狠色噜噜狠狠狠合久 | www成人av| 午夜av免费在线观看 | 国产精品久久精品国产 | 国产精品 欧美 日韩 | 97精品国产手机 | 手机av看片 | 久久精品男人的天堂 | 国产精品一区二区免费视频 | 国产一级电影在线 | 亚洲国产精品电影 | 国产黄色大片 | 国产一区二区三区在线免费观看 | 国产精品久久久久aaaa | 成人超碰在线 | 91中文字幕在线观看 | 久久久麻豆视频 | 国产区精品在线 | 亚洲精品男人天堂 | 怡红院久久| 国产精彩在线视频 | 97超碰在线久草超碰在线观看 | 丁香婷婷射 | 国产精品一区二区三区四 | 视频在线日韩 | 91视频下载| 国产一区二区手机在线观看 | 91久久国产露脸精品国产闺蜜 | 国内丰满少妇猛烈精品播 | 99亚洲国产| 亚洲综合精品视频 | 国语精品久久 | 日韩影片在线观看 | 97超视频免费观看 | 香蕉视频在线视频 | 久久免费视频这里只有精品 | 久久av网| 在线免费观看视频一区 | 国产高清在线免费观看 | 日本丶国产丶欧美色综合 | 国产精品美乳一区二区免费 | 操操操操网 | 久久久高清一区二区三区 | 99视频久| 久久久久久国产精品免费 | 性色视频在线 | 99热国产精品 | 国产精品电影一区 | 国产亚洲精品综合一区91 | 又爽又黄又刺激的视频 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产精品刺激对白麻豆99 | 国产精品欧美激情在线观看 | 天天爱天天 | av在线一 | 在线视频一区二区 | 99爱在线观看 | 狠狠操夜夜操 | 精品一区在线看 | 日韩专区在线观看 | av在线播放快速免费阴 | 808电影| 婷婷六月丁 | 在线亚洲小视频 | 亚洲一区久久 | 久草精品在线播放 | 午夜少妇一区二区三区 | 亚洲精品日韩av | 夜夜高潮夜夜爽国产伦精品 | 美女国内精品自产拍在线播放 | 色视频网址 | 国产精品一区二区免费在线观看 | 97在线观看| 国产一区国产二区在线观看 | 日韩免费视频在线观看 | 午夜精品久久久久久久99无限制 | 欧美一二三区播放 | 婷婷网站天天婷婷网站 | 国产一区二区三区 在线 | 中文字幕在线观看视频免费 | 免费污片 | 久久婷婷一区二区三区 | 午夜10000 | 在线观看精品国产 | 亚洲色五月 | 久久久久久久久久毛片 | 三级av在线免费观看 | 91桃色在线观看视频 | 国产特级毛片aaaaaaa高清 | 久久久免费精品国产一区二区 | www.亚洲激情.com| 久久高清av| 开心激情五月婷婷 | 亚洲精品美女久久久久网站 | 国产精品三级视频 | 精品美女久久久久久免费 | 狠狠躁夜夜躁人人爽超碰91 | 国产一区二区在线免费视频 | 精品人妖videos欧美人妖 | 成人欧美一区二区三区在线观看 | 欧美精品一级视频 | 色噜噜在线观看视频 | 国色天香在线 | 国产99区| 97偷拍视频 | 久久精品国产第一区二区三区 | 激情中文在线 | 久久福利| av福利在线| 五月天婷婷在线视频 | 亚洲三级国产 | jizz999| 五月激情av | 九九免费在线看完整版 | 国产精品区免费视频 | 在线免费国产视频 | 胖bbbb搡bbbb擦bbbb | 中文字幕在线专区 | 中文字幕在线看视频国产 | 国产精品99久久免费观看 | 中文字幕免费一区 | 一本色道久久综合亚洲二区三区 | 三级黄色大片在线观看 | 久久看看 | 天天操天天干天天爽 | 欧美日韩在线视频一区二区 | 日韩精品一区电影 | 精选久久 | 最近最新mv字幕免费观看 | 欧美精品成人在线 | 久久99网站| 精品国产乱码久久久久久三级人 | 在线观看视频一区二区三区 | 免费日韩 精品中文字幕视频在线 | 久久久久久免费网 | 99视频免费 | 热re99久久精品国产66热 | 人人爽人人舔 | 99精品视频免费观看视频 | 国产123区在线观看 国产精品麻豆91 | 日韩精品在线观看视频 | 亚洲精品美女久久久 | 久久综合之合合综合久久 | 九九免费观看视频 | 九热精品| 日韩av成人 | 国产91免费在线 | 日韩欧美一级二级 | 涩涩网站在线观看 | 久久美女高清视频 | 日本精品一 | 国产免码va在线观看免费 | 日韩一区视频在线 | 国产高清不卡在线 | 成人黄色av网站 | 日韩电影一区二区三区在线观看 | 欧美精品在线一区 | 日韩免费在线 | 香蕉在线视频播放网站 | 欧美福利网站 | 高清av免费观看 | 99精品久久只有精品 | 成年美女黄网站色大片免费看 | 欧美日韩国产一区二区在线观看 | 日韩av网页 | 视频在线观看亚洲 | 国产精品一区二区三区电影 | 国产高清在线精品 | 久久五月天色综合 | 69视频国产 | 亚洲精品视频在线播放 | 中文字幕乱码电影 | 五月天激情视频在线观看 | 日本激情视频中文字幕 | 激情中文字幕 | 欧美性成人 | 4p变态网欧美系列 | 97手机电影网| 日韩在线色视频 | 日本女人在线观看 | 青青河边草观看完整版高清 | 男女精品久久 | 欧美日韩国产精品一区二区 | 国产在线一卡 | 日韩高清免费观看 | 99热在线网站 | 亚洲一级影院 | 天天草视频 | 日韩av看片 | 久久精品视频网站 | 日本h视频在线观看 | 精品久久一区二区三区 | 国产亚洲精品久久久网站好莱 |