1
在PTB RNN模型,創建三個PTBModel對象,即男,MVALID和MTEST:PTB RNN模型一個PTBModel對象,而不是三個
with tf.Graph().as_default(), tf.Session() as session:
initializer = tf.random_uniform_initializer(-config.init_scale,
config.init_scale)
with tf.variable_scope("model", reuse=None, initializer=initializer):
**m** = PTBModel(is_training=True, config=config)
with tf.variable_scope("model", reuse=True, initializer=initializer):
**mvalid** = PTBModel(is_training=False, config=config)
**mtest** = PTBModel(is_training=False, config=eval_config)
我的問題是:
做所有這三個對象都住在同一個圖中? (看起來他們都生活在默認圖表下。)
這三個對象是否共享相同的佔位符,例如_input_data?或者是每個PTBModel對象都創建了不同的佔位符集合,例如在同一個圖表中有三個_input_data佔位符(一個用於提供訓練數據的_input_data,另一個用於驗證,另一個用於測試)?
假設我只創建一個PTBModel對象,是否有可能重用用於訓練的_input_data佔位符並更改其形狀並將其用於測試(第1維,num_steps在測試時設置爲1時間)?
謝謝!
感謝您的明確答案,幫助了很多。但是,我仍然不明白爲什麼你不能在_input_data佔位符中使用None作爲num_steps,如果None可以用於同一佔位符中的batch_size?我可以看到這在微型批次培訓中會出現問題,其中小批次中的序列可能有不同的長度;如果我們假設最小批量爲1,則會爲每個輸入工作提供不同的num_step值? – nddk
batch_size和num_steps之間的區別在於num_steps的不同值會導致在圖中執行不同數量的節點。 更改批量大小不會使圖形除操作的形狀以外任何不同。這就是爲什麼如果我們想要支持多個值,將None設置爲有意義的原因。如果您更改步數,則執行圖非常不同。即你運行不同數量的LSTM步驟。 –