我想在第一次调用时为RBM创建模型权重,然后再使用它们。我尝试了两种方法:
使用scope.reuse_variables():
with tf.variable_scope("RBM_1") as scope:
rbm = self.train_rbm(v, num_train, num_units)
scope.reuse_variables()
rbm_stack.append(rbm)
v_data = rbm.sample_h_given_v(v_data)
v = Dataset(v_data)
但是,当我稍后尝试重用在“ RBM_1”范围下定义的变量时,
var = tf.get_variable("RBM_1/W")
我收到ValueError:变量RBM_1 / W已经存在,不允许使用。您是要在VarScope中设置“ reuse = True”还是“ reuse = tf.AUTO_REUSE”?
通过重新创建范围:
with tf.variable_scope("RBM_1") as scope:
rbm = self.train_rbm(v, num_train, num_units)
rbm_stack.append(rbm)
v_data = rbm.sample_h_given_v(v_data)
v = Dataset(v_data)
with tf.variable_scope("RBM_1", reuse=True):
var = tf.get_variable("W")
,这很好。我的问题是,第一种方法为什么不起作用?我也尝试在第一种方法中传递参数复用= tf.AUTO_REUSE,但是即使这样也没有用。
谢谢!