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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

基于tensorflow的RNN自然语言建模

發布時間:2024/9/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于tensorflow的RNN自然语言建模 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于循環神經網絡的介紹可以參考:
https://blog.csdn.net/lilong117194/article/details/82958326
這里強烈建議先搞明白上述參考鏈接中的一些基本概念和例子,再讀下面的代碼。

PTB 數據集下載:http://www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz

1. 自然語言建模

簡單的說,自然語言建模的目的就是為了計算一個句子出現的概率。在這里把句子看做是單詞的序列,于是自然語言模型需要計算的就是p(w1,w2,..wn)p(w_1,w_2,..w_n)p(w1?,w2?,..wn?)。然后利用語言模型,可以確定哪個單詞序列出現的可能性更大,或者給定若干個單詞,可以預測下一個最可能出現的詞語。
舉個音字轉換的例子:假設輸入的拼音字符串為“xianzaiquna”,它的輸出可以是“西安在去哪”,同樣也可以是“現在去哪”。根據語言常識可以知道,應該轉換為后者的概率更大,而這時的語言模型就可以得到后者的概率大于前者,這就是語言模型的作用。

那么如何計算一個句子的概率呢?首先一個句子可以被看做單詞組成的序列:
s=(w1,w2,w3...wm)s = (w_1,w_2,w_3 ... w_m)s=(w1?,w2?,w3?...wm?)
其中 m 是下標,表示句子的長度。那么,它的概率可以表示成:

p(s)=p(w1,w2,w3...wm)=p(w1)p(w2∣w1)p(w3∣w1,w2)...p(wm∣w1,w2,...,wm?1)p(s) = p(w_1,w_2,w_3 ... w_m) = p(w_1)p(w_2|w_1)p(w_3|w_1,w_2) ... p(w_m|w_1,w_2, ... ,w_{m-1})p(s)=p(w1?,w2?,w3?...wm?)=p(w1?)p(w2?w1?)p(w3?w1?,w2?)...p(wm?w1?,w2?,...,wm?1?)

要計算句子出現的概率,就得知道上面公式中等式右邊每一項的取值。但是任何一門語言的詞匯量都是極大的,這樣我們無法根據這個公式計算概率,因為計算復雜度無可估量。于是我們采用估算的方法,常用的是:n-gram方法、決策樹、最大熵模型、條件隨機場、神經網絡語言模型。這里只介紹 n-gram 模型和循環神經網絡的方法。

1.1 n-gram 模型的及其評價標準

n-gram 模型基于一個重要的有限歷史假設:當前單詞出現的概率僅僅取決于它的前 n-1 個單詞,即p(wm∣w1,w2,...,wm?1)≈p(wi∣wi?n+1,...,wi?1)p(w_m|w_1,w_2, ... ,w_{m-1})\approx p(w_i|w_{i-n+1}, ... ,w_{i-1})p(wm?w1?,w2?,...,wm?1?)p(wi?wi?n+1?,...,wi?1?)因此上面的P(S)可以近似為p(S)=p(w1,w2,w3...wm)=∏imp(wi∣wi?n+1,...,wi?1)p(S) = p(w_1,w_2,w_3 ... w_m) =\prod _i ^m p(w_i|w_{i-n+1}, ... ,w_{i-1})p(S)=p(w1?,w2?,w3?...wm?)=im?p(wi?wi?n+1?,...,wi?1?),而這里通常 n 指的是當前單詞依賴它前面的單詞個數。通常可以取 1,2,3 對應的模型分別稱為 unigram,bigram和 trigram 模型。所以n—gram模型需要估計的參數為條件概率:p(wi∣wi?n+1,...,wi?1)p(w_i|w_{i-n+1}, ... ,w_{i-1})p(wi?wi?n+1?,...,wi?1?),所以有:

  • 在1-gram模型下:
    P(w1,w2,w3,…,wn)=P(w1)P(w2∣w1)P(w3∣w1w2)P(w4∣w1w2w3)…P(wn∣w1w2…wn?1)≈P(w1)P(w2)P(w3)P(w4)…P(wn)P(w_1, w_2, w_3, … , w_n)=P(w_1)P(w_2|w_1)P(w_3|w_1w_2)P(w_4|w_1w_2w_3)…P(w_n|w_1w_2…w_{n-1})≈P(w_1)P(w_2)P(w_3)P(w_4)…P(w_n)P(w1?,w2?,w3?,,wn?)=P(w1?)P(w2?w1?)P(w3?w1?w2?)P(w4?w1?w2?w3?)P(wn?w1?w2?wn?1?)P(w1?)P(w2?)P(w3?)P(w4?)P(wn?)
  • 在2-gram模型下:
    P(w1,w2,w3,…,wn)=P(w1)P(w2∣w1)P(w3∣w1w2)P(w4∣w1w2w3)…P(wn∣w1w2…wn?1)≈P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3)…P(wn∣wn?1)P(w_1, w_2, w_3, … , w_n)=P(w_1)P(w_2|w_1)P(w_3|w_1w_2)P(w_4|w_1w_2w_3)…P(w_n|w_1w_2…w_{n-1})≈P(w_1)P(w_2|w_1)P(w_3|w_2)P(w_4|w_3)…P(w_n|w_{n-1})P(w1?,w2?,w3?,,wn?)=P(w1?)P(w2?w1?)P(w3?w1?w2?)P(w4?w1?w2?w3?)P(wn?w1?w2?wn?1?)P(w1?)P(w2?w1?)P(w3?w2?)P(w4?w3?)P(wn?wn?1?)
  • 在3-gram模型下:
    P(w1,w2,w3,…,wn)=P(w1)P(w2∣w1)P(w3∣w1w2)P(w4∣w1w2w3)…P(wn∣w1w2…wn?1)≈P(w1)P(w2∣w1)P(w3∣w1w2)P(w4∣w2w3)…P(wn∣wn?2wn?1)P(w_1, w_2, w_3, … , w_n)=P(w_1)P(w_2|w_1)P(w_3|w_1w_2)P(w_4|w_1w_2w_3)…P(w_n|w_1w_2…w_{n-1}) ≈P(w_1)P(w_2|w_1)P(w_3|w_1w_2)P(w_4|w_2w_3)…P(w_n|w_{n-2}w_{n-1}) P(w1?,w2?,w3?,,wn?)=P(w1?)P(w2?w1?)P(w3?w1?w2?)P(w4?w1?w2?w3?)P(wn?w1?w2?wn?1?)P(w1?)P(w2?w1?)P(w3?w1?w2?)P(w4?w2?w3?)P(wn?wn?2?wn?1?)
  • 在4-gram模型下:
    P(w1,w2,w3,…,wn)=P(w1)P(w2∣w1)P(w3∣w1w2)P(w4∣w1w2w3)…P(wn∣w1w2…wn?1)≈P(w1)P(w2∣w1)P(w3∣w1w2)P(w4∣w1w2w3)…P(wn∣wn?3wn?2wn?1)P(w_1, w_2, w_3, … , w_n)=P(w_1)P(w_2|w_1)P(w_3|w_1w_2)P(w_4|w_1w_2w_3)…P(w_n|w_1w_2…w_{n-1})≈P(w_1)P(w_2|w_1)P(w_3|w_1w_2)P(w_4|w_1w_2w_3)…P(w_n|w_{n-3}w_{n-2}w_{n-1})P(w1?,w2?,w3?,,wn?)=P(w1?)P(w2?w1?)P(w3?w1?w2?)P(w4?w1?w2?w3?)P(wn?w1?w2?wn?1?)P(w1?)P(w2?w1?)P(w3?w1?w2?)P(w4?w1?w2?w3?)P(wn?wn?3?wn?2?wn?1?)

假設某種語言的單詞表大小為 k,那么我們可以計算出 n-gram 模型需要估計的不同參數數量為k的n次方(慶幸不是k的k次方)。高于四元的用的很少,因為訓練它需要更龐大的語料,而且數據稀疏嚴重,時間復雜度高,精確度卻提高的不多。而n-gram模型的參數估計一般采用最大似然估計(maximun likelihood estimation,MLE)的計算方法:
p(wi∣wi?n+1,...,wi?1)=C(wi,wi?n+1,...,wi?1)C(wi?n+1,...,wi?1)p(w_i|w_{i-n+1}, ... ,w_{i-1})=\frac{C(w_i,w_{i-n+1}, ... ,w_{i-1})}{C(w_{i-n+1}, ... ,w_{i-1})}p(wi?wi?n+1?,...,wi?1?)=C(wi?n+1?,...,wi?1?)C(wi?,wi?n+1?,...,wi?1?)?
其中C(X)C(X)C(X)表示單詞序列X在訓練語料中出現的次數。也就是說,訓練語料越大,參數估計的結果越可靠。但是還有一個問題存在,那就是即使訓練的語料再大,也會有在訓練中沒有出現過的n-gram 序列出現,這就會導致很多參數為0,為了避免乘以0而導致整個概率為0,使用最大似然估計方法時都需要加入平滑避免參數取值為 0 。
語言模型的好壞常用的評價指標是復雜度 perplexity 。perplexity 值刻畫的就是通過某一個語言模型估計的一句話出現的概率。比如當已知(w1,w2,w3,…,Wm)這句話出現在語料庫之中,那么通過語言模型計算得到這句話的概率就越高越好,也就是 perplexity 值越小越好。令 perplexity 為:
mperplexity(S)=p(w1,w2,w3...wm)?1m=1p(w1,w2,w3...wm)m=1∏i=1mp(wi∣w1,w2...,wi?1)m=1∏i=1mp(wi∣wi?n+1,...,wi?1)mmperplexity(S)= p(w_1,w_2,w_3 ... w_m)^{-\frac{1}{m}}=\sqrt[m]{\frac{1}{p(w_1,w_2,w_3 ... w_m)}}=\sqrt[m]{\frac{1}{\prod_{i=1}^mp(w_i|w_1,w_2 ... ,w_{i-1})}}=\sqrt[m]{\frac{1}{\prod_{i=1}^mp(w_i|w_{i-n+1}, ... ,w_{i-1})}}mperplexity(S)=p(w1?,w2?,w3?...wm?)?m1?=mp(w1?,w2?,w3?...wm?)1??=mi=1m?p(wi?w1?,w2?...,wi?1?)1??=mi=1m?p(wi?wi?n+1?,...,wi?1?)1??
其中n為n-gram模型中的n。
另一種表示方式:
log(perplexity(s))=?∑p(wi∣w1,w2...wi?1)mlog(perplexity(s))=\frac{-\sum p(w_i|w_1,w_2...w_{i-1})}{m}log(perplexity(s))=m?p(wi?w1?,w2?...wi?1?)?
相比第一種乘積開根號的表示形式,這里使用加法的形式可以加速計算,這也有效的避免了概率為0時導致整個計算結果為0的問題。

復雜度perplexity表示的是平均分支系數(average branch factor),即模型預測下一個詞時的平均可選擇數量。

例如:考慮一個由0-9這10個數字隨機組成的長度為m的序列。由于這10個數字出現的概率是隨機的,所以每個數字出現的概率是110\frac{1}{10}101?。因此在任意時刻,模型都有10個等概率的候選答案可以選擇,于是perplexity的值就是10,計算過程:perplexity(s)=1∏i=1m110mperplexity(s)=\sqrt[m]{\frac{1}{\prod_{i=1}^m \frac{1}{10}}}perplexity(s)=mi=1m?101?1??。因此有一個語言模型的perplexity是89,就表示平均情況下,模型預測下一個詞時,有89個詞等可能地可以作為下一個詞的選擇。

1.2 rnn自然語言建模

除了 n-gram 模型,RNN 也可以用來對自然語言建模,如下圖所示:

每個時刻的輸入為一個句子中的單詞,而每個時刻的輸出為一個概率分布,表示句子中下一個位置為不同單詞的概率。通過這種方式,對于給定的句子,就可以通過RNN的前向傳播計算出p(wi∣w1,w2...wi?1)p(w_i|w_1,w_2...w_{i-1})p(wi?w1?,w2?...wi?1?)
比如 “大海的顏色是藍色” 這句話的概率,知道第一個單詞是 “大海” 后,計算 p(“的”|“大海”) = 0.8,然后計算 p(x|“大海”,"的“) 、p(x|“大海”,“的”,“顏色”)、p(x|“大海”,“的”,“顏色”,“是”)。以此類推,就可以求出整句話 “大海的顏色是藍色” 的概率。

2. 基于PTB文本數據集的自然語言模型

PTB(penn treebank dataset)文本數據集是語言模型學習中最廣泛使用的數據集。下載 PTB 數據集:http://www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz 解壓后獲取 data 目錄下的三個文件:
ptb.train.txt 訓練集
ptb.valid.txt 驗證集
ptb.test.txt 測試集
這三個數據文件夾中的數據已經經過了預處理,包含了1000個不同的詞語和語句結束標記符。TensorFlow 提供了 ptb_raw_data函數來讀取PTB的數據,并將原始數據中的單詞轉換成單詞 ID。

代碼:

from tensorflow.models.tutorials.rnn.ptb import readerDATA_PATH="PTB_data" train_data,valid_data,test_data,_=reader.ptb_raw_data(DATA_PATH)# 讀取數據原始數據 print(len(train_data)) print(train_data[:100])

結果:

929589 [9970, 9971, 9972, 9974, 9975, 9976, 9980, 9981, 9982, 9983, 9984, 9986, 9987, 9988, 9989, 9991, 9992, 9993, 9994, 9995, 9996, 9997, 9998, 9999, 2, 9256, 1, 3, 72, 393, 33, 2133, 0, 146, 19, 6, 9207, 276, 407, 3, 2, 23, 1, 13, 141, 4, 1, 5465, 0, 3081, 1596, 96, 2, 7682, 1, 3, 72, 393, 8, 337, 141, 4, 2477, 657, 2170, 955, 24, 521, 6, 9207, 276, 4, 39, 303, 438, 3684, 2, 6, 942, 4, 3150, 496, 263, 5, 138, 6092, 4241, 6036, 30, 988, 6, 241, 760, 4, 1015, 2786, 211, 6, 96, 4]

訓練數據總共包括929589個單詞,而這些單詞被組成了一個很長的序列。這個序列通過特殊的標識符給出了每句話結束的位置。而這個數據集中,句子結束的標識符id為2,從運行結果可以看出句子結束的位置。

構造訓練集需要的batch:

import tensorflow as tf from tensorflow.models.tutorials.rnn.ptb import readerDATA_PATH = "PTB_data" train_data, valid_data, test_data, _ = reader.ptb_raw_data(DATA_PATH) print ('Total length:',len(train_data)) print (train_data[:100]) print('..........................')tt=train_data[:100] print(len(tt)) # 100個id分成4組,每組就是25個,截斷長度為5,也就是25/5=5每組5批id,第25個id是9256 print('id:',tt[25]) """ 將訓練數據組織成batch大小為4、截斷長度為5的數據組。并使用隊列讀取前3個batch。 即是:把原始的序列從第一個算起,平均分成4組,每組的大小是平均后的長度。而截斷長度是從每組中從第一個開始截取長度為5 """ # ptb_producer返回的為一個二維的tuple數據。 result = reader.ptb_producer(tt, 4, 5) print(type(result)) # 通過隊列依次讀取batch。 with tf.Session() as sess:coord = tf.train.Coordinator()threads = tf.train.start_queue_runners(sess=sess, coord=coord)for i in range(5):x, y = sess.run(result)print ("X%d: "%i, x)print ("Y%d: "%i, y)coord.request_stop()coord.join(threads)

運行結果:

Total length: 929589 [9970, 9971, 9972, 9974, 9975, 9976, 9980, 9981, 9982, 9983, 9984, 9986, 9987, 9988, 9989, 9991, 9992, 9993, 9994, 9995, 9996, 9997, 9998, 9999, 2, 9256, 1, 3, 72, 393, 33, 2133, 0, 146, 19, 6, 9207, 276, 407, 3, 2, 23, 1, 13, 141, 4, 1, 5465, 0, 3081, 1596, 96, 2, 7682, 1, 3, 72, 393, 8, 337, 141, 4, 2477, 657, 2170, 955, 24, 521, 6, 9207, 276, 4, 39, 303, 438, 3684, 2, 6, 942, 4, 3150, 496, 263, 5, 138, 6092, 4241, 6036, 30, 988, 6, 241, 760, 4, 1015, 2786, 211, 6, 96, 4] .......................... 100 id: 9256 <class 'tuple'> X0: [[9970 9971 9972 9974 9975][9256 1 3 72 393][1596 96 2 7682 1][3684 2 6 942 4]] Y0: [[9971 9972 9974 9975 9976][ 1 3 72 393 33][ 96 2 7682 1 3][ 2 6 942 4 3150]] X1: [[9976 9980 9981 9982 9983][ 33 2133 0 146 19][ 3 72 393 8 337][3150 496 263 5 138]] Y1: [[9980 9981 9982 9983 9984][2133 0 146 19 6][ 72 393 8 337 141][ 496 263 5 138 6092]] X2: [[9984 9986 9987 9988 9989][ 6 9207 276 407 3][ 141 4 2477 657 2170][6092 4241 6036 30 988]] Y2: [[9986 9987 9988 9989 9991][9207 276 407 3 2][ 4 2477 657 2170 955][4241 6036 30 988 6]] X3: [[9991 9992 9993 9994 9995][ 2 23 1 13 141][ 955 24 521 6 9207][ 6 241 760 4 1015]] Y3: [[9992 9993 9994 9995 9996][ 23 1 13 141 4][ 24 521 6 9207 276][ 241 760 4 1015 2786]] X4: [[9970 9971 9972 9974 9975][9256 1 3 72 393][1596 96 2 7682 1][3684 2 6 942 4]] Y4: [[9971 9972 9974 9975 9976][ 1 3 72 393 33][ 96 2 7682 1 3][ 2 6 942 4 3150]]

這里主要是為了送入循環神經網絡而做的數據處理。將一個長序列分成batch并截斷的操作示意圖如下:

注意:
報錯信息:
'AttributeError: module 'tensorflow.models.tutorials.rnn.ptb.reader' has no attribute 'ptb_iterator'
把讀取 PTB 數據集的 reader的 ptb_iterator() 修改成ptb_producer()。

但還是會報錯:
AttributeError: 'tuple' object has no attribute 'next',這是因為 ptb_producer() 返回的是 tuple,這時可以使用上述的方式通過建立session,使用隊列來解決。

完整的RNN語言模型為:

import numpy as np import tensorflow as tf from tensorflow.models.tutorials.rnn.ptb import readerDATA_PATH = "PTB_data" # 數據存儲路徑 HIDDEN_SIZE = 200 # 隱藏層規模 NUM_LAYERS = 2 # 深層循環網絡中lstm結構的層數 VOCAB_SIZE = 10000 # 詞典規模,加上語句結束標示符和稀有單詞標示符,總共一萬多個單詞LEARNING_RATE = 1.0 # 學習速率 TRAIN_BATCH_SIZE = 20 # 訓練數據batch的大小 TRAIN_NUM_STEP = 35 # 截斷長度# 在測試時不需要使用截斷,可以將測試數據看成一個超長的序列 EVAL_BATCH_SIZE = 1 # 測試數據batch的大小 EVAL_NUM_STEP = 1 # 測試數據截斷的長度 NUM_EPOCH = 2 # 使用訓練數據的輪數 KEEP_PROB = 0.5 # 節點不被dropout的概率 MAX_GRAD_NORM = 5 # 用于控制梯度膨脹的參數# 通過一個PTBModel類來描述模型,這樣方便維護循環神經網絡中的狀態 class PTBModel(object):# 記錄使用的batch的大小和截斷長度def __init__(self, is_training, batch_size, num_steps):# 使用batch的大小和截斷長度self.batch_size = batch_sizeself.num_steps = num_steps # 定義輸入層:維度為batch_size x num_steps,這和ptb_producer的函數輸出的數據batch是一致的。self.input_data = tf.placeholder(tf.int32, [batch_size, num_steps])# 定義預期輸出:它和輸入是對應的,標簽就是該詞匯對應的下一個詞匯self.targets = tf.placeholder(tf.int32, [batch_size, num_steps])# 定義一個基礎的LSTM結構作為循環體的基礎結構,深層循環神經網絡也支持使用其他的循環體。 lstm_cell = tf.contrib.rnn.BasicLSTMCell(HIDDEN_SIZE)if is_training:# 訓練時使用dropout的深層循環神經網絡lstm_cell = tf.contrib.rnn.DropoutWrapper(lstm_cell, output_keep_prob=KEEP_PROB)# 通過MultiRNNCell類實現深層循環網絡中的每一個時刻的前向傳播過程cell = tf.contrib.rnn.MultiRNNCell([lstm_cell]*NUM_LAYERS)# 初始化最初的狀態:也就是全0的向量self.initial_state = cell.zero_state(batch_size, tf.float32)"""下面是tensorflow中word2vec的構建"""# 將單詞id轉換為單詞向量:因為總共有VOCAB_SIZE個單詞,每個單詞的向量維度為hidde_size,# 所以embedding參數的維度為10000x200embedding = tf.get_variable("embedding", [VOCAB_SIZE, HIDDEN_SIZE]) # 將原本batch_size x numk_steps個單詞ID轉為單詞向量,# 轉化后的輸入層維度為batch_sizexnum_stepsxhidden_sizeinputs = tf.nn.embedding_lookup(embedding, self.input_data)# 只在訓練時使用dropoutif is_training:inputs = tf.nn.dropout(inputs, KEEP_PROB)# 定義輸出列表:在這里先將不同時刻的lstm結構的輸出列表收集起來,再通過一個全連接層得到最終的輸出outputs = []# state存儲不同batch中lstm的“狀態”,將其初始化為0state = self.initial_statewith tf.variable_scope("RNN"):# 這里num_steps是截斷長度為35:為了避免梯度消散問題,會規定一個最大的序列長度,就是num_stepsfor time_step in range(num_steps): # 在第一個時刻需要聲明網絡中的變量,在之后的時刻都需要復用之前定義好的變量。if time_step > 0: tf.get_variable_scope().reuse_variables()# 每一步處理時間序列中的一個時刻。將當前的輸入和前一時刻狀態傳入定義好的網絡結構,# 可以得到當前的輸出和更新的狀態cell_output, state = cell(inputs[:, time_step, :], state)# 將當前輸出加入到輸出隊列outputs.append(cell_output) # 把輸出隊列展開成[batch,hidden_size*num_steps]的形狀,然后再reshape成[batch*num_steps,hidden_size]的形狀# tf.concat(concat_dim, values, name='concat'),這里完全是為了后面全連接層的運算(3D化為2D)output = tf.reshape(tf.concat(outputs, 1), [-1, HIDDEN_SIZE])# 將從lstm中得到的輸出再經過一個全連接層得到最后的預測結果,# 最終的預測結果在每一個時刻上都是一個長度為vocab_size的數組,經過softamx層之后表示下一個位置是不同單詞的概率weight = tf.get_variable("weight", [HIDDEN_SIZE, VOCAB_SIZE])bias = tf.get_variable("bias", [VOCAB_SIZE])logits = tf.matmul(output, weight) + bias # [20x35,200]*[200x10000]+[10000]# 定義交叉熵損失函數:tf使用sequence_loss_by_example函數來計算一個序列的交叉熵的和loss = tf.contrib.legacy_seq2seq.sequence_loss_by_example([logits], # 預測的結果[tf.reshape(self.targets, [-1])], # 期望的正確答案,這里將[batch,num_step]的二維數組壓縮成一維數組# 損失的權重:這里所有的權重都為1,也就是說不同batch和不同時刻的重要程度是一樣的[tf.ones([batch_size * num_steps], dtype=tf.float32)])# 計算得到每個batch的平均損失self.cost = tf.reduce_sum(loss) / batch_size self.final_state = state# 只在訓練模型時定義反向傳播操作。if not is_training: return trainable_variables = tf.trainable_variables()# 通過clip_by_global_norm函數控制梯度大小,避免梯度膨脹的問題。grads, _ = tf.clip_by_global_norm(tf.gradients(self.cost, trainable_variables), MAX_GRAD_NORM)# 定義優化方法optimizer = tf.train.GradientDescentOptimizer(LEARNING_RATE)# 定義訓練步驟self.train_op = optimizer.apply_gradients(zip(grads, trainable_variables))# 使用給定的模型model在數據data上運行train_op并返回在全部數據上的perolexity值 def run_epoch(session, model, data, train_op, output_log, epoch_size):# 計算perplexity的輔助變量total_costs = 0.0iters = 0state = session.run(model.initial_state)# 使用當前數據訓練或者測試模型for step in range(epoch_size):x, y = session.run(data)# 在當前batch上運行train_op并計算損失值,交叉熵損失函數計算的就是下一個單詞為給定單詞的概率cost, state, _ = session.run([model.cost, model.final_state, train_op],{model.input_data: x, model.targets: y, model.initial_state: state}) # 將不同時刻、不同batch的概率加起來再將這個和做指數運算就可以得到perplexity值(公式二)total_costs += costiters += model.num_steps# 只有在訓練時輸出日志if output_log and step % 100 == 0:print("After %d steps, perplexity is %.3f" % (step, np.exp(total_costs / iters)))# 返回給定模型在給定數據上的perplexity值return np.exp(total_costs / iters)def main():# 獲得原始數據train_data, valid_data, test_data, _ = reader.ptb_raw_data(DATA_PATH)print ('length of traindata:',len(train_data))# 計算一個epoch需要訓練的次數train_data_len = len(train_data)# 這里的‘//’是取整的意思train_batch_len = train_data_len // TRAIN_BATCH_SIZE# 這里得到的是每個batch可以分成多少個steptrain_epoch_size = (train_batch_len - 1) // TRAIN_NUM_STEPprint('train_epoch_size:',train_epoch_size)# 同上valid_data_len = len(valid_data)valid_batch_len = valid_data_len // EVAL_BATCH_SIZEvalid_epoch_size = (valid_batch_len - 1) // EVAL_NUM_STEPprint('valid_epoch_size:',valid_epoch_size)# 同上test_data_len = len(test_data)test_batch_len = test_data_len // EVAL_BATCH_SIZEtest_epoch_size = (test_batch_len - 1) // EVAL_NUM_STEPprint('test_epoch_size:',test_epoch_size)# 定義初始化函數initializer = tf.random_uniform_initializer(-0.05, 0.05)# 定義訓練用的循環神經網絡模型with tf.variable_scope("language_model", reuse=None, initializer=initializer):train_model = PTBModel(True, TRAIN_BATCH_SIZE, TRAIN_NUM_STEP)# 定義測試用的循環神經網絡模型with tf.variable_scope("language_model", reuse=True, initializer=initializer):eval_model = PTBModel(False, EVAL_BATCH_SIZE, EVAL_NUM_STEP)# 訓練模型。with tf.Session() as session:tf.global_variables_initializer().run()train_queue = reader.ptb_producer(train_data, train_model.batch_size, train_model.num_steps)eval_queue = reader.ptb_producer(valid_data, eval_model.batch_size, eval_model.num_steps)test_queue = reader.ptb_producer(test_data, eval_model.batch_size, eval_model.num_steps)coord = tf.train.Coordinator()threads = tf.train.start_queue_runners(sess=session, coord=coord)# 使用訓練數據訓練模型for i in range(NUM_EPOCH):print("In iteration: %d" % (i + 1))# 在所有的訓練數據上訓練循環神經網絡run_epoch(session, train_model, train_queue, train_model.train_op, True, train_epoch_size)# 使用驗證數據集評測數據效果valid_perplexity = run_epoch(session, eval_model, eval_queue, tf.no_op(), False, valid_epoch_size)print("Epoch: %d Validation Perplexity: %.3f" % (i + 1, valid_perplexity))# 使用測試數據集測試模型效果test_perplexity = run_epoch(session, eval_model, test_queue, tf.no_op(), False, test_epoch_size)print("Test Perplexity: %.3f" % test_perplexity)coord.request_stop()coord.join(threads)""" 主函數入口 """ if __name__ == "__main__":main()

運行結果:

length of traindata: 929589 train_epoch_size: 1327 valid_epoch_size: 73759 test_epoch_size: 82429 In iteration: 1 After 0 steps, perplexity is 9980.495 After 100 steps, perplexity is 1389.408 After 200 steps, perplexity is 1021.756 After 300 steps, perplexity is 853.102 After 400 steps, perplexity is 746.115 After 500 steps, perplexity is 673.331 After 600 steps, perplexity is 621.486 After 700 steps, perplexity is 577.891 After 800 steps, perplexity is 538.988 After 900 steps, perplexity is 508.633 After 1000 steps, perplexity is 485.270 After 1100 steps, perplexity is 462.591 After 1200 steps, perplexity is 443.829 After 1300 steps, perplexity is 426.913 Epoch: 1 Validation Perplexity: 244.784 In iteration: 2 After 0 steps, perplexity is 370.560 After 100 steps, perplexity is 259.848 After 200 steps, perplexity is 264.565 After 300 steps, perplexity is 265.816 After 400 steps, perplexity is 263.193 After 500 steps, perplexity is 260.594 After 600 steps, perplexity is 260.226 After 700 steps, perplexity is 257.938 After 800 steps, perplexity is 253.309 After 900 steps, perplexity is 250.747 After 1000 steps, perplexity is 249.277 After 1100 steps, perplexity is 246.004 After 1200 steps, perplexity is 243.725 After 1300 steps, perplexity is 241.052 Epoch: 2 Validation Perplexity: 198.344 Test Perplexity: 191.840

通過輸出可以看出,在迭代開始時perplexity值為9980.495,這也就是說相當于從10000個單詞中隨機選擇下一個單詞,而在訓練結束后,perplexity的值降低到了 ,這說明通過訓練將選擇下一個單詞的范圍從10000個減少到大約190,當然還可以通過修改參數,把perplexity降低到更低。

總結

以上是生活随笔為你收集整理的基于tensorflow的RNN自然语言建模的全部內容,希望文章能夠幫你解決所遇到的問題。

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

天天爱天天操天天爽 | 一区 二区电影免费在线观看 | 国产精品成人免费一区久久羞羞 | 日韩美av在线 | 亚洲资源网 | 亚洲91网站| 国产亚洲亚洲 | 日本性生活免费看 | 狠狠狠色狠狠色综合 | 国产中的精品av小宝探花 | 日日干日日| 国产精品美女久久久网av | 97电影手机 | 日韩视频在线不卡 | 国产色a在线观看 | 亚洲婷婷丁香 | 1024手机基地在线观看 | 91av在线播放视频 | 欧美韩国日本在线观看 | 天天操天天舔天天爽 | 久久久久久久久国产 | 免费视频成人 | 亚洲欧美日韩国产一区二区三区 | 国产精品成久久久久 | 国产一二区视频 | 国产91成人在在线播放 | 欧美日韩一区二区视频在线观看 | 欧美视频www | 免费观看性生活大片3 | 激情婷婷欧美 | 精品久久视频 | 精品视频在线视频 | 日本韩国中文字幕 | 天天草av | 亚洲乱码精品久久久久 | 91丨九色丨高潮丰满 | 国产玖玖精品视频 | 麻豆网站免费观看 | 国产精品福利在线 | 免费视频a | 日本高清免费中文字幕 | 久久视频在线观看免费 | 亚洲综合在线五月天 | 日韩中文字幕电影 | 国产成人99av超碰超爽 | 欧美一性一交一乱 | 午夜精品久久久久久久99婷婷 | 久草在线视频精品 | 97视频在线观看成人 | 91成人在线观看喷潮 | 国产资源在线播放 | 99综合久久 | 中文字幕中文字幕在线中文字幕三区 | 国产在线传媒 | 国产电影黄色av | 色综合久久综合网 | 欧美日韩高清一区二区三区 | 亚洲激情在线视频 | 国产精品18久久久久白浆 | 成人免费av电影 | 香蕉免费 | 亚洲精品久久激情国产片 | 人人看97 | 欧美一级爽 | 免费在线观看成人av | 黄色aaa级片 | .国产精品成人自产拍在线观看6 | 国产午夜精品一区二区三区嫩草 | 毛片网在线播放 | 精品久久久久久一区二区里番 | 美女av在线免费 | 麻豆免费看片 | 亚洲免费在线视频 | 国产精品黄网站在线观看 | 成人一级| 国产精品不卡视频 | 夜夜爽88888免费视频4848 | av免费在线免费观看 | 色综合久久88色综合天天 | 欧美淫aaa免费观看 日韩激情免费视频 | 免费视频三区 | 91视频免费看网站 | 成人小视频在线观看免费 | 日韩视频在线不卡 | 国产精品麻豆三级一区视频 | 日韩免费av片 | 日本免费久久高清视频 | 综合网天天射 | 黄色三级视频片 | 欧美日韩三级在线观看 | 在线观看av的网站 | 91亚洲狠狠婷婷综合久久久 | 日韩精品欧美专区 | 亚洲免费在线视频 | 久久不见久久见免费影院 | 免费日韩一区二区三区 | 中文永久免费观看 | 欧美性猛片| 日韩黄色一区 | 欧美极品在线播放 | 亚洲视频电影在线 | 久久成人精品 | 国产成人在线综合 | 国产精品久久久久久av | 日本黄区免费视频观看 | 天天夜夜亚洲 | 日韩高清无线码2023 | 免费网站在线观看成人 | 91精品少妇偷拍99 | 国产精品一区二区久久精品爱涩 | 久在线 | 黄色av一级| 黄色国产在线观看 | 91.精品高清在线观看 | 久久一区二区三区日韩 | 日b黄色片 | 免费又黄又爽的视频 | 日本巨乳在线 | 国产不卡在线 | 免费观看一级 | 久久免费看a级毛毛片 | 日韩一区二区三区高清免费看看 | 日韩精品第1页 | 国产福利免费在线观看 | 精品亚洲视频在线 | 黄色午夜网站 | 激情综合狠狠 | 国产精品女人网站 | 中文av在线播放 | 在线国产片 | 蜜桃av综合网 | 日韩一区在线播放 | 天天摸日日操 | 91麻豆精品国产 | 久久欧美精品 | 久久久久国产精品免费免费搜索 | 亚州成人av在线 | 日韩av电影免费在线观看 | 处女av在线 | 中文字幕文字幕一区二区 | 久草视频首页 | 日韩一区二区三区免费电影 | 99操视频| 中文字幕传媒 | 99热在线观看免费 | 日本不卡一区二区 | 成人在线播放av | 一区二区精品视频 | 精品国内自产拍在线观看视频 | 91视频在线 | 久久久91精品国产 | 欧美性大战 | 久热国产视频 | 国产原创91| 欧美日韩免费观看一区二区三区 | 亚洲精品五月 | 日黄网站 | 久久久久久久久国产 | 国产三级午夜理伦三级 | 99国产情侣在线播放 | 欧美一级片免费 | 黄色高清视频在线观看 | 国产美女视频一区 | 最近中文字幕国语免费av | 亚洲 中文字幕av | 久久久久综合 | 97超碰色 | 亚洲精品视频在线观看网站 | 狠狠干综合 | 婷婷综合 | 97国产在线| 国产中文字幕网 | 国产精品一码二码三码在线 | 成人在线观看免费视频 | 国产999视频 | 成人欧美一区二区三区黑人麻豆 | 亚洲精品视频在线免费播放 | 日本资源中文字幕在线 | 中国一级片在线 | 国产裸体bbb视频 | av专区在线| 亚洲精品国精品久久99热一 | 婷婷夜夜| 欧美91精品国产自产 | 亚洲国产精品视频 | 在线97| 久久国产精品99久久久久久老狼 | 久久亚洲福利视频 | 日韩视频在线一区 | 开心激情五月婷婷 | 狠狠色婷婷丁香六月 | 激情久久网 | 日韩电影一区二区三区 | 美女国产 | 国产自偷自拍 | 午夜色婷婷 | 日韩成人av在线 | 久久久久国产一区二区三区四区 | 欧美日韩精品在线观看视频 | 日韩成人欧美 | 一区二区视频欧美 | 久久精品国产亚洲精品2020 | 美女视频黄是免费的 | 中文字幕欧美日韩va免费视频 | 伊人五月天婷婷 | 456免费视频 | 欧美视频日韩视频 | 免费视频久久 | 精品视频免费 | 久草精品免费 | 色com网| 成人午夜电影网站 | 一区二区在线电影 | 午夜精品麻豆 | 在线看片一区 | 一区二区 精品 | 国产精品免费久久久 | 久草视频免费观 | 久久免费播放视频 | 五月激情久久久 | 国产精品久久99精品毛片三a | 午夜av一区二区三区 | 中文字幕在线乱 | 婷婷色网址 | 91亚洲在线 | 美女视频黄色免费 | 又粗又长又大又爽又黄少妇毛片 | 国产成人精品一区二区三区免费 | 日韩av电影中文字幕在线观看 | www色综合 | 日本性xxxxx 亚洲精品午夜久久久 | 免费观看黄色12片一级视频 | 91麻豆操| 国产黄在线播放 | 在线精品在线 | 亚洲永久精品在线 | 亚洲欧美日韩精品久久奇米一区 | 亚洲人成免费网站 | 久久久久久久毛片 | 久草网视频在线观看 | 免费看片网站91 | 超碰国产在线观看 | 色噜噜狠狠色综合中国 | 国产精品原创视频 | 贫乳av女优大全 | 最近能播放的中文字幕 | 日韩一区二区三免费高清在线观看 | a成人v在线| 成人黄色免费在线观看 | 久久成人亚洲欧美电影 | 久久久免费少妇 | 欧美老人xxxx18 | 五月婷婷中文网 | 新版资源中文在线观看 | 天天爱天天色 | 97成人精品视频在线观看 | 久久久精品国产免费观看同学 | 亚洲国产中文字幕 | 天堂视频中文在线 | 91在线超碰 | 一区二区三区免费 | 91精品视频免费看 | 中文字幕频道 | 四虎影视av | 欧美成人久久 | 综合在线亚洲 | 亚洲午夜久久久久 | 色成人亚洲网 | 99久久影院| 免费视频xnxx com | 91在线影视 | 国产在线观看污片 | 一区二区三区四区在线免费观看 | 亚洲1区 在线| 国产精品一区电影 | 夜夜看av| 99精品国产一区二区 | 国产美腿白丝袜足在线av | 黄色av一区| 亚洲一区二区精品视频 | 91九色视频在线观看 | 深爱激情av | 在线观看久久 | 九草在线观看 | 国产亚洲成av人片在线观看桃 | 黄色电影网站在线观看 | 国产精品久久久久毛片大屁完整版 | 婷婷色社区 | 亚洲成人黄色av | av免费在线免费观看 | 国产九九九视频 | 91在线观 | 久久综合久久久久88 | 91九色视频观看 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 人人躁 | 五月情婷婷 | 国产裸体永久免费视频网站 | 欧美日韩高清一区二区三区 | 国产+日韩欧美 | 日日干夜夜干 | 亚洲精品在线看 | 丁香六月婷婷开心 | 国产黄色片久久久 | 黄色小说18 | 日韩中文字幕免费 | 黄色特一级片 | 日韩在线观看中文字幕 | 久久免费国产精品1 | 亚洲国内精品在线 | 国产一级淫片在线观看 | 91av中文字幕 | 免费视频三区 | 亚洲经典视频在线观看 | 日韩xxxbbb| 日韩欧美99 | 久久久久久网址 | 国产小视频网站 | 色欧美成人精品a∨在线观看 | 日本精品在线视频 | 亚洲三级精品 | 在线黄色毛片 | 91精品一区二区在线观看 | 免费成视频 | 久久午夜国产精品 | 中文字幕首页 | 丁香九月婷婷综合 | 成人影视免费看 | 国产精品一区二区三区免费视频 | 伊人射| 狠狠狠狠狠狠操 | 亚洲精品网站 | 成人免费共享视频 | 毛片网站免费 | 国产精品久久久久永久免费观看 | 精品亚洲午夜久久久久91 | 久久精品视频在线免费观看 | 91看片成人 | 精品国产午夜 | 一区二区精品在线观看 | 日本在线免费看 | 国产九色视频在线观看 | 在线国产不卡 | 麻豆视频在线播放 | 久久黄页 | 日日干干夜夜 | 国产97视频 | 中文字幕永久在线 | 97在线播放视频 | 精品视频在线视频 | 国产又粗又猛又色 | 精品在线观看免费 | 97激情影院 | 亚洲免费视频在线观看 | 一区二区三区日韩视频在线观看 | 一区二区三区在线视频观看58 | 337p西西人体大胆瓣开下部 | 亚洲黄色免费在线看 | 狠狠成人 | 亚洲综合小说电影qvod | 亚洲欧洲精品久久 | 69久久久| 三级动图 | 一区二区不卡高清 | 粉嫩一区二区三区粉嫩91 | 国产日产在线观看 | 亚洲永久精品在线观看 | 欧美一级片 | 久草视频在线免费看 | 中文字幕 成人 | 手机av在线免费观看 | 久久国产精品一区二区三区四区 | 国产精品乱码久久久久久1区2区 | 亚洲人xxx | 日韩在线电影观看 | 午夜少妇 | 久久优| 国产精品免费久久久久久久久久中文 | 美女av免费 | 免费在线黄色av | 麻豆一精品传二传媒短视频 | 人成午夜视频 | www.夜夜草| 欧洲亚洲国产视频 | 国产高清成人 | 97人人添人澡人人爽超碰动图 | 在线网址你懂得 | 五月婷婷久久丁香 | www黄| 婷婷激情在线 | 中文在线a∨在线 | av综合网址| 97日日碰人人模人人澡分享吧 | 欧美日韩国产二区三区 | 午夜精选视频 | 99久久9| 五月激情久久久 | www激情网 | 日韩午夜网站 | 超碰97.com| 在线电影日韩 | 男女拍拍免费视频 | 亚洲国产成人精品久久 | 草久在线观看 | 国内外成人在线 | 成人免费在线观看av | 亚洲欧洲精品一区二区 | 久久久香蕉视频 | 91精品啪在线观看国产 | 五月婷婷av在线 | 在线 视频 一区二区 | 亚洲理论片在线观看 | 四虎视频 | 91精品黄色 | 丁香婷婷综合网 | 女人高潮一级片 | 色综合色综合色综合 | 国产精品一区二区三区视频免费 | 波多野结衣一区二区 | 久久久久久久久久亚洲精品 | 91网在线 | 午夜久久福利视频 | 婷婷av综合 | 免费观看的黄色片 | 中文字幕欧美激情 | 97色免费视频 | 欧美国产高清 | 国产在线不卡视频 | 国产中文字幕91 | 国产美女在线观看 | 久久蜜桃av | 日韩色在线 | 91在线观看高清 | 婷婷爱五月天 | 66av99精品福利视频在线 | 人人草在线视频 | 欧美日韩一区二区久久 | 色91在线 | 久久久久久国产精品免费 | 精品国产一区二区在线 | 精品一区二区av | 在线高清 | 91手机视频在线 | 欧美精品一区二区三区四区在线 | 免费99视频 | 成年人视频在线免费观看 | 97av色| 久久人视频 | 97超碰人人模人人人爽人人爱 | 经典三级一区 | 久久久18| 久久精品在线免费观看 | 天堂久久电影网 | 久久亚洲影视 | 国产精品人成电影在线观看 | 国产91精品一区二区麻豆网站 | 成年一级片| 最新不卡av | 天天色草| 欧美国产日韩在线视频 | 日韩午夜电影网 | 成人免费网视频 | 亚州av网站 | 麻豆国产精品永久免费视频 | 午夜精品中文字幕 | 91视频免费视频 | 在线久草视频 | 又黄又刺激视频 | 免费av网站观看 | 99免费在线视频观看 | 亚洲精品乱码久久久久久写真 | 成人午夜黄色影院 | 99精品在线播放 | av在线a| 人人爽人人 | 奇米影视777影音先锋 | 国产精品高| 视频一区视频二区在线观看 | 日韩成人在线免费观看 | 国产免费av一区二区三区 | 亚洲国产天堂av | 蜜臀av夜夜澡人人爽人人桃色 | 欧美aa在线 | 天天操欧美 | 日韩色爱| 国产视| 中国一 片免费观看 | 九九欧美| 欧美大片www | 亚洲日本中文字幕在线观看 | 波多野结衣一区二区三区中文字幕 | 国产一区二区三区网站 | 欧美成人黄色片 | 国产一区二区在线免费播放 | 国产亚洲aⅴaaaaaa毛片 | 激情五月婷婷丁香 | 欧美色黄 | 久久久免费观看 | 玖玖视频| 久久久免费观看视频 | 亚洲精品乱码久久久久久9色 | 日本成人免费在线观看 | 色成人亚洲 | 97视频免费 | 丰满少妇在线观看资源站 | 五月天国产精品 | 97成人超碰| 波多野结衣在线视频免费观看 | 欧美视频网址 | 日韩在线视频不卡 | 色婷婷激情四射 | 免费观看一级视频 | av大片免费在线观看 | 天堂入口网站 | 日本中文字幕在线观看 | 亚洲3级 | 不卡的av中文字幕 | 亚洲精品资源在线观看 | 日韩丝袜视频 | 日韩精品中文字幕一区二区 | 欧美日韩在线播放 | 伊人一级 | 狠狠躁夜夜a产精品视频 | 日韩高清在线观看 | 久久久久高清毛片一级 | 黄色av播放| 婷婷在线色 | 午夜在线看 | 欧美综合色 | 丁香综合五月 | 国产女人18毛片水真多18精品 | 亚洲成av人片在线观看香蕉 | avwww在线| 日韩欧美一区二区在线 | 免费91在线观看 | 国产麻豆传媒 | 亚洲视屏 | 毛片在线网 | www黄色| 日本三级大片 | 亚洲电影图片小说 | 成人h动漫精品一区二 | 日韩中文在线字幕 | 亚洲成av人片在线观看www | 婷婷色网视频在线播放 | 午夜精品一区二区三区在线视频 | 91av片| 国产成人99久久亚洲综合精品 | 国产精品久久久久久久久免费 | 中文字幕精品www乱入免费视频 | www操操操| 色婷婷亚洲精品 | 国产久视频| av成人动漫在线观看 | 中文字幕乱在线伦视频中文字幕乱码在线 | 狠狠色丁香久久婷婷综合五月 | 亚洲天堂首页 | 探花视频在线观看免费 | 亚洲午夜精品久久久久久久久久久久 | 国产一二三在线视频 | 丁香婷婷色月天 | 日日干夜夜草 | 国产成人精品女人久久久 | 国产一区二区精品91 | 国产一级电影网 | 成人黄色毛片视频 | 精品一区二区在线免费观看 | 成人avav| 黄色一区二区在线观看 | 91 在线视频 | 成人网在线免费视频 | 天天综合网在线观看 | 国产成人综合精品 | 亚洲精品1234区 | 国内精品久久久久国产 | 又黄又色又爽 | 久色网 | 欧美激情视频一区二区三区免费 | 在线观看视频免费大全 | 亚洲尺码电影av久久 | 亚洲区另类春色综合小说校园片 | 国产亚洲观看 | 国产日本亚洲高清 | 国产一级片免费观看 | 国产精品99久久久久久小说 | 久久综合综合久久综合 | 国产国产人免费人成免费视频 | 国产精品视频久久久 | a√天堂资源| 欧美日韩三区二区 | 成人在线黄色 | 午夜成人影视 | 欧美 日韩 性 | 日韩精品免费一区二区 | 久久久久久久免费观看 | 一区二区三区在线免费观看视频 | 久久综合9988久久爱 | 欧美与欧洲交xxxx免费观看 | 日韩精品一区二区三区丰满 | 6080yy精品一区二区三区 | 91在线亚洲 | 久久精品91视频 | 最新日本中文字幕 | 国产日韩欧美在线影视 | 国产精品高清在线 | 在线黄网站| 天天搞天天 | 婷婷99| 久久久精品免费观看 | 色丁香婷婷 | 精品国产乱码久久久久久浪潮 | 欧美伦理一区二区三区 | 国产 成人 久久 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 黄色在线看网站 | 国产黄色免费观看 | 久久av影院| 一级久久久 | 午夜天使 | av网站地址 | 天天天天综合 | 激情影院在线观看 | 97精产国品一二三产区在线 | 天天干夜夜想 | 亚洲精品中文字幕在线 | 成人中文字幕+乱码+中文字幕 | 六月色| 精品国产免费看 | 久久久久欧美精品 | 免费黄a大片 | 日韩精品视频在线观看网址 | 亚洲精品自在在线观看 | 午夜视频在线观看一区 | a√天堂中文在线 | 天天插天天干天天操 | 中文一区二区三区在线观看 | 综合久色| 91久色蝌蚪| 亚洲精品国偷自产在线99热 | 欧美在线1| 国产日韩精品在线观看 | 精品国产自在精品国产精野外直播 | 夜夜看av| 婷婷九月丁香 | 久久精品视频在线播放 | 婷婷久久综合九色综合 | 五月婷av| 色噜噜狠狠狠狠色综合 | 99超碰在线播放 | 欧美一区二区三区在线视频观看 | 国产成人久久久久 | 在线91色| 久久免费视频在线 | 国产色女人 | 五月天激情视频在线观看 | 亚洲成人麻豆 | 国产精品福利无圣光在线一区 | 日本护士三级少妇三级999 | 亚洲国产三级在线观看 | 亚洲视频免费视频 | 久草电影免费在线观看 | 操一草| 日韩免费在线观看视频 | 国产91精品久久久久 | 国产精品亚州 | 亚洲自拍自偷 | 黄色大片av | 国产精品99久久免费观看 | 国产一级二级在线观看 | 91麻豆文化传媒在线观看 | 久久久在线视频 | 久久久久精 | 久草网在线视频 | 国产一级特黄毛片在线毛片 | 手机av看片 | 操操操天天操 | 天天操夜夜拍 | 色网av | 激情综合网在线观看 | 日韩在线观看一区二区 | wwxxxx日本 | 超碰在线免费福利 | 亚洲综合色丁香婷婷六月图片 | 天天干天天拍 | 国产成人久久精品77777综合 | 黄色www| 国产99久久久精品视频 | 日本三级香港三级人妇99 | 久久久久久久久久久影视 | 久久夜色精品国产欧美一区麻豆 | 91九色蝌蚪在线 | 91成人网在线观看 | 国产精品视频在线观看 | 国内精品99 | 久久综合久久伊人 | 97看片网| 国产亚洲精品久久久久久久久久久久 | 久久久久久看片 | 伊人久久电影网 | 免费久久99精品国产婷婷六月 | 欧美午夜剧场 | 国产精品区免费视频 | 四虎成人免费影院 | 亚洲激情六月 | 97在线观看免费视频 | 欧美日韩免费在线观看视频 | 日韩在线观看视频网站 | 久久精选视频 | av+在线播放在线播放 | 成人动漫一区二区三区 | 韩国av一区二区 | 色午夜| 99精彩视频在线观看免费 | 亚洲天堂激情 | 欧美成人播放 | 午夜在线资源 | www国产一区 | 正在播放久久 | 中文字幕 国产 一区 | 国产精品99页 | 成人黄色毛片视频 | 免费国产亚洲视频 | 99久久影院| 日韩精品久久久久久久电影竹菊 | 国产五码一区 | 国产亚洲永久域名 | www久久com | 91九色视频网站 | 欧美大片aaa | 天天摸夜夜添 | 国产在线国偷精品产拍免费yy | 丁香五月缴情综合网 | 国产免费久久 | 男女激情片在线观看 | 亚洲 欧美 变态 国产 另类 | av导航福利 | 精品久久一| 黄色一级免费 | 亚洲激情在线播放 | 久久免费视频这里只有精品 | 国产视频一区在线播放 | 91精品国产一区二区三区 | 国产精品精品视频 | 91黄色在线观看 | 成人一级在线 | 国产不卡av在线播放 | 国产精品久久艹 | 美女搞黄国产视频网站 | 天天爽天天爽夜夜爽 | www.69xx| 欧美a级免费视频 | 国产无吗一区二区三区在线欢 | 操操综合网| 91av电影网 | 久久久精品久久 | 99视屏 | 这里只有精品视频在线观看 | 国产一级a毛片视频爆浆 | 免费色视频在线 | 欧美精品乱码久久久久久 | 人人盈棋牌| 久久精品综合视频 | 99看视频在线观看 | 免费涩涩网站 | 国产视频一区二区三区在线 | 久久亚洲私人国产精品va | 日韩欧三级| 麻花豆传媒mv在线观看 | 午夜精品影院 | 欧美专区亚洲专区 | 国产xvideos免费视频播放 | 99riav1国产精品视频 | 人人搞人人搞 | 欧美日韩免费一区二区 | 国产麻豆精品在线观看 | 中文字幕精品视频 | 久久国产亚洲视频 | 国产成人一区二区啪在线观看 | 国产午夜在线观看视频 | 久久综合久色欧美综合狠狠 | 91激情在线视频 | 久久激情影院 | 午夜视频在线瓜伦 | 成年人免费在线观看网站 | 五月天狠狠操 | 欧美性色综合 | 日韩免费一区二区三区 | 国产美女在线免费观看 | 日本午夜免费福利视频 | 欧美一区二区三区激情视频 | 国偷自产视频一区二区久 | 81精品国产乱码久久久久久 | 亚洲成av人片一区二区梦乃 | 色婷婷88av视频一二三区 | 很污的网站 | 国产又粗又猛又色 | 久热国产视频 | 国产尤物视频在线 | 免费毛片aaaaaa | 成人三级网站在线观看 | 天天干,狠狠干 | 九九精品视频在线 | 欧美三级在线播放 | 久久 精品一区 | 久久96国产精品久久99漫画 | 国产精品嫩草影视久久久 | 欧美一区二区三区免费观看 | 国偷自产中文字幕亚洲手机在线 | 91精品久久久久久综合五月天 | 草久在线 | av动图| 久久99久久99精品 | 亚洲成色777777在线观看影院 | 中文在线8资源库 | 色欧美88888久久久久久影院 | 视色网站| 玖玖精品在线 | 日韩在线二区 | 婷婷色综 | 亚一亚二国产专区 | 五月花婷婷 | 中文字幕亚洲高清 | 国产精品黄色av | 精品国产一区二区三区噜噜噜 | 97人人澡人人添人人爽超碰 | 久久色在线播放 | 国产成人一区二区在线观看 | 国偷自产中文字幕亚洲手机在线 | 天天综合色天天综合 | 日韩网站在线观看 | 久久99精品久久只有精品 | 96久久| 久久九九久久精品 | 日韩av高清在线观看 | 久久婷五月 | 久久精品电影 | 久久视频网址 | 欧美日韩高清一区二区 国产亚洲免费看 | 成人免费色 | 在线观看91久久久久久 | 天天天天色综合 | 三上悠亚一区二区在线观看 | a天堂最新版中文在线地址 久久99久久精品国产 | www久久99 | 国产精品网红直播 | 国产一区播放 | 日本激情动作片免费看 | 天天躁日日躁狠狠躁 | 九九久久国产精品 | 欧美另类xxxx | 456免费视频 | 亚洲伊人网在线观看 | 国产精品美女视频网站 | 国产原厂视频在线观看 | 91麻豆精品91久久久久同性 | 久久草网| 免费成人黄色 | 一性一交视频 | 久久国产电影 | 欧美成人影音 | 天天干天天碰 | 国产在线91在线电影 | 亚洲激情精品 | 五月婷婷在线视频观看 | 亚洲久草网 | 久久久久久久久久久电影 | 97福利社| av天天干 | 欧美日韩在线观看一区二区 | 超碰在线观看97 | 国产精品久久久久久久久久久久午夜 | 激情婷婷 | 在线亚洲人成电影网站色www | 久久久久免费电影 | 久久99精品国产麻豆宅宅 | 四虎国产精品免费观看视频优播 | 亚洲精品在线观看免费 | 成人网色 | 欧美a级成人淫片免费看 | 久久观看免费视频 | 国产色视频网站 | a黄色片| 久久久2o19精品 | 日本精品视频在线播放 | 在线观看视频在线 | 久草在线视频首页 | 亚洲成人国产精品 | 在线观看黄网站 | 国产免费又爽又刺激在线观看 | 日韩欧美有码在线 | 中文av在线免费观看 | 久久久免费毛片 | 99视频在线精品免费观看2 | 在线成人免费av | 香蕉影院在线观看 | 中文字幕黄色av | 日韩成人精品一区二区 | 888av| 日韩一级黄色av | 成人午夜精品福利免费 | 久久艹久久 | 久久97精品 | 精品久久一二三区 | 丁香婷婷在线观看 | 天天干天天拍天天操 | www日韩精品| 激情五月网站 | 亚洲日本在线视频观看 | 欧美日韩国产一区二区三区在线观看 | 国产精品久久二区 | 欧美国产日韩一区 | 中文字幕免费观看 | 丁香六月婷婷激情 | 99视频黄| 久久福利综合 | 国产精品美女久久久久久久久 | 中文字幕123区 | 在线视频app | 国产精品福利午夜在线观看 | 中文字幕在线一二 | 免费观看丰满少妇做爰 | 国产视频精品在线 | 超碰免费成人 | 又黄又爽免费视频 | 亚洲少妇影院 | 91在线视频 | 国产中文字幕网 | 亚洲成人一区 | 天天看天天干 | 一区二区三区在线看 | 国产91av视频在线观看 | 日本特黄特色aaa大片免费 | 亚洲国产视频在线 | 免费观看黄 | 99久热精品 | 色婷婷国产精品一区在线观看 | 在线观看日韩国产 | 激情视频一区二区 | 国产精品一区二区三区观看 | www.五月天婷婷 | 成人羞羞视频在线观看免费 | 久久久国产一区二区三区四区小说 | 在线影视 一区 二区 三区 | 在线国产日韩 | 国产aaa毛片 | 久久电影色 | 丁香花在线观看视频在线 | 天天插天天狠天天透 | 91免费高清 | 国产精品久久久久久久久久尿 | 久久久国产一区二区 | 亚洲一区二区三区在线看 | 亚洲三级影院 | 亚洲综合视频在线 | 中文字幕丝袜 | 中文在线a∨在线 | 最近中文字幕免费av | 亚洲激情网站免费观看 | 欧美日韩另类视频 | 国产v在线播放 | 最新影院 | 色九九影院| 久久avav | 国产99在线免费 | 日本激情中文字幕 | 91av蜜桃 | 成人看片 | 久久精品2 | av成人免费在线看 | 久操久 | 久久综合狠狠综合久久激情 | 99在线播放 | 91热精品| 91私密视频 | 成人av影视在线 | 91视频免费看片 | 808电影| www.xxx.性狂虐 | 嫩草av在线 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 深夜激情影院 | 久久综合综合久久综合 | 久草视频在线观 | 美女久久99| 国产破处精品 | 激情综合五月网 | 欧美成人一二区 | 日本精品视频在线观看 | 五月天免费网站 | 欧洲色吧| www..com黄色片 | 日韩久久激情 | 国产精品久久99 | 91麻豆免费视频 | 久久久久久久久久毛片 | 国产又粗又猛又爽 | 狠狠天天 | 色婷婷亚洲综合 |