目前,我的方法是为计算1定义一个计算图(对于两个不同的输入两次计算),为计算2定义第二个计算图,仅对第一个计算的输入运行一次(在这种情况下,我计算了计算1的输出之差,但我正在寻找更通用的问题的解决方案)。然后,我将计算1运行两次,将结果存储在Numpy数组中,然后将其传递给图2以进行第二次计算。但是,这样做的缺点是我必须为每个计算运行单独的Tensorflow会话,并在GPU和RAM之间来回移动数据。
将两个初始输入分配到计算1也不可行,因为它们的大小可能不同(但是输出的大小始终相同)。
换句话说,我需要两个Tensorflow会话之间的某种持久性,而无需在两个会话之间存储数据,或者在同一会话中具有同一图的两个副本,但不能与从那以后彼此会占用太多内存。
答案 0 :(得分:1)
尝试使用急切执行和tf.contrib.eager.defun来构建图形(在tensorflow代码库中搜索defun的用法以查看其示例)。急切的执行使您可以在设备上持久存储张量,而无需获取它们,也无需担心会话。