PTB rnn模型一个PTBModel对象而不是三个

时间:2016-02-28 12:50:38

标签: tensorflow

在PTB rnn模型中,创建了三个PTBModel对象,即m,mvalid和mtest:

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用于提供训练数据,另一个用于验证,另一个用于测试)? / p>

  • 假设我只创建一个PTBModel对象,是否可以重用用于训练的_input_data占位符并更改其形状并将其用于测试(第一维,num_steps,设置为1)考试时间)?

谢谢!

1 个答案:

答案 0 :(得分:0)

是的,这三个对象位于同一个图表中。

占位符不同,如果要评估图表的特定部分,则需要使用正确的占位符。

理论上它是可能的,但它并不是微不足道的。例如。你可以将训练图展开20步,但只使用一部分步骤进行评估。另一种可能是使用dynamic_rnn功能。

通常,构建图表的一些副本并不是非常昂贵,并且可能不值得花费大量时间来优化分配的节点数。