[英]How to use tf.while_loop for nested FOR loop
我正在研究使用tensorflow实现的模型。 一切都进行得很顺利,直到我必须实现一个嵌套函数(类似)
使用嵌套的FOR循环。 例如如下所示:
for k in range(n):
Gk = tf.convert_to_tensor(G[k], dtype=self.dtype)
Gk = tf.tile(tf.expand_dims(Gk,0),[tf.shape(trueX)[0],1])
for j in range(m):
pre_Y = self.build_nn( Gk, 200, '{}phi2'.format(j), tf.AUTO_REUSE )
log_pred_Y = tf.layers.dense( pre_Y, 2, name='{}phi2y'.format(j), reuse=tf.AUTO_REUSE )
pred_Y = tf.exp( log_pred_Y )
...........
pre_cost += tf.multiply( ll, pred_Y )
_cost += tf.reduce_sum(tf.multiply( pre_cost, pre_G), -1)
显然这是一个非常糟糕的主意,因为它不仅需要时间,而且会占用大量内存。 几天来,我一直在尝试使用tf.while_loop重新实现,据我所知应该比使用本机python循环更好。 我一直在尝试实现嵌套的tf.while_loop,但无济于事。 我有两个问题:
pre_Y = self.build_nn( Gk, 200, '{}phi2'.format(j), tf.AUTO_REUSE )
log_pred_Y = tf.layers.dense( pre_Y, 2, name='{}phi2y'.format(j), reuse=tf.AUTO_REUSE )
它使用名称中的索引来标识每个循环中要使用的图层。 使用python FOR循环,我使用索引为该层分配名称以供重用,但使用tf.while_loop,我找不到任何方法将唯一名称分配给密集层,因为我无法传递python据我了解,要在“名称”选项中使用的tf.while_loop字符串或整数。
Re(1)嵌套的tf.while_loop
正常工作。
关于(2),tf.while_loop无法完成这种事情,您需要使用python展开循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.