是否有规范的方法可以重用TensorFlow中先前提供的占位符的计算?我的具体用例:
以下是代码中的目标,但由于一次又一次地执行相同的计算,因此存在缺陷:
X_in = some_fixed_data
combinations_in = large_set_of_combination_indices
for combination_batch_in in batches(combinations_in, batch_size=128):
session.run(train_op, feed_dict={X: X_in, combinations: combination_batch_in})
感谢。
答案 0 :(得分:6)
在sess.Run()调用之间共享计算值的规范方法是使用Variable
。在这种情况下,您可以设置图形,以便在添加占位符时,它们会计算保存到变量中的表示的新值。图的单独部分读取那些变量以计算损失。如果您需要通过计算表示的图形部分计算渐变,则此方法无效。计算这些梯度将需要重新计算编码器中的每个Op。
答案 1 :(得分:1)
这是应该通过CSE(公共子表达式消除)自动解决的问题。不确定TensorFlow目前的支持是什么,可能有点不稳定,但是Graph选项的optimizer_do_cse
标志默认为false,你可以使用GraphConstructorOptions将其设置为true。这是C++ example使用GraphConstructorOptions(对不起,找不到Python)
如果这不起作用,你可以做手动CSE",即弄清楚哪个部分被不必要地重新计算,将其分解为单独的Tensor,并参考所有的张量计算