主要有創建運算圖和處理輸入數據兩個方面不同。
創建運算圖:
靜態 rnn 的意思就是在圖中創建一個固定長度(n_steps)的網絡
動態的tf.nn.dynamic_rnn被執行時,它使用循環來動態構建圖形
處理輸入數據:
dynamic_rnn實現的功能就是可以讓不同迭代傳入的batch可以是長度不同數據,但同一次迭代一個batch內部的所有數據長度仍然是固定的。而且dynamic會根據 sequence_length 中止計算。
static_rnn不能這樣,它要求每一時刻傳入的batch數據的[batch_size, max_seq],在每次迭代過程中都保持不變。