對于單個的 RNNCell , 使用色的 call 函數進行運算時 ,只是在序列時間上前進了一步 。
如使用 x1、 ho 得到此h1, 通過 x2 、 h1 得到 h2 等 。
tf.nn.dynamic_rnn的作用:
如果序列長度為n,要調用n次call函數,比較麻煩。對此,TensorFlow提供了一個tf.nn.dynamic_mn函數,使用該函數相當于調用了n次call函數。通過{ho, x1 , x2,…, xn} 直接得到{h1 , h2,…, hn} 。
具體來說,設輸入數據的格式為(batch_size, time_steps, input size),
其中batch_size表示batch的大小,即包含幾個序列。
time_steps表示序列長度,
input_size表示輸入數據單個序列單個時間維度上固有的長度。
此時,得到的outputs是time_steps步里所有的輸出。它的形狀為(batch_size, time_steps, cell.output size)。state 是最后一步的隱狀態,形狀為(batch_size, cell . state_size) 。
至此,在對每一步的輸出進行變換,可以得到損失并進行訓練模型了。
以上這篇使用 tf.nn.dynamic_rnn 展開時間維度方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/DeepOscar/article/details/81123002