在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)考试时间)?
谢谢!
答案 0 :(得分:0)
是的,这三个对象位于同一个图表中。
占位符不同,如果要评估图表的特定部分,则需要使用正确的占位符。
理论上它是可能的,但它并不是微不足道的。例如。你可以将训练图展开20步,但只使用一部分步骤进行评估。另一种可能是使用dynamic_rnn功能。
通常,构建图表的一些副本并不是非常昂贵,并且可能不值得花费大量时间来优化分配的节点数。