Python 使用tensorflow中的公共输入对占位符进行分组

Python 使用tensorflow中的公共输入对占位符进行分组,python,tensorflow,Python,Tensorflow,我有n个网络,它们的所有输入都有占位符,我想将它们链接到另一个占位符(随后创建)作为公共输入 class GroupOfNetworks(object): def __init__(self,subtask_nets,ob_space): self.x_inputs = [st_net.x for st_net in subtask_nets] #list of network inputs 其中st_net.x是一个占位符,声明如下 class Network(

我有n个网络,它们的所有输入都有占位符,我想将它们链接到另一个占位符(随后创建)作为公共输入

class GroupOfNetworks(object):
    def __init__(self,subtask_nets,ob_space):
        self.x_inputs = [st_net.x for st_net in subtask_nets]    #list of network inputs
其中
st_net.x
是一个占位符,声明如下

class Network(object):
     def __init__(self, ob_space):
          self.x = tf.placeholder(tf.float32, [None] + list(ob_space)) `#single network input
我希望所有这些网络都有一个公共输入,因此我只需要在我的
feed\u dict
中有一个键值对。我尝试对占位符(下面的代码片段)进行赋值操作,但这会引发一个错误,因为它们是张量而不是变量

#in class GroupOfNetworks...
common_x = tf.placeholder(tf.float32, [None] + list(ob_space),"common_input")
set_input = tf.assign(self.x_inputs[0].x,common_x,"link_subtask_input") # DOES NOT WORK
到目前为止,我一直使用编程生成的
feed\u dict
(如下所示),但这不在图形上,从
.meta
文件加载图形时无法导入

def make_common_feed_dict(self,x):
    return {placeholder:x for placeholder in self.x_inputs}

有人知道更好的解决方案吗?

因为您需要为网络中的每个网络使用一个占位符(因此输入相同),所以只需在任何地方使用相同的占位符即可

不要在对象
\uuuu init\uuuu
方法中创建占位符,而是在外部创建占位符并将其传递给您创建的每个对象。 这样做:

# Define your network in this way
class Network(object):
     def __init__(self, placeholder):
          self.x = placeholder
然后,在初始化
网络
对象之前,定义占位符,然后使用它

input_placeholder = tf.placeholder(tf.float32, [None] + list(ob_space))

network_a = Network(input_placeholder)
network_b = Network(input_placeholder)
假设
网络
对象获得了一个
get
方法来获取输出张量,您可以执行
网络a
网络b
为它们提供相同的值:

sess.run([network_a.get(), network_b.get()], feed_dict={input_placeholder: value})

是的,如果我根本不需要独立运行
网络
对象,并且可以对它们进行修改,那么这就行了。您是否知道,如果我无法修改
网络
对象,而只使用对占位符的引用,是否有任何方法可以处理这种情况?