TensorFlow中的缓存计算

rd1*_*d11 4 tensorflow

是否有规范的方法来重用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})
Run Code Online (Sandbox Code Playgroud)

谢谢.

Ian*_*low 6

在sess.Run()调用之间共享计算值的规范方法是使用a Variable.在这种情况下,您可以设置图形,以便在添加占位符时,它们会计算保存到变量中的表示的新值.图的单独部分读取那些变量以计算损失.如果您需要通过计算表示的图形部分计算渐变,则此方法无效.计算这些梯度将需要重新计算编码器中的每个Op.

  • 因此,您认为没有办法以“正确”的方式做到这一点,那就是进行前向传递,缓存这些结果并使用那些缓存的结果计算梯度? (2认同)