目前,我正在一个范围内构建几个神经网络,我想从另一个范围访问这些网络。
我尝试传递范围,但是如栈溢出中其他一些答案所述,但没有一个起作用。例如
def mlp_model(input, num_outputs, scope, reuse=False, num_units=64, rnn_cell=None):
# This model takes as input an observation and returns values of all actions
with tf.variable_scope(scope, reuse=reuse):
out = input
out = layers.dense(out, units=num_units, activation=tf.nn.relu)
out = layers.dense(out, units=num_units, activation=tf.nn.relu)
out = layers.dense(out, units=num_outputs, activation=None)
return out
input_placeholder = tf.placeholder(tf.float32, shape=(None, 64), name="input")
with tf.variable_scope("agent_0") as agent_scope:
q_func= mlp_model(input_placeholder, 2, "q_func", num_units=64)
with tf.variable_scope("agent_1"):
with tf.variable_scope(agent_scope, reuse=True):
q_func_2=mlp_model(input_placeholder, 2, "q_func", num_units=64, reuse=True)
当我看到q_func的名称时,它说“ agent_0 / q_func / dense_2 / BiasAdd:0” 当我看到q_func_2的名称时,它说“ agent_1 / agent_0 / q_func / dense_2 / BiasAdd:0”
我想弄清楚怎么做q_func == q_func_2
答案 0 :(得分:0)
显然,从表面上看,这两个张量看起来是不同的,它们在引擎盖下是相同的。为了验证这一点,我仅在简单的回归任务上训练了“ q_func”,“ q_func_2”中的值也进行了更新。