我想实现一种算法,该算法允许在TensorFlow中并行执行。我的问题是,parallel_iterations,swap_memory和maximum_iterations参数实际上是做什么的,并且根据情况它们是合适的值。具体来说,在TensorFlow网站https://www.tensorflow.org/api_docs/python/tf/while_loop上的文档中,parallel_iterations是允许并行运行的迭代次数。这个数字是线程数吗?什么时候应该允许CPU-GPU交换内存,出于什么原因?这种选择的优点和缺点是什么? maximum_iterations的目的是什么?可以与parallel_iterations结合使用吗?
答案 0 :(得分:0)
swap_memory 用于要在GPU设备上拥有更多内存的情况。通常,在训练模型时,一些激活会保存在GPU内存中。供以后使用。使用swap_memory,您可以将这些激活存储在CPU内存中并使用GPU内存。适合例如批量较大。这是一个优势。如果需要大的batch_sizes或序列较长且要避免OOM异常,则可以选择此选项。缺点是计算时间长,因为您需要从CPU内存中传输数据。到GPU mem。
最大迭代次数为smth。像这样:
while num_iter < 100 and <some condition>:
do something
num_iter += 1
因此,当您检查条件但又希望有一个上限时,它很有用(一个示例是检查模型是否收敛。如果不收敛,则仍然要在k次迭代后结束)。
对于 parallel_iterations ,我不确定,但这听起来像是多个线程,是的。您可以尝试在示例脚本中查看效果。