使用Tensorflow構建LSTM模型所需要使用到的API

前言

在使用tensorflow編寫LSTM代碼的時候Tensorflow使用LSTM實現中文文本分類(二),使用到很多新的函數,在此將用到的新函數整理一下做一個筆記。

重要方法

tf.random_uniform_initializer()

功能:生成具有均勻分佈的張量的初始化器
參數:

  • minval:一個 python 標量或一個標量張量.要生成的隨機值範圍的下限
  • maxval:一個 python 標量或一個標量張量.要生成的隨機值範圍的上限.對於浮點類型默認爲1
  • seed:一個 Python 整數.用於創建隨機種子.查看 tf.set_random_seed 的行爲
  • dtype:數據類型
tf.variable_scope()

參考博客:tf.variable_scope 參數
參數:返回一個用於定義創建variable層的op的上下文管理器
參數(不常用的沒有寫):

  • name_or_scope:string或VariableScope:要打開的範圍。
  • default_name:如果name_or_scope參數爲None,則將使用默認名稱,此名稱將被唯一。 如果提供了name_or_scope,它將不會被使用,因此它不是必需的,可以是None。
    值:傳遞給op函數的Tensor參數列表。
  • initializer:此範圍內的變量的默認初始化程序。
  • dtype:在此範圍中創建的變量類型(默認爲傳遞範圍中的類型,或從父範圍繼承)

tf.nn.embedding_lookup()

參考博客:tf.nn.embedding_lookup函數的用法
功能:選取一個張量裏面按照索引對應的元素。
參數:

  • params 可以是tensor,也可以是數組
  • ids 傳入 對應的 索引

tf.contrib.rnn.BasicLSTMCell()

參考博客:記錄tf.contrib.rnn.BasicLSTMCell
功能:創建一個LSTM層
參數:

  • num_uints:神經元數量
  • forget_bias:遺忘的偏置0-1,0全忘記,1全記得
  • state_is_tuple:是否返回元組,最好是true,返回元組。
  • activation:激活函數,默認tanh

tf.contrib.rnn.MultiRNNCell()

參考博客:tf.nn.embedding_lookup函數的用法
功能:對RNN進行堆疊。即:將每個單層LSTM穿聯在一起形成一個多層LSTM。經過轉化過的層,可以當做單層LSTM來操作,很方便。
參數:

  • cells:run cell 的 list
  • state_is_tuple:同上,非必須、

tf.contrib.rnn.MultiRNNCell.zero_state(batch_size, tf.float32)

功能:通過該函數獲得一個全零的初始狀態。
參數:

  • batch_size:batch大小
  • dtype:數據類型

tf.nn.dynamic_rnn()

博客參考:tf.nn.dynamic_rnn返回值詳解
功能:使用該函數相當於調用了n次call函數,即通過{h0, x1, x2, x3…xn}直接得到{h1, h2, h3, h4, … hn}
參數:

  • cell:通過tf.contrib.rnn.MultiRNNCell()堆疊的多層RNN,或者 單層的lstmcell也可以。
  • inputs:需要 傳入的 訓練數據
  • initial_state:初始狀態(一般可以是零矩陣)

需要特別強調一下該函數的返回

  • outputs:time_step步裏所有的輸出,他到shape爲(batch_size, time_steps, cell.output_size)
  • state:最後一步的隱狀態,形態爲(batch_size, cell,state_size)

tf.clip_by_global_norm()

博客參考:tf.clip_by_norm 梯度裁剪
功能:梯度裁剪的最直接目的就是防止梯度爆炸,手段就是控制梯度的最大範式。
參數:

  • t_list:梯度列表
  • clip_norm:裁剪率
    返回值:
  • list_clipped:裁剪後的梯度列表
  • global_norm:全局的規約數

tf.gradients()

博客參考:Tensorflow:tf.gradient()用法以及參數stop_gradient理解
功能:進行梯度計算
參數:

  • ys:類似於目標函數,即需要被微分的函數
  • xs:被微分的對象/變量,需要求導的參數

返回:

  • 該函數返回 xs 中每個 x 的 sum(dy/dx) 的列表.

tf.train.AdamOptimizer( learning_rate ).apply_gradients()

博客參考:tensorflow API:梯度修剪apply_gradients和compute_gradients
功能:把梯度“應用”到變量上去。這是minimize()函數的第二個步驟,返回一個應用的操作。
參數:

  • grads_and_vars:compute_gradients()函數返回的(gradient, variable)對兒的列表。
  • global_step:可選變量,在變量跟新後會自增一。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章