PTB rnn 模型一个 PTBModel 对象而不是三个
PTB rnn model one PTBModel object instead of three
在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 用于提供训练数据,另一个用于验证还有一个用于测试)?
假设我只创建一个 PTBModel 对象,是否可以重用用于训练的 _input_data 占位符并更改其形状并将其用于测试(其中第一维,num_steps,测试时设置为1)?
谢谢!
是的,这三个对象存在于同一个图中。
占位符不同,如果您想评估图表的特定部分,您需要使用正确的占位符。
这在理论上是可能的,但并不那么微不足道。例如。您可以将训练图展开 20 个步骤,但仅使用步骤的子集进行评估。另一种可能性是使用 dynamic_rnn 功能。
一般来说,构建几个图的副本并不是很昂贵,可能不值得花很多时间来优化分配的节点数。
在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 用于提供训练数据,另一个用于验证还有一个用于测试)?
假设我只创建一个 PTBModel 对象,是否可以重用用于训练的 _input_data 占位符并更改其形状并将其用于测试(其中第一维,num_steps,测试时设置为1)?
谢谢!
是的,这三个对象存在于同一个图中。
占位符不同,如果您想评估图表的特定部分,您需要使用正确的占位符。
这在理论上是可能的,但并不那么微不足道。例如。您可以将训练图展开 20 个步骤,但仅使用步骤的子集进行评估。另一种可能性是使用 dynamic_rnn 功能。
一般来说,构建几个图的副本并不是很昂贵,可能不值得花很多时间来优化分配的节点数。