函式一:initializer=tf.random_uniform_initializer(-0.1, 0.1, seed=123)
tf.random_uniform_initializer
引數:函式二:lstm = tf.contrib.rnn.lstmcell(rnn_size, initializer=tf.random_uniform_initializer(-0.1, 0.1, seed=123))
定義基本的lstm單元,rnn_size是lstm cell中的單元數,與輸入向量的維度是一致的。根據輸入的詞向量,來定義維度。
函式三:lstms = tf.contrib.rnn.multirnncell([get_lstm(rnn_size) for _ in range(rnn_num_layers)])
用於例項化遞迴神經網路,rnncell由多個****** cell組成,返回值為輸入張量或者張量列表
函式四:encoder_outputs, encoder_states = tf.nn.dynamic_rnn(lstms, encoder_embed, source_sequence_len, dtype=tf.float32)
encoder_embed代表輸入,[x,y,z]x代表batch的大小,y文字長度,z是embedding編碼的長度。
source-sequence_len代表輸入的文字長度,可以設定為[x,y],x代表最大長度,y是此次長度,我也沒看太懂,之後繼續補充:
encoder_outputs,每乙個迭代隱狀態的輸出
encode_states,代表最後的編碼的碼字context vector(其長度有什麼確定?後面再補充)
補充:官方文件:
'outputs' is a tensor of shape [batch_size, max_time, cell_state_size]
'state' is a tensor of shape [batch_size, cell_state_size]
我們用乙個小例子來說明其用法,假設你的rnn的輸入input是[2,20,128],其中2是batch_size,20是文字最大長度,128是embedding_size,可以看出,有兩個example,我們假設第二個文字長度只有13,剩下的7個是使用0-padding方法填充的。dynamic返回的是兩個引數:outputs,last_states,其中outputs是[2,20,128],也就是每乙個迭代隱狀態的輸出,last_states是由(c,h)組成的tuple,均為[batch,128]
因此context vector的輸出的長度為embedding編碼的長度。
函式五:tf.identity
看例子:
自己理解作用,通過tf.identity,在圖中只有operation才會執行,因此通過簡單的y=x賦值,在圖中並不會執行,因此需要定義乙個operation,在圖中形成乙個節點,tf.identity是返回乙個一 模一樣新的tensor的op,這會增加乙個新節點到gragh中。
函式六:masks = tf.sequence_mask(target_sequence_len, max_target_sequence_len, dtype=tf.float32, name="masks")
返回乙個表示每個單元的前n個位置的mask張量。
示例:tf.sequence_mask([1, 3, 2], 5) # [[true, false, false, false, false],
# [true, true, true, false, false],
# [true, true, false, false, false]]
tf.sequence_mask([[1, 3],[2,0]]) # [[[true, false, false],
# [true, true, true]],
# [[true, true, false],
# [false, false, false]]]
函式七:encoder_embed = tf.contrib.layers.embed_sequence(rnn_inputs, source_vocab_size, encoder_embedding_size)
tf.contrib.layers.embed_sequence(ids, vocab_size, embed_dim)
ids: 形狀為[batch_size, doc_length]的int32或int64張量,也就是經過預處理的輸入資料。
vocab_size: 輸入資料的總詞彙量,指的是總共有多少類詞彙,不是總個數
embed_dim:想要得到的嵌入矩陣的維度
返回值:tensor
of[batch_size, doc_length, embed_dim]
with embedded sequences.
反卷積實現 tensorflow 實現
deconv解卷積,實際是叫做conv transpose,conv transpose實際是卷積的乙個逆向過程,tf中,編寫conv transpose 的時候,心中想著乙個正向的卷積過程會很有幫助。想象一下我們有乙個正向卷積 input shape 1,5,5,3 kernel shape 2,...
Tensorflow實現嶺回歸
嶺回歸可以看作是線性回歸的一種增強版,實現的時候無非就是加入乙個二範數正則化項,但是應當注意,這裡只對於權重進行懲罰,偏置項是不加入正則化的,具體理論可以參見相關的 和blog,在此不贅述。這裡還是使用tf實現了嶺回歸演算法,並實際應用在了乙個真實資料集而非人工資料集上,資料及規模相比於之前的資料也...
Tensorflow實現邏輯回歸
import tensorflow as tf 匯入mnist資料集 from tensorflow.examples.tutorials.mnist import input data mnist input data.read data sets temp data one hot true 定...