Python Tensorflow负荷图进入特定范围

Python Tensorflow负荷图进入特定范围,python,tensorflow,Python,Tensorflow,我正在使用网络类中的以下方法将一个经过预训练的网络加载到Tensorflow中(因此调用self.xyz)。首先,调用define\u network(),然后初始化其他变量和优化器,然后调用load\u model() 然而,尽管使用了tf.variable\u scope(self.name),图形中的变量还是被加载到变量的通用空间中。这是有问题的,因为我有两个这个类的实例,每个实例都加载相同的网络,我想将输出划分为不同的作用域 如何将变量加载到特定范围 请随时更正我代码中的任何错误 d

我正在使用
网络
类中的以下方法将一个经过预训练的网络加载到Tensorflow中(因此调用self.xyz)。首先,调用
define\u network()
,然后初始化其他变量和优化器,然后调用
load\u model()

然而,尽管使用了
tf.variable\u scope(self.name)
,图形中的变量还是被加载到变量的通用空间中。这是有问题的,因为我有两个这个类的实例,每个实例都加载相同的网络,我想将输出划分为不同的作用域

如何将变量加载到特定范围

请随时更正我代码中的任何错误

  def load_model(self):
    with tf.variable_scope(self.name) as scope:
      self.saver.restore(self.sess, self.model_path)
      print("Loaded model from {}".format(self.model_path))

  def define_model(self):   

    with tf.variable_scope(self.name) as scope:
      self.saver = tf.train.import_meta_graph(self.model_path + '.meta')
      print("Loaded model from {}".format(self.model_path + '.meta'))
      graph = tf.get_default_graph()

      self.inputs = []
      inp_names = ['i_hand1:0', 'i_hand2:0', 'i_flop1:0', 'i_flop2:0', 'i_flop3:0',
                   'i_turn:0', 'i_river:0', 'i_other:0', 'i_allowed_mod:0', 'keras_learning_phase:0']
      for inp in inp_names:
        self.inputs.append(tf.get_default_graph().get_tensor_by_name(inp))

      self.outputs = tf.get_default_graph().get_tensor_by_name("Tanh:0") 
      self.add_output_conversions()

      all_vars = tf.trainable_variables()
      for var in all_vars:
        self.var[var.name] = var

我认为你的问题可以通过加入一个论点来解决

self.saver = tf.train.import_meta_graph(self.model_path + '.meta', 'import_scope'=self.name)

这是我尝试过的,但没有成功。它失败了,出现了一个错误。我认为这个论点与图形是如何保存的有关,而不是与新范围应该是什么有关。