在while循环中更改网络输入

时间:2018-12-04 13:42:19

标签: tensorflow

我试图了解如何在TensorFlow中使用while循环。我想实现一个循环,其中神经网络的输入是循环的上一次迭代中神经网络的输出(预测)。

现在,我的神经网络(while循环的前馈部分)实际上是在我的代码的其他地方定义的,如下所示:

Sheet1 - RAW
RAW Number of foos | RAW Number of Bars |
[empty]            | [empty]            |

Sheet2 - FORMATTED
Number of foos       | Number of Bars     | All items
='Sheet1 - RAW'!A2   | ='Sheet1 - RAW'!B2 | =A2 + B2

然后我的while循环定义为:

Sheet1 - RAW
RAW Number of foos | RAW Number of Bars |
1                  | 3                  |

Sheet2 - FORMATTED
Number of foos       | Number of Bars     | All items
='Sheet1 - RAW'!A2   | ='Sheet1 - RAW'!B2 | =A2 + B2

在这里,循环体是:

input_placeholder = tf.placeholder(dtype=np.float32, shape=[None, 2])
hidden_layer = tf.layers.dense(inputs=input_placeholder, units=10, activation=tf.nn.relu)
prediction_op = tf.layers.dense(inputs=hidden_layer, units=2)

要运行while循环,请尝试:

num_steps = 10
step_num = 0
init_input = np.array([[0.1, 0.2]], dtype=np.float32)
condition = tf.less(step_num, num_steps)
_, final_prediction_op = tf.while_loop(condition, loop_body, [step_num, init_input])

但是我的问题是,我应该在def loop_body(step_num, next_input): # What do I do here? prediction = prediction_op step_num = tf.add(step_num, 1) return step_num, prediction 行中写些什么,以便将sess = tf.Session() sess.run(tf.initialize_all_variables()) final_prediction = sess.run(final_prediction_op) 作为前馈网络的输入来提供?

我可以在循环中再次写出网络,但是问题是我实际上在其他地方定义了网络,并且不想将相同的代码复制两次。我希望能够使用现有的网络代码(我的实际网络要复杂得多,这只是一个最小的示例)。但是此网络需要# What do I do here?填充数据,并且占位符是不可变的,因此在while循环期间无法将其分配给它。

关于如何解决此问题的任何想法?谢谢!

0 个答案:

没有答案