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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

RNN-LSTM循环神经网络-03Tensorflow进阶实现

發布時間:2025/3/15 循环神经网络 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RNN-LSTM循环神经网络-03Tensorflow进阶实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 全部代碼:點擊這里查看
  • 關于Tensorflow實現一個簡單的二元序列的例子可以點擊這里查看
  • 關于RNN和LSTM的基礎可以查看這里
  • 這篇博客主要包含以下內容
    • 訓練一個RNN模型逐字符生成文本數據(最后的部分)
    • 使用Tensorflow的scan函數實現dynamic_rnn動態創建的效果
    • 使用multiple RNN創建多層的RNN
    • 實現Dropout和Layer Normalization的功能

一、模型說明和數據處理

1、模型說明

  • 我們要使用RNN學習一個語言模型(language model)去生成字符序列
  • githbub上有別人實現好的
    • Torch中的實現:https://github.com/karpathy/char-rnn
    • Tensorflow中的實現:https://github.com/sherjilozair/char-rnn-tensorflow
  • 接下來我們來看如何實現

    2、數據處理

  • 數據集使用莎士比亞的一段文集,點擊這里查看, 實際也可以使用別的
  • 大小寫字符視為不同的字符
  • 下載并讀取數據
12345678 '''下載數據并讀取數據'''file_url = 'https://raw.githubusercontent.com/jcjohnson/torch-rnn/master/data/tiny-shakespeare.txt'file_name = 'tinyshakespeare.txt'if not os.path.exists(file_name):urllib.request.urlretrieve(file_url, filename=file_name)with open(file_name, 'r') as f:raw_data = f.read()print("數據長度", len(raw_data))
  • 處理字符數據,轉換為數字

    • 使用set去重,得到所有的唯一字符
    • 然后一個字符對應一個數字(使用字典)
    • 然后遍歷原始數據,得到所有字符對應的數字
      12345678 '''處理字符數據,轉換為數字'''vocab = set(raw_data) # 使用set去重,這里就是去除重復的字母(大小寫是區分的)vocab_size = len(vocab) idx_to_vocab = dict(enumerate(vocab)) # 這里將set轉為了字典,每個字符對應了一個數字0,1,2,3..........(vocab_size-1)vocab_to_idx = dict(zip(idx_to_vocab.values(), idx_to_vocab.keys())) # 這里將字典的(key, value)轉換成(value, key)data = [vocab_to_idx[c] for c in raw_data] # 處理raw_data, 根據字符,得到對應的value,就是數字del raw_data
  • 生成batch數據

    • Tensorflow models給出的PTB模型:https://github.com/tensorflow/models/tree/master/tutorials/rnn/ptb
12345678910 '''超參數'''num_steps=200 # 學習的步數batch_size=32state_size=100 # cell的sizenum_classes = vocab_sizelearning_rate = 1e-4def gen_epochs(num_epochs, num_steps, batch_size):for i in range(num_epochs):yield reader.ptb_iterator_oldversion(data, batch_size, num_steps)
    • ptb_iterator函數實現:
      • 返回數據X,Y的shape=[batch_size, num_steps]
        1234567891011121314151617181920212223242526272829303132 def ptb_iterator_oldversion(raw_data, batch_size, num_steps):"""Iterate on the raw PTB data.This generates batch_size pointers into the raw PTB data, and allowsminibatch iteration along these pointers.Args:raw_data: one of the raw data outputs from ptb_raw_data.batch_size: int, the batch size.num_steps: int, the number of unrolls.Yields:Pairs of the batched data, each a matrix of shape [batch_size, num_steps].The second element of the tuple is the same data time-shifted to theright by one.Raises:ValueError: if batch_size or num_steps are too high."""raw_data = np.array(raw_data, dtype=np.int32) data_len = len(raw_data)batch_len = data_len // batch_sizedata = np.zeros([batch_size, batch_len], dtype=np.int32)for i in range(batch_size):data[i] = raw_data[batch_len * i:batch_len * (i + 1)] epoch_size = (batch_len - 1) // num_steps if epoch_size == 0:raise ValueError("epoch_size == 0, decrease batch_size or num_steps") for i in range(epoch_size):x = data[:, i*num_steps:(i+1)*num_steps]y = data[:, i*num_steps+1:(i+1)*num_steps+1]yield (x, y)

二、使用tf.scan函數和dynamic_rnn

1、為什么使用tf.scan和dynamic_rnn

  • 之前我們實現的第一個例子中沒有用dynamic_rnn的部分是將輸入的三維數據[batch_size,num_steps, state_size]按num_steps維度進行拆分,然后每計算一步都存到list列表中,如下圖

  • 這種構建方式很耗時,在我們例子中沒有體現出來,但是如果我們要學習的步數很大(num_steps,也可以說要學習的依賴關系很長),如果再使用深層的RNN,這種就不合適了
  • 為了方便比較和dynamic_rnn的運行耗時,下面還是給出使用list

    2、使用list的方式(static_rnn)

  • 構建計算圖

    • 我這里tensorflow的版本是1.2.0,與1.0?些許不一樣
    • 和之前的例子差不多,這里不再累述
      12345678910111213141516171819202122232425262728293031323334353637383940414243444546 '''使用list的方式'''def build_basic_rnn_graph_with_list(state_size = state_size,num_classes = num_classes,batch_size = batch_size,num_steps = num_steps,num_layers = 3,learning_rate = learning_rate):reset_graph()x = tf.placeholder(tf.int32, [batch_size, num_steps], name='x')y = tf.placeholder(tf.int32, [batch_size, num_steps], name='y')x_one_hot = tf.one_hot(x, num_classes) # (batch_size, num_steps, num_classes)'''這里按第二維拆開num_steps*(batch_size, num_classes)'''rnn_inputs = [tf.squeeze(i,squeeze_dims=[1]) for i in tf.split(x_one_hot, num_steps, 1)]cell = tf.nn.rnn_cell.BasicRNNCell(state_size)init_state = cell.zero_state(batch_size, tf.float32)'''使用static_rnn方式'''rnn_outputs, final_state = tf.contrib.rnn.static_rnn(cell=cell, inputs=rnn_inputs, initial_state=init_state)#rnn_outputs, final_state = tf.nn.rnn(cell, rnn_inputs, initial_state=init_state) # tensorflow 1.0的方式with tf.variable_scope('softmax'):W = tf.get_variable('W', [state_size, num_classes])b = tf.get_variable('b', [num_classes], initializer=tf.constant_initializer(0.0))logits = [tf.matmul(rnn_output, W) + b for rnn_output in rnn_outputs]y_as_list = [tf.squeeze(i, squeeze_dims=[1]) for i in tf.split(y, num_steps, 1)]#loss_weights = [tf.ones([batch_size]) for i in range(num_steps)]losses = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y_as_list, logits=logits)#losses = tf.nn.seq2seq.sequence_loss_by_example(logits, y_as_list, loss_weights) # tensorflow 1.0的方式total_loss = tf.reduce_mean(losses)train_step = tf.train.AdamOptimizer(learning_rate).minimize(total_loss)return dict(x = x,y = y,init_state = init_state,final_state = final_state,total_loss = total_loss,train_step = train_step)
  • 訓練神經網絡函數

    • 和之前例子類似
      123456789101112131415161718192021222324252627 '''訓練rnn網絡的函數'''def train_rnn(g, num_epochs, num_steps=num_steps, batch_size=batch_size, verbose=True, save=False):tf.set_random_seed(2345)with tf.Session() as sess:sess.run(tf.initialize_all_variables())training_losses = []for idx, epoch in enumerate(gen_epochs(num_epochs, num_steps, batch_size)):training_loss = 0steps = 0training_state = Nonefor X, Y in epoch:steps += 1feed_dict = {g['x']: X, g['y']: Y}if training_state is not None:feed_dict[g['init_state']] = training_statetraining_loss_, training_state, _ = sess.run([g['total_loss'],g['final_state'],g['train_step']],feed_dict=feed_dict)training_loss += training_loss_ if verbose:print('epoch: {0}的平均損失值:{1}'.format(idx, training_loss/steps))training_losses.append(training_loss/steps) if isinstance(save, str):g['saver'].save(sess, save)return training_losses
  • 調用執行:

    123456 start_time = time.time()g = build_basic_rnn_graph_with_list()print("構建圖耗時", time.time()-start_time)start_time = time.time()train_rnn(g, 3)print("訓練耗時:", time.time()-start_time)
  • 運行結果

    • 構建計算圖耗時:?113.43532419204712
    • 3個epoch運行耗時:
      1234 epoch: 0的平均損失值:3.6314958388777985epoch: 1的平均損失值:3.287133811534136epoch: 2的平均損失值:3.250853428895446訓練耗時: 84.2816972732544
  • 可以看出在構建圖的時候非常耗時,這里僅僅一層的cell

3、dynamic_rnn的使用

  • 之前在我們第一個例子中實際已經使用過了,這里使用MultiRNNCell實現多層cell,具體下面再講
  • 構建模型:
    • tf.nn.embedding_lookup(params, ids)函數是在params中查找ids的表示, 和在matrix中用array索引類似, 這里是在二維embeddings中找二維的ids,?ids每一行中的一個數對應embeddings中的一行,所以最后是[batch_size, num_steps, state_size],關于具體的輸出可以查看這里
    • 這里我認為就是某個字母的表示,之前上面我們的statci_rnn就是one-hot來表示的
12345678910111213141516171819202122232425262728293031323334353637383940414243 '''使用dynamic_rnn方式- 之前我們自己實現的cell和static_rnn的例子都是將得到的tensor使用list存起來,這種方式構建計算圖時很慢- dynamic可以在運行時構建計算圖'''def build_multilayer_lstm_graph_with_dynamic_rnn(state_size = state_size,num_classes = num_classes,batch_size = batch_size,num_steps = num_steps,num_layers = 3,learning_rate = learning_rate):reset_graph()x = tf.placeholder(tf.int32, [batch_size, num_steps], name='x')y = tf.placeholder(tf.int32, [batch_size, num_steps], name='y')embeddings = tf.get_variable(name='embedding_matrix', shape=[num_classes, state_size])'''這里的輸入是三維的[batch_size, num_steps, state_size]- embedding_lookup(params, ids)函數是在params中查找ids的表示, 和在matrix中用array索引類似,這里是在二維embeddings中找二維的ids, ids每一行中的一個數對應embeddings中的一行,所以最后是[batch_size, num_steps, state_size]'''rnn_inputs = tf.nn.embedding_lookup(params=embeddings, ids=x)cell = tf.nn.rnn_cell.LSTMCell(num_units=state_size, state_is_tuple=True)cell = tf.nn.rnn_cell.MultiRNNCell(cells=[cell]*num_layers, state_is_tuple=True)init_state = cell.zero_state(batch_size, dtype=tf.float32)'''使用dynamic_rnn方式'''rnn_outputs, final_state = tf.nn.dynamic_rnn(cell=cell, inputs=rnn_inputs, initial_state=init_state) with tf.variable_scope('softmax'):W = tf.get_variable('W', [state_size, num_classes])b = tf.get_variable('b', [num_classes], initializer=tf.constant_initializer(0.0)) rnn_outputs = tf.reshape(rnn_outputs, [-1, state_size]) # 轉成二維的矩陣y_reshape = tf.reshape(y, [-1])logits = tf.matmul(rnn_outputs, W) + b # 進行矩陣運算total_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y_reshape))train_step = tf.train.AdamOptimizer(learning_rate).minimize(total_loss) return dict(x = x,y = y,init_state = init_state,final_state = final_state,total_loss = total_loss,train_step = train_step)
  • 調用執行即可
123456 start_time = time.time()g = build_multilayer_lstm_graph_with_dynamic_rnn()print("構建圖耗時", time.time()-start_time)start_time = time.time()train_rnn(g, 3)print("訓練耗時:", time.time()-start_time)
  • 運行結果(注意這是3層的LSTM):
    • 構建計算圖耗時?7.616888523101807,相比第一種static_rnn很快
    • 訓練耗時(這是3層的LSTM,所以還是挺慢的):
      1234 epoch: 0的平均損失值:3.604653576324726epoch: 1的平均損失值:3.3202743626188957epoch: 2的平均損失值:3.3155322650383257訓練耗時: 303.5468375682831

4、tf.scan實現的方式

  • 如果你不了解tf.scan,建議看下官方API, 還是有點復雜的。
    • 或者Youtube上有個介紹,點擊這里查看
  • scan是個高階函數,一般的計算方式是:給定一個序列[x0,x1,..,xn]初試狀態y?1,根據yt=f(xt,yt?1)?計算得到最終序列[y0,y1,,yn]
  • 構建計算圖
    • tf.transpose(rnn_inputs, [1,0,2])?是將rnn_inputs的第一個和第二個維度調換,即變成[num_steps,batch_size, state_size], 在dynamic_rnn函數有個time_major參數,就是指定num_steps是否在第一個維度上,默認是false的,即不在第一維
    • tf.scan會將elems按照第一維拆開,所以一次就是一個step的數據(和我們static_rnn的例子類似)
    • 參數a的結構和initializer的結構一致,所以a[1]就是對應的state,cell需要傳入x和state計算
    • 每次迭代cell返回的是一個rnn_output, shape=(batch_size,state_size)和對應的state,num_steps之后的rnn_outputs的shape就是(num_steps, batch_size, state_size)?,state同理
    • 每次輸入的x都會得到的state-->(final_states),我們只要的最后的final_state
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 '''使用scan實現dynamic_rnn的效果'''def build_multilayer_lstm_graph_with_scan(state_size = state_size,num_classes = num_classes,batch_size = batch_size,num_steps = num_steps,num_layers = 3,learning_rate = learning_rate):reset_graph()x = tf.placeholder(tf.int32, [batch_size, num_steps], name='x')y = tf.placeholder(tf.int32, [batch_size, num_steps], name='y')embeddings = tf.get_variable(name='embedding_matrix', shape=[num_classes, state_size])'''這里的輸入是三維的[batch_size, num_steps, state_size]'''rnn_inputs = tf.nn.embedding_lookup(params=embeddings, ids=x)'''構建多層的cell, 先構建一個cell, 然后使用MultiRNNCell函數構建即可'''cell = tf.nn.rnn_cell.LSTMCell(num_units=state_size, state_is_tuple=True)cell = tf.nn.rnn_cell.MultiRNNCell(cells=[cell]*num_layers, state_is_tuple=True) init_state = cell.zero_state(batch_size, dtype=tf.float32)'''使用tf.scan方式- tf.transpose(rnn_inputs, [1,0,2]) 是將rnn_inputs的第一個和第二個維度調換,即[num_steps,batch_size, state_size],在dynamic_rnn函數有個time_major參數,就是指定num_steps是否在第一個維度上,默認是false的,即不在第一維- tf.scan會將elems按照第一維拆開,所以一次就是一個step的數據(和我們static_rnn的例子類似)- a的結構和initializer的結構一致,所以a[1]就是對應的state,cell需要傳入x和state計算- 每次迭代cell返回的是一個rnn_output(batch_size,state_size)和對應的state,num_steps之后的rnn_outputs的shape就是(num_steps, batch_size, state_size)- 每次輸入的x都會得到的state(final_states),我們只要的最后的final_state'''def testfn(a, x):return cell(x, a[1])rnn_outputs, final_states = tf.scan(fn=testfn, elems=tf.transpose(rnn_inputs, [1,0,2]),initializer=(tf.zeros([batch_size,state_size]),init_state))'''或者使用lambda的方式'''#rnn_outputs, final_states = tf.scan(lambda a,x: cell(x, a[1]), tf.transpose(rnn_inputs, [1,0,2]),#initializer=(tf.zeros([batch_size, state_size]),init_state))final_state = tuple([tf.nn.rnn_cell.LSTMStateTuple(tf.squeeze(tf.slice(c, [num_steps-1,0,0], [1,batch_size,state_size])),tf.squeeze(tf.slice(h, [num_steps-1,0,0], [1,batch_size,state_size]))) for c, h in final_states])with tf.variable_scope('softmax'):W = tf.get_variable('W', [state_size, num_classes])b = tf.get_variable('b', [num_classes], initializer=tf.constant_initializer(0.0)) rnn_outputs = tf.reshape(rnn_outputs, [-1, state_size])y_reshape = tf.reshape(y, [-1])logits = tf.matmul(rnn_outputs, W) + btotal_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y_reshape))train_step = tf.train.AdamOptimizer(learning_rate).minimize(total_loss) return dict(x = x,y = y,init_state = init_state,final_state = final_state,total_loss = total_loss,train_step = train_step)
  • 運行結果
    • 構建計算圖耗時:?8.685610055923462?(比dynamic_rnn稍微慢一點)
    • 訓練耗時(和dynamic_rnn耗時差不多)
  • 使用scan的方式只比dynamic_rnn慢一點點,但是對我們來說更加靈活和清楚執行的過程。也方便我們修改代碼(比如從state的t-2時刻跳過一個時刻直接到t)
1234 epoch: 0的平均損失值:3.6226147892831384epoch: 1的平均損失值:3.3211338095281318epoch: 2的平均損失值:3.3158331972429123訓練耗時: 303.2535448074341

三、關于多層RNN

1、結構

  • LSTM中包含兩個state,一個是c記憶單元(memory cell),另外一個是h隱藏狀態(hidden state), 在Tensorflow中是以tuple元組的形式,所以才有上面構建dynamic_rnn時的參數state_is_tuple的參數,這種方式執行更快
  • 多層的結構如下圖
  • 我們可以將其包裝起來, 看起來像一個cell一樣

2、代碼

  • Tensorflow中的實現就是使用tf.nn.rnn_cell.MultiRNNCell
    • 聲明一個cell
    • MultiRNNCell中傳入[cell]*num_layers就可以了
    • 注意如果是LSTM,定義參數state_is_tuple=True
      123 cell = tf.nn.rnn_cell.LSTMCell(num_units=state_size, state_is_tuple=True)cell = tf.nn.rnn_cell.MultiRNNCell(cells=[cell]*num_layers, state_is_tuple=True)init_state = cell.zero_state(batch_size, dtype=tf.float32)

四、Dropout操作

  • 應用在一層cell的輸入和輸出不應用在循環的部分

1、一層的cell

  • static_rnn中實現
    • 聲明placeholder:keep_prob = tf.placeholder(tf.float32, name='keep_prob')
    • 輸入:rnn_inputs = [tf.nn.dropout(rnn_input, keep_prob) for rnn_input in rnn_inputs]
    • 輸出:rnn_outputs = [tf.nn.dropout(rnn_output, keep_prob) for rnn_output in rnn_outputs]
    • feed_dict中加入即可:feed_dict = {g['x']: X, g['y']: Y, g['keep_prob']: keep_prob}
  • dynamic_rnn或者scan中實現
    • 直接添加即可,其余類似:rnn_inputs = tf.nn.dropout(rnn_inputed, keep_prob)

2、多層cell

  • 我們之前說使用MultiRNNCell將多層cell看作一個cell, 那么怎么實現對每層cell使用dropout呢
  • 可以使用tf.nn.rnn_cell.DropoutWrapper來實現
  • 方式一:cell = tf.nn.rnn_cell.DropoutWrapper(cell, input_keep_prob=input_keep_prob, output_keep_prob=output_drop_prob)
    • 如果同時使用了input_keep_prob和output_keep_prob都是0.9, 那么層之間的drop_out=0.9*0.9=0.81
  • 方式二: 對于basic cell只使用一個input_keep_prob或者output_keep_prob,對MultiRNNCell也使用一個input_keep_prob或者output_keep_prob
1234 cell = tf.nn.rnn_cell.LSTMCell(num_units=state_size, state_is_tuple=True)cell = tf.nn.rnn_cell.DropoutWrapper(cell, input_keep_prob=keep_prob)cell = tf.nn.rnn_cell.MultiRNNCell(cells=[cell]*num_layers, state_is_tuple=True)cell = tf.nn.rnn_cell.DropoutWrapper(cell,output_keep_prob=keep_prob)

五、層標準化 (Layer Normalization)

1、說明

  • Layer Normalization是受Batch Normalization的啟發而來,針對于RNN,可以查看相關論文
  • Batch Normalization主要針對于傳統的深度神經網絡CNN,關于Batch Normalization的操作和推導可以看我之前的博客
  • 可以加快訓練的速度,得到更好的結果等

2、代碼

  • 找到LSTMCell的源碼拷貝一份修改即可
  • layer normalization函數

    • 傳入的tensor是二維的,對其進行batch normalization操作
    • tf.nn.moment是計算tensor的mean value和variance value
    • 然后對其進行縮放(scale)和平移(shift)
      123456789101112131415 '''layer normalization'''def ln(tensor, scope=None, epsilon=1e-5):assert(len(tensor.get_shape()) == 2)m, v = tf.nn.moments(tensor, [1], keep_dims=True)if not isinstance(scope, str):scope = ''with tf.variable_scope(scope+'layer_norm'):scale = tf.get_variable(name='scale', shape=[tensor.get_shape()[1]], initializer=tf.constant_initializer(1))shift = tf.get_variable('shift',[tensor.get_shape()[1]],initializer=tf.constant_initializer(0))LN_initial = (tensor - m) / tf.sqrt(v + epsilon)return LN_initial*scale + shift
  • LSTMCell中的call方法i,j,f,o調用layer normalization操作

    • _linear函數中的bias設為False, 因為BN會加上shift
      123456789 '''這里bias設置為false, 因為bn會加上shift'''lstm_matrix = _linear([inputs, m_prev], 4 * self._num_units, bias=False)i, j, f, o = array_ops.split(value=lstm_matrix, num_or_size_splits=4, axis=1)'''執行ln'''i = ln(i, scope = 'i/')j = ln(j, scope = 'j/')f = ln(f, scope = 'f/')o = ln(o, scope = 'o/')
  • 構建計算圖

    • 可以選擇RNN GRU LSTM
    • Dropout
    • Layer Normalization
      123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 '''最終的整合模型,- 普通RNN,GRU,LSTM- dropout- BN'''from LayerNormalizedLSTMCell import LayerNormalizedLSTMCell # 導入layer normalization的LSTMCell 文件def build_final_graph(cell_type = None,state_size = state_size,num_classes = num_classes,batch_size = batch_size,num_steps = num_steps,num_layers = 3,build_with_dropout = False,learning_rate = learning_rate): reset_graph()x = tf.placeholder(tf.int32, [batch_size, num_steps], name='x')y = tf.placeholder(tf.int32, [batch_size, num_steps], name='y')keep_prob = tf.placeholder(tf.float32, name='keep_prob')embeddings = tf.get_variable('embedding_matrix', [num_classes, state_size])rnn_inputs = tf.nn.embedding_lookup(embeddings, x)if cell_type == 'GRU':cell = tf.nn.rnn_cell.GRUCell(state_size)elif cell_type == 'LSTM':cell = tf.nn.rnn_cell.LSTMCell(state_size, state_is_tuple=True)elif cell_type == 'LN_LSTM':cell = LayerNormalizedLSTMCell(state_size) # 自己修改的代碼,導入對應的文件else:cell = tf.nn.rnn_cell.BasicRNNCell(state_size)if build_with_dropout:cell = tf.nn.rnn_cell.DropoutWrapper(cell, input_keep_prob=keep_prob) init_state = cell.zero_state(batch_size, tf.float32)'''dynamic_rnn'''rnn_outputs, final_state = tf.nn.dynamic_rnn(cell, rnn_inputs, initial_state=init_state)with tf.variable_scope('softmax'):W = tf.get_variable('W', [state_size, num_classes])b = tf.get_variable('b', [num_classes], initializer=tf.constant_initializer(0.0))rnn_outputs = tf.reshape(rnn_outputs, [-1, state_size])y_reshaped = tf.reshape(y, [-1])logits = tf.matmul(rnn_outputs, W) + bpredictions = tf.nn.softmax(logits)total_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y_reshaped))train_step = tf.train.AdamOptimizer(learning_rate).minimize(total_loss)return dict(x = x,y = y,keep_prob = keep_prob,init_state = init_state,final_state = final_state,total_loss = total_loss,train_step = train_step,preds = predictions,saver = tf.train.Saver())

六、生成文本

1、說明

  • 訓練完成之后將計算圖保存到本地磁盤,下次直接讀取就可以了
  • 我們給出第一個字符,RNN接著一個個生成字符,每次都是根據前一個字符
    • 所以num_steps=1,?batch_size=1(可以想象生成prediction的shape是(1, num_classes)中選擇一個概率,–>?num_steps=1?)

2、代碼

  • 構建圖(直接傳入參數即可):g = build_final_graph(cell_type='LN_LSTM', num_steps=1, batch_size=1)
  • 生成文本

    • 讀取訓練好的文件
    • 得到給出的第一個字符對應的數字
    • 循環遍歷要生成多少個字符, 每次循環生成一個字符
      123456789101112131415161718192021222324252627 '''生成文本'''def generate_characters(g, checkpoint, num_chars, prompt='A', pick_top_chars=None):with tf.Session() as sess:sess.run(tf.global_variables_initializer())g['saver'].restore(sess, checkpoint) # 讀取文件state = Nonecurrent_char = vocab_to_idx[prompt] # 得到給出的字母對應的數字chars = [current_char] for i in range(num_chars): # 總共生成多少數字if state is not None: # 第一次state為None,因為計算圖中定義了剛開始為0feed_dict={g['x']: [[current_char]], g['init_state']: state} # 傳入當前字符else:feed_dict={g['x']: [[current_char]]}preds, state = sess.run([g['preds'],g['final_state']], feed_dict) # 得到預測結果(概率)preds的shape就是(1,num_classes)if pick_top_chars is not None: # 如果設置了概率較大的前多少個p = np.squeeze(preds)p[np.argsort(p)[:-pick_top_chars]] = 0 # 其余的置為0p = p / np.sum(p) # 因為下面np.random.choice函數p的概率和要求是1,處理一下current_char = np.random.choice(vocab_size, 1, p=p)[0] # 根據概率選擇一個else:current_char = np.random.choice(vocab_size, 1, p=np.squeeze(preds))[0]chars.append(current_char)chars = map(lambda x: idx_to_vocab[x], chars)result = "".join(chars)print(result)return result
  • 結果

    • 由于訓練耗時很長,這里使用LSTM訓練了30個epoch,結果如下
    • 可以自己調整參數,可能會得到更好的結果
      123456789101112131415161718192021222324252627282930313233 ANKO: HFOFMFRone s the statlighte thithe thit.BODEN --I I's a tomir.I'tshis and on ar tald the theand this he sile be cares hat s ond tho fo hour he singe sime shind and somante tat ond treang tatsing of the an the to to fook.. Ir ard the with ane she stale..ANTE --KINEShow the ard and a beat the weringe be thing or.Bo hith tho he melan to the mute steres.The singer stis ard stis.BACE CANKONS CORESard the sids ing tho the the sackes tom theINWe stoe shit a dome thorate seomser hith.Thatthow oundTANTONT. SEAT THONTITE SERTI 1 23SHe the mathe a tomonerind is ingit ofres treacentit. Sher stard on this the tor an the candin he whor he sath heres andstha dortour tit thas stand. I'd and or a
  • #2017/06/25?運行結果更新

    • 更換了一個大點的數據集,點擊查看,使用了layer normalized的LSTM模型
    • 參數設置:
      • num_steps=80
      • batch_size=50
      • state_size=512
      • num_classes = vocab_size
      • learning_rate = 5e-4
      • 30個epochs
    • 在實驗室電腦跑了一晚上,結果是不是好一點了
      1234567891011121314151617181920212223242526272829303132333435 AKTIN: Yousa hand it have to turn you, sir.I have. I've got to here hard on myplay as a space state, and why hehappened. What we alwaws whothis?JOCASTAND :PADM You, sir!A battle. An arm of the ship is still.THE WINDEN'S CORUSHan's laser guns at the forest fire. The crowd spots his blackfolkwark and sees the bedroom and twists and sees Leiawho is shaking. A huge creature has a long time,hold her hand and his timmed, that we see the saulyand. Thecrowd ruised by the staircase.EXT. MAZ' CASTLE RUINS - DAYRey and Wicket and CAMERA is heard. Here as so they helfthis tonight, he spins and sit in a startled bright.LUKE(into propecy)The defenstity! Thank you.LUKEI'm afraid to have a lossing live,or help. We're

Reference

  • https://r2rt.com/recurrent-neural-networks-in-tensorflow-ii.html
  • https://karpathy.github.io/2015/05/21/rnn-effectiveness/
  • http://jmlr.org/proceedings/papers/v37/ioffe15.pdf
  • tensorflow scan:
    • https://www.tensorflow.org/api_docs/python/tf/scan

    • https://www.youtube.com/watch?v=A6qJMB3stE4&t=621s

  • 原文地址:?http://lawlite.me/2017/06/21/RNN-LSTM%E5%BE%AA%E7%8E%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C-03Tensorflow%E8%BF%9B%E9%98%B6%E5%AE%9E%E7%8E%B0/

總結

以上是生活随笔為你收集整理的RNN-LSTM循环神经网络-03Tensorflow进阶实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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

亚洲小视频在线 | 国产福利免费在线观看 | 亚洲视频大全 | 久久艹国产视频 | 91成熟丰满女人少妇 | 91av亚洲| 黄色在线免费观看网址 | 91丨九色丨国产丨porny精品 | zzijzzij日本成熟少妇 | 婷婷av综合 | 欧美一级日韩三级 | 免费看网站在线 | 国产成人黄色在线 | 成人h在线播放 | a在线观看视频 | 99精品国产一区二区三区不卡 | 久久不见久久见免费影院 | 国产做爰视频 | 综合网天天射 | 91成人蝌蚪 | 激情丁香 | 午夜在线免费观看视频 | 久久久久久久网站 | 国产伦理久久 | 在线观看国产麻豆 | 白丝av在线| 四虎影视精品 | 最新中文字幕视频 | 色a在线观看 | 天天透天天插 | 久久九九影院 | 麻花豆传媒mv在线观看网站 | 手机av片| 99在线高清视频在线播放 | 激情av在线播放 | 日韩高清成人 | 精品国产乱码久久 | av三级在线免费观看 | 在线免费中文字幕 | 欧美激情va永久在线播放 | 99精品国产免费久久久久久下载 | 中国一级片视频 | 亚洲精品视频中文字幕 | 久久99电影 | 国产97色在线 | 激情久久综合 | 欧美国产不卡 | 午夜神马福利 | 日韩av影视在线 | 国产一级特黄毛片在线毛片 | 99热官网 | 久久av高清| 国产精品乱码高清在线看 | 久久av影视 | 99精品网站 | 热九九精品 | 国产精品成人aaaaa网站 | 久久精品成人 | 久久99操 | 国产一级特黄毛片在线毛片 | 伊人成人久久 | 97在线视 | 国产一区免费 | av免费试看 | 免费观看一级特黄欧美大片 | 久久成人国产精品 | 欧美日本啪啪无遮挡网站 | 黄色免费网站 | 色婷婷综合久色 | 久久久精品成人 | 欧美怡红院 | 国产夫妻自拍av | 四虎影视欧美 | 国产日产精品一区二区三区四区的观看方式 | 日韩av一区二区在线播放 | 国产麻豆精品免费视频 | 2022国产精品视频 | 日日干天天插 | 91尤物在线播放 | 在线观看视频一区二区三区 | 欧美日韩亚洲在线观看 | 韩日av在线 | 成人免费电影 | 久久五月网 | 三级视频国产 | 国产精品久久久久影视 | 国产精品资源在线 | 国产精品久久久久久久久久久免费看 | 免费看色网站 | 99色在线播放| 日韩二区三区在线 | 青青色影院 | 国产永久免费高清在线观看视频 | 久艹视频在线观看 | 国产91全国探花系列在线播放 | 久久久影片 | 国产在线理论片 | 婷婷五天天在线视频 | 日韩成人在线一区二区 | 亚洲精品电影在线 | 久久久久五月 | 久久久免费看 | 日韩av在线看 | 五月激情综合婷婷 | 超碰免费成人 | 天堂资源在线观看视频 | 欧美a级一区二区 | 曰韩在线| 国产精品你懂的在线观看 | 久久久久久亚洲精品 | 精品爱爱 | 日韩三级视频在线看 | 伊人伊成久久人综合网站 | 五月婷婷精品 | 五月天激情婷婷 | 日韩精品免费专区 | 国产精品美女久久久网av | 国产一区二区手机在线观看 | 欧美大片www| 韩国在线一区二区 | 亚洲日韩精品欧美一区二区 | 天天干天天操天天干 | 午夜av在线免费 | 亚洲精品xx | 日韩视频欧美视频 | 91在线文字幕 | 色婷婷六月天 | 午夜影视一区 | 看黄色.com| 国产精品丝袜 | 欧洲黄色片 | av中文字幕在线观看网站 | 免费观看性生交大片3 | 五月激情丁香 | 91视频在线播放视频 | 欧美性色综合 | 免费99精品国产自在在线 | 亚洲无吗av | 天天舔夜夜操 | 黄色片毛片 | 九九99靖品 | 中文av在线播放 | 久久久久免费精品国产小说色大师 | 久久婷亚洲五月一区天天躁 | 国产美女无遮挡永久免费 | 九九热视频在线 | 91亚洲精品乱码久久久久久蜜桃 | 国产一区在线不卡 | 国产精品成人一区二区三区吃奶 | 日韩精品专区在线影院重磅 | 激情视频免费在线 | 国产又粗又猛又黄 | 日韩精品一区二区三区电影 | 国产精品第十页 | 亚洲国产午夜视频 | 精品主播网红福利资源观看 | 欧美一级免费 | 免费在线成人av | 国产精品久久久久国产精品日日 | 91精选在线观看 | 欧美激情精品久久 | 九九热.com | 亚洲国产日韩欧美 | 麻豆精品国产传媒 | 四虎永久免费在线观看 | 成人欧美在线 | 综合久久综合久久 | 激情综合五月婷婷 | 97人人模人人爽人人喊中文字 | 国产日韩欧美视频在线观看 | 欧美91精品国产自产 | 99 精品 在线 | 欧美人交a欧美精品 | 天天射天天操天天色 | 日日射av| 91在线观看黄 | 日韩精品免费一线在线观看 | 一区二区三区日韩在线观看 | 97精品视频在线 | 天天在线免费视频 | 国产在线观看91 | 99色国产 | 91精品在线观看视频 | 亚洲资源在线 | 国产伦精品一区二区三区在线 | 欧美一区二区精品在线 | 一区二区不卡在线观看 | 黄色avwww| 97夜夜澡人人双人人人喊 | 一级片免费视频 | 欧美性生交大片免网 | 狠狠久久伊人 | 国产成本人视频在线观看 | 91精品国产综合久久婷婷香蕉 | 伊人色**天天综合婷婷 | 手机看片福利 | 日韩一二三区不卡 | 日韩av成人在线观看 | 久草视频在线免费看 | 中文字幕中文 | 亚洲久久视频 | 亚洲成年片 | 成人丁香花 | 亚洲网站在线看 | 亚洲国产中文字幕在线观看 | 亚洲电影在线看 | 97精品国产91久久久久久 | 中文字幕专区高清在线观看 | 国产精久久久久久久 | 黄色一级动作片 | 亚洲精品一区中文字幕乱码 | 高清久久久 | 人人揉人人揉人人揉人人揉97 | 日韩有码中文字幕在线 | 91精品国产乱码在线观看 | 欧美日韩久久 | 九九热免费在线观看 | 国产91精品欧美 | 久久精选 | aav在线| 狠狠狠色丁香婷婷综合久久88 | 色婷婷在线视频 | 探花视频网站 | 999久久国精品免费观看网站 | 伊人国产女 | 福利视频午夜 | 国产色视频一区 | 永久免费看av | 免费成人黄色av | 友田真希av | 国产一区二区在线免费播放 | 91精品婷婷国产综合久久蝌蚪 | 国产一区二区精 | 521色香蕉网站在线观看 | 色婷婷国产| 中文字幕亚洲欧美日韩2019 | 亚洲资源在线观看 | 国产一区二区精品 | 久久精品99国产精品酒店日本 | 欧美ⅹxxxxxx | www.久久视频 | 日韩在线视频观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 婷婷国产视频 | 成人免费91| 国产va饥渴难耐女保洁员在线观看 | 国产精品久久久久久999 | 丝袜av网站 | 日韩久久久久久久久 | 97超碰超碰久久福利超碰 | 99九九热只有国产精品 | 美女视频黄在线观看 | 精品国产伦一区二区三区观看说明 | 亚洲天堂社区 | 丁香六月在线观看 | 亚洲激情在线 | 色多多在线观看 | 日本论理电影 | 丁香六月在线观看 | 国产在线国偷精品产拍免费yy | 精品久久久免费视频 | 国产精品成人久久久 | 国产精品 日本 | 黄色av网站在线免费观看 | 亚洲乱码国产乱码精品天美传媒 | 在线免费av网| 欧美日韩激情视频8区 | 国产第一页在线观看 | 国产成人精品日本亚洲999 | av在线播放中文字幕 | 综合网伊人 | 亚洲va综合va国产va中文 | 日韩天天操 | 一区在线免费观看 | 国产 视频 高清 免费 | 日本久久久影视 | 国产专区日韩专区 | 丁香婷婷综合激情五月色 | 成人久久毛片 | 九九交易行官网 | 国产精品久久亚洲 | 久久8精品 | 日韩欧美高清不卡 | 国产亚洲成人网 | 日韩精品一区二区三区视频播放 | 日韩a在线看 | 91麻豆精品国产午夜天堂 | 国产精品久久久 | 91最新视频在线观看 | 亚洲aⅴ免费在线观看 | 久久艹中文字幕 | 久久久国产精华液 | 色五丁香 | 亚洲成人精品在线 | 91精品国自产在线观看 | 婷婷丁香花五月天 | 蜜臀av性久久久久av蜜臀三区 | 国产精品9999久久久久仙踪林 | 精品9999 | 久久久91精品国产一区二区精品 | 日本特黄一级 | 在线成人欧美 | av超碰免费在线 | 天干啦夜天干天干在线线 | 国产亚洲在| 亚洲一一在线 | 国产精品久久久久久久久久免费看 | 国产黄大片在线观看 | 亚洲国产日韩精品 | 色婷婷激情五月 | 91在线免费观看国产 | 亚洲激情一区二区三区 | 又黄又爽的视频在线观看网站 | 欧美精品一区二区三区一线天视频 | 麻花天美星空视频 | 久插视频| 人人视频网站 | 色九九影院 | 国产1区在线观看 | 国产成人区 | 五月情婷婷 | 国产精品成人av在线 | 香蕉在线视频观看 | 欧美成a人片在线观看久 | 久久久午夜影院 | 日韩免费观看一区二区 | 久久精品免费 | 日韩mv欧美mv国产精品 | 中文在线免费观看 | 日韩视频1 | av+在线播放在线播放 | 一区在线观看 | 日韩爱爱网站 | 在线观看深夜福利 | 丁香花在线观看视频在线 | 国内免费久久久久久久久久久 | 亚州精品天堂中文字幕 | 99久久国产免费,99久久国产免费大片 | 中文字幕成人在线 | 亚洲女人天堂成人av在线 | 国产亚洲精品久久久久久移动网络 | 99视屏| 很污的网站 | 91精品999 | 蜜臀一区二区三区精品免费视频 | 日韩视频在线观看视频 | 日韩3区 | 伊人亚洲综合 | 黄色资源网站 | 涩涩网站在线播放 | 欧美在线99 | 手机看片福利 | 四虎www | 91麻豆精品一区二区三区 | 亚洲天堂网在线视频 | 91色在线观看 | 国产精品视频免费 | 国产一区高清在线观看 | 日韩高清一 | 亚洲综合一区二区精品导航 | av成人黄色| 亚洲精品视频在线观看视频 | 91最新中文字幕 | 2019中文在线观看 | 中文字幕亚洲精品在线观看 | 日韩av影视在线观看 | 欧美午夜寂寞影院 | 在线观看的av网站 | 久久免费中文视频 | 日本精品一区二区三区在线播放视频 | 日本在线精品视频 | 国产一级做a爱片久久毛片a | 91免费的视频在线播放 | 色婷婷激婷婷情综天天 | 最近免费中文字幕 | 粉嫩av一区二区三区四区在线观看 | 欧美另类xxx | 国产精品国产三级国产aⅴ入口 | 久久五月天婷婷 | 人人爽人人看 | 日日夜夜艹| 狠狠色噜噜狠狠狠狠2022 | 东方av在线免费观看 | 免费看特级毛片 | 亚洲精品在线观看不卡 | 日日夜夜人人天天 | 色噜噜噜噜| 天天操天天干天天玩 | 91网页版在线观看 | 2023年中文无字幕文字 | 成人福利在线播放 | 亚洲精品美女免费 | 色婷婷天天干 | 911香蕉 | 国产视频一区在线播放 | 97电院网手机版 | 91在线最新 | 久久狠狠一本精品综合网 | 99久久精品国产欧美主题曲 | 一区二区三区日韩在线观看 | 精品国产乱码久久久久久三级人 | 国内精品在线观看视频 | 亚洲天堂网视频 | 久久精品婷婷 | 黄网站www | 草草草影院 | 色偷偷88888欧美精品久久久 | 亚洲狠狠婷婷综合久久久 | 国产视频日本 | 91精品久久久久久综合乱菊 | 久久中国精品 | 日日草av| 99精品在线观看视频 | 91在线一区 | 天天操比 | 中文字幕黄色av | 欧美视频xxx | 免费视频你懂的 | 国产精品ⅴa有声小说 | 成人免费视频免费观看 | 岛国av在线免费 | 一区二区视频在线免费观看 | 五月开心婷婷 | 日本少妇视频 | 一区二区三区在线免费观看视频 | 成人a在线观看 | 婷婷激情5月天 | 91av在线免费| 国产一区av在线 | 国产中文字幕一区二区三区 | 欧美午夜视频在线 | 欧美一区二区三区不卡 | 永久免费毛片在线观看 | 欧美日韩中文在线 | 日韩成人免费在线 | 天天干天天天 | 欧美日韩精品在线免费观看 | 黄色免费大全 | 中文字幕一区二区三区四区在线视频 | 亚洲久草视频 | 9免费视频 | 色综合 久久精品 | 亚洲一区二区精品视频 | 国产精品久久久久永久免费看 | 色婷婷www| 超碰97中文 | 成在线播放 | 国产视频在线免费 | 欧美精品午夜 | 97高清免费视频 | 亚洲精品视频在线观看免费视频 | 国产夫妻av在线 | 99草视频| 亚洲激情电影在线 | 精品二区久久 | 国产在线观看污片 | 高潮久久久久久久久 | 久久av电影 | 91麻豆精品国产午夜天堂 | 中文字幕视频网站 | 国产精品永久在线 | 黄色特级毛片 | 中文字幕一区二区三区乱码在线 | 青青久草在线 | 日日夜夜人人天天 | 中文区中文字幕免费看 | 久久精品一区二区三区中文字幕 | 久久精品免视看 | 黄网站色视频免费观看 | 一区二区三区免费在线观看 | 超碰成人网 | 天天操天天操天天操天天操天天操天天操 | 久二影院 | 综合国产在线 | 超碰最新网址 | 午夜.dj高清免费观看视频 | 激情偷乱人伦小说视频在线观看 | 免费的国产精品 | av综合网址 | 欧美色婷 | 亚洲女人天堂成人av在线 | 久久精品96 | 成年人av在线播放 | 国产一区二区午夜 | 久久精品国产一区 | 精品国产伦一区二区三区观看说明 | 日韩电影在线观看一区二区 | 久久字幕 | 男女精品久久 | 免费看成年人 | www.久久视频 | 国产高清视频在线观看 | sm免费xx网站 | 四虎国产精品免费观看视频优播 | 91资源在线免费观看 | 亚洲精品1234区 | 久久综合九色 | 天天色天天射综合网 | 日韩av一区二区在线 | 日本久久高清视频 | 91大神精品视频在线观看 | 日韩理论片在线观看 | 96超碰在线| 久久精品播放 | 午夜手机电影 | 国产精品美女久久久久久久 | 欧美性爽爽 | 69xx视频 | 91中文字幕在线视频 | 91视频麻豆 | 91大神精品视频在线观看 | 国产精品久久久久永久免费看 | 高清av免费看 | 久久不射电影院 | 亚洲免费在线视频 | 青青河边草免费观看完整版高清 | 久久综合狠狠综合 | 午夜视频久久久 | 久久精品综合视频 | 亚洲 欧洲 国产 精品 | 亚洲一本视频 | www亚洲一区| 九九精品视频在线 | 国产九九精品 | 国产一级电影在线 | 日韩av免费一区二区 | 久久久综合色 | 欧美日韩高清在线观看 | 一级黄色片在线观看 | 欧美激情精品久久久久久免费 | 深夜成人av| 色网站在线 | 九九九九九九精品 | 亚州精品天堂中文字幕 | 欧美日韩亚洲第一页 | 97视频在线观看网址 | 国产91精品在线播放 | 91探花在线 | 69精品人人人人 | 久久久久国产成人精品亚洲午夜 | .国产精品成人自产拍在线观看6 | 国产在线专区 | av在线网站观看 | 国产大片黄色 | 成人免费网视频 | 午夜婷婷在线播放 | 一区二区高清在线 | 国产精品1000| 精品a视频 | 国产午夜精品久久 | 欧洲av不卡 | 一区二区三区中文字幕在线观看 | 怡红院久久 | 中文字幕色在线 | 国产视频一区在线 | 国产精品久久久久久久久久久杏吧 | 亚洲一区二区高潮无套美女 | 香蕉视频91| 成人av电影免费观看 | 久久国产精品免费一区二区三区 | 成人在线免费看视频 | 亚洲精品福利视频 | 尤物97国产精品久久精品国产 | 精品久久久久久久久久久院品网 | 久久深夜| 99精品在线看 | 成片免费观看视频大全 | 在线国产精品一区 | 国产免费一区二区三区最新6 | 久久99在线视频 | 精品亚洲午夜久久久久91 | 国产精品成人自产拍在线观看 | 欧美日韩国产免费视频 | 国产视频色| 麻豆视频免费版 | 久草精品视频在线观看 | 激情丁香5月 | 美女视频黄,久久 | 国产成人在线免费观看 | 国产欧美精品一区二区三区 | 久久久久久久久久免费 | 黄色三级在线看 | 成年人免费av网站 | 国产精品日韩久久久久 | 国产精品资源在线 | 成人av av在线 | 久久中文欧美 | 欧美精品亚洲精品 | 久草亚洲视频 | 玖玖国产精品视频 | 久久av免费 | 国产专区一 | 人人插人人艹 | 天天天天天天天操 | 久久久久久毛片 | 精品久久久久久亚洲综合网站 | 日韩精品一区二区三区外面 | 国产一区播放 | 精品久久一二三区 | 国产精品精品视频 | 黄色a三级| 久久人人做 | 国产精品乱码久久 | 久久久久久综合 | 国产91国语对白在线 | 亚洲理论在线观看 | 在线播放一区二区三区 | av资源中文字幕 | 亚洲 欧美 精品 | 狠狠色狠狠色综合日日小说 | 久久久午夜影院 | 国产精品久久久久影视 | 免费看的黄色小视频 | 日本黄色免费观看 | 在线观看免费高清视频大全追剧 | 久久综合五月天婷婷伊人 | 麻豆播放 | 久久 一区| av片中文字幕| 91在线欧美| 色综合色综合色综合 | 久久精品国产精品亚洲精品 | 国模吧一区 | 手机av资源 | 尤物九九久久国产精品的分类 | 91精品久久久久久久91蜜桃 | 欧美日产在线观看 | 日本黄色免费电影网站 | 国产九九热视频 | 99国产成+人+综合+亚洲 欧美 | 久久久久视 | 久久99操 | 麻豆影视在线免费观看 | 成人午夜片av在线看 | 在线国产99 | 国产一区在线免费 | 天天干天天操天天爱 | 国产一级二级在线观看 | 久久天天综合网 | 亚洲国产精品推荐 | 日韩在线播放av | av福利在线导航 | 日本不卡123区 | 日韩欧美电影在线 | 香蕉蜜桃视频 | 91传媒在线播放 | 六月天色婷婷 | 免费精品国产va自在自线 | av千婊在线免费观看 | 在线国产视频 | a视频在线观看 | 日韩啪啪小视频 | 国产精品中文字幕在线观看 | 色狠狠综合天天综合综合 | 日韩成人高清在线 | 波多野结衣视频一区二区三区 | 国产精品一区二区久久精品爱涩 | 九九视频这里只有精品 | 天天插日日插 | 日本高清中文字幕有码在线 | 一级全黄毛片 | 成人免费一区二区三区在线观看 | 江苏妇搡bbbb搡bbbb | 久久久久免费精品视频 | 国产艹b视频 | 国产在线国产 | 成人av免费在线 | 国产精品6 | 亚洲精品看片 | 亚洲免费av电影 | 中文字幕免费久久 | 国内精品在线看 | 欧美日本不卡视频 | 国产一区二区在线观看免费 | 丰满少妇在线观看网站 | 成人黄色免费观看 | 狠狠干干 | 手机在线看永久av片免费 | 精品国产一区二区三区噜噜噜 | 国产精品大全 | 色哟哟国产精品 | 久久久久国产精品免费网站 | 伊人超碰在线 | 中文字幕一区av | 欧美成人理伦片 | 国内精品一区二区 | 四虎www| 日韩中文字 | 国产高清在线精品 | 色婷婷综合成人av | 色吧av色av | 久久男人影院 | 国产精品国产精品 | 一二区电影 | 日韩精品在线免费观看 | 国产亚洲亚洲 | 97超碰国产精品女人人人爽 | 91资源在线观看 | 国产91精品久久久久 | av天天草| 99久久精品国产亚洲 | 国产精品一区二区久久久 | 国产日韩欧美在线影视 | 国产999精品久久久久久麻豆 | 日韩免费观看视频 | 91精品导航 | 爱爱一区| 国产自产高清不卡 | 日韩在线观看你懂得 | 玖玖在线看 | 久久久亚洲精品 | 国产在线观看高清视频 | 中文字幕精品视频 | 国产伦理一区二区 | 中文字幕 在线 一 二 | 日韩影视大全 | 亚洲在线国产 | 草久在线播放 | 欧美精品久久久久久久久老牛影院 | 久久精品国产一区二区电影 | 超碰在线日韩 | 国产精品久久片 | av电影久久 | 国产理论在线 | 99中文字幕| 亚洲精品88欧美一区二区 | 亚洲国产小视频在线观看 | 狠狠色丁香久久婷婷综合五月 | 国产精品美乳一区二区免费 | 99在线精品视频在线观看 | 亚洲黄色片在线 | 最近中文字幕 | 久久国产综合视频 | 国产亚洲资源 | 黄在线免费看 | 97在线观看免费观看高清 | 亚洲 欧美变态 另类 综合 | 久久99视频免费 | a在线视频v视频 | 天天曰天天曰 | 一二三区高清 | 四虎精品成人免费网站 | 欧美日韩久久一区 | 日本久久久久久久久久 | 国产91精品久久久久 | 丝袜av网站 | 国产精品久久久久久久久久妇女 | 中文字幕高清在线播放 | 色婷婷精品大在线视频 | 一级欧美黄| 国产午夜视频在线观看 | 久久久久免费电影 | 国产99久久精品一区二区永久免费 | 国产精品久久久久久久av大片 | 91桃色国产在线播放 | 国产精品成 | 人人添人人 | 丁香九月激情 | 四虎影视成人永久免费观看视频 | 九九在线视频免费观看 | 亚洲精品久久久久久久蜜桃 | 久久综合之合合综合久久 | 干干夜夜 | 久久婷婷一区二区三区 | 亚洲乱码国产乱码精品天美传媒 | 免费欧美高清视频 | 99热这里只有精品在线观看 | 91欧美视频网站 | av大片免费 | 国产精品99免视看9 国产精品毛片一区视频 | 国产精品久久久久毛片大屁完整版 | 久久艹国产视频 | 欧美黑吊大战白妞欧美 | 日韩av中文字幕在线免费观看 | 91亚洲精品国偷拍 | 夜夜躁天天躁很躁波 | 夜夜操天天摸 | 国产99久久精品一区二区永久免费 | 精品综合久久久 | 亚洲艳情| 日日躁你夜夜躁你av蜜 | 亚洲精品久久久久久久不卡四虎 | 国产精品久久久电影 | 色www精品视频在线观看 | 免费网站看av片 | 久久成人精品电影 | 日韩一级电影网站 | 国产精品日韩久久久久 | 美女福利视频 | 黄色www| 日韩精品视频一二三 | 欧美日韩国产高清视频 | 亚洲国产黄色片 | 特级西西人体444是什么意思 | 久久久激情网 | 激情网婷婷 | 亚洲精品国产精品国自产 | 中文字幕日本特黄aa毛片 | 天天干夜夜爽 | 天堂av中文字幕 | 久久免费在线 | 久久视奸| 午夜成人免费影院 | 日本丰满少妇免费一区 | 国产精品一区二区久久久 | 在线国产小视频 | 久久亚洲免费视频 | 欧美精品你懂的 | 日韩午夜电影院 | 探花在线观看 | 成人91在线| 成年人在线免费视频观看 | 久久在线精品视频 | 亚洲国产精品久久久久久 | 特黄一级毛片 | 69精品 | 九九涩涩av台湾日本热热 | 成人av.com | 免费在线观看国产黄 | 深夜视频久久 | 色欧美88888久久久久久影院 | 国产精品国产三级国产aⅴ无密码 | www五月天 | 探花视频在线观看免费 | 爱色av.com | 日韩有码网站 | 黄色av影院 | 国产手机在线观看 | av再线观看 | 日韩精品短视频 | 亚洲免费在线播放视频 | 99999精品 | 欧美日韩另类在线观看 | 日韩欧美国产精品 | 精品99免费 | 国产丝袜一区二区三区 | 久久久国产精品网站 | 99久久激情| 精品国产一区二区三区男人吃奶 | 亚洲一级片免费观看 | 日韩欧美国产精品 | 黄色一级免费 | 午夜久草 | 公开超碰在线 | 国产99久久久国产 | 狠狠亚洲 | 日韩精品黄 | 欧美精品乱码久久久久久 | www.玖玖玖 | 性日韩欧美在线视频 | 久久手机在线视频 | 久久激情小视频 | 色综合欧洲 | 91精品国自产在线观看欧美 | 国产香蕉视频 | 97久久久免费福利网址 | 在线免费观看麻豆视频 | 五月婷婷激情综合网 | 国产精品人人做人人爽人人添 | 久久a v视频 | 天天插天天狠 | 成年人免费看av | 久久精品视频在线观看 | 国产99久久久精品视频 | 国内一区二区视频 | 在线天堂v | 精品在线观 | 视频在线日韩 | 色婷av| 超碰公开97 | 美女网站在线 | 91传媒视频在线观看 | 九九免费精品视频在线观看 | 日本精品视频在线观看 | 久久九九影院 | 中文字幕视频 | 欧美日在线 | 看片网站黄色 | 国产又粗又猛又色 | 激情婷婷亚洲 | 黄网av在线 | 国产.精品.日韩.另类.中文.在线.播放 | 成人av影院在线观看 | 亚洲不卡av一区二区三区 | 久久夜靖品 | 超碰公开在线观看 | 国产成人在线观看免费 | 看片网站黄色 | 久久永久免费视频 | 九色91在线 | 亚洲 中文 在线 精品 | 欧美精品久 | 成人a级免费视频 | 亚洲va综合va国产va中文 | 午夜在线国产 | 久久久精品日本 | 国产精品乱码久久久久久1区2区 | 亚洲国产日韩在线 | 国产中文字幕国产 | 久热免费在线观看 | 有码中文字幕在线观看 | 欧美一区二区三区在线观看 | 天天操天天爱天天干 | 超碰成人免费电影 | 国产精品一区二区三区免费看 | 久精品在线观看 | 69xx视频| 色夜影院 | 国产免费又黄又爽 | 精品一区二区三区香蕉蜜桃 | 欧美日韩在线视频一区二区 | 亚洲国产精品第一区二区 | 天堂资源在线观看视频 | 色无五月| 五月天婷亚洲天综合网精品偷 | 蜜桃麻豆www久久囤产精品 | 视频高清 | 亚洲成人动漫在线观看 | 精品国产伦一区二区三区免费 | 国产91成人 | 国产精品99久久久久久人免费 | 69绿帽绿奴3pvideos| 狠狠ri | 91在线麻豆| 91视频a | 日韩黄色软件 | 在线国产能看的 | 国产美女无遮挡永久免费 | 蜜臀av免费一区二区三区 | 精品视频资源站 | 国产成人av在线 | 亚洲激情在线播放 | 成年人av在线播放 | 99精品视频观看 | 日韩av看片 | 欧美污在线观看 | www夜夜操com | 天天综合人人 | 国产成人一区二区三区在线观看 | 国产福利av在线 | 亚洲午夜精品久久久 | 很黄很黄的网站免费的 | 五月天色婷婷丁香 | 精品免费在线视频 | 欧美9999| 99精品一级欧美片免费播放 | 色综合天天视频在线观看 | 伊人网av| 毛片视频网址 | 91人人爽久久涩噜噜噜 | 精品久久久久久久久久岛国gif | 国产91成人 | 精品久久久久久国产偷窥 | 精品福利在线视频 | 久久经典国产 | 日韩精品一区二区三区三炮视频 | 国产黄色在线网站 | 国产一区二区观看 | 日韩av高清| 狠狠色婷婷丁香六月 | 日本特黄特色aaa大片免费 | 国产免费嫩草影院 | 不卡中文字幕av | 久草在线官网 | 五月综合激情 | 在线观看久 | 99热 精品在线 | 国产视频一级 | 麻豆av电影 | 在线观看久久 | 亚洲激情在线播放 | wwwwwww色 | 人人狠| 99久久久久免费精品国产 | 欧美另类性 | 天天操天天色天天射 | 麻豆视频在线免费 | 美女精品在线 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 三级a毛片| 在线观看国产麻豆 | 久草在线观看资源 | 91尤物国产尤物福利在线播放 | 黄色电影网站在线观看 | 日韩精品视频在线观看免费 | 日韩午夜大片 | 999久久久久久久久久久 | 精品久久久一区二区 | 国产在线永久 | 97人人超碰在线 | 午夜精品久久久久久久99无限制 | 亚洲精品久 | 免费精品国产va自在自线 | 亚洲播播| 久久精品之 | 国产伦理久久 | 亚洲精品资源在线观看 | 黄网站a|