以下情况: 有一个生产服务器(C++(正在运行Tensorflow。那里的代码期望只有一个输入Placeholder
,它被馈送到类似于feed_dict:{'input':...}
。我无法更改服务器代码。我只能提供一个新的图表,它必须有一个叫做input
的Placeholder
。
使用tensorflow,我有一些代码可以创建两个具有不同范围的相同神经网络:
dnn1 = DNN(scope='dnn1')
dnn2 = DNN(scope='dnn2')
两个 DNN 都有一个输入Placeholder
:<tf.Tensor 'dnn1/input:0' shape=(50) dtype=float32>
和<tf.Tensor 'dnn2/input:0' shape=(50) dtype=float32>
两个网络应该获得相同的输入。 如何使张量input
流向图中的dnn1/input
和dnn2/input
?我也无法更改DNN
类,因此最终我的图形将具有dnn1/input
,dnn2/input
和input
作为占位符,但生产代码只会提供input
。
创建一个输入占位符并将其用作两个网络的输入:
例如 DNN1:hidden1 = (input * W1) + b1
DNN2:hidden1 = (input * W1) + b1
你能做到吗?
默认情况下,您可以修改 DNN 占位符以采用生产输入占位符。因此,您仍然可以随时向他们提供自定义值。
session = tf.Session()
production_input = tf.placeholder(tf.float32, [50])
# Own placeholders
dnn_1_input = tf.placeholder_with_default(production_input, [50])
dnn_2_input = tf.placeholder_with_default(production_input, [50])
# Production environment call
result = session.run([dnn_1_input, dnn_2_input],
feed_dict={production_input: np.arange(50)})