Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 从GPU运行并使用多个线程为队列提供数据时tensorflow中的NaN值_Multithreading_Tensorflow_Gpu - Fatal编程技术网

Multithreading 从GPU运行并使用多个线程为队列提供数据时tensorflow中的NaN值

Multithreading 从GPU运行并使用多个线程为队列提供数据时tensorflow中的NaN值,multithreading,tensorflow,gpu,Multithreading,Tensorflow,Gpu,我在训练的模型中遇到了NaN值 我有两个tensorflow队列。第一个线程由一个独立的加载线程提供,第二个线程从第一个队列读取数据,执行预处理,然后加载到第二个队列中 这一切都发生在CPU上。然后,模型从第二个队列中读取一批数据,并在GPU上进行训练 我在一个可变的步骤后得到NaN,通常在10-20的数量级 我可以通过两种方式回避问题: 在CPU上运行。同样的代码在CPU上运行良好 删除线程,使用相同的代码,而不是在线程中运行加载程序和预处理器,只需在训练步骤之前按顺序执行这两个步骤 因此,只

我在训练的模型中遇到了NaN值

我有两个tensorflow队列。第一个线程由一个独立的加载线程提供,第二个线程从第一个队列读取数据,执行预处理,然后加载到第二个队列中

这一切都发生在CPU上。然后,模型从第二个队列中读取一批数据,并在GPU上进行训练

我在一个可变的步骤后得到NaN,通常在10-20的数量级

我可以通过两种方式回避问题:

  • 在CPU上运行。同样的代码在CPU上运行良好
  • 删除线程,使用相同的代码,而不是在线程中运行加载程序和预处理器,只需在训练步骤之前按顺序执行这两个步骤
  • 因此,只有当我使用多个线程从不同的设备访问队列时,才会遇到这个问题

    或者看起来,到目前为止,我还没有成功地将问题提炼成一个最小的测试用例。一个简单的测试似乎是可行的

    想知道是否有任何已知的相关问题


    我在两个系统上复制了这一点,一个运行TF1.0.1,另一个运行1.1.0-rc1。我尝试了CUDNN 5和CUDNN 6库。

    这个问题似乎与GPU上定义了一些
    tf.image
    处理函数有关,但从CPU上的队列向它们提供数据。我没有料到这会是一个问题,但当我将这些操作绑定到CPU时,一切都很好。

    我仍然没有在有限的测试用例中成功地重现这个问题,但似乎我已经将一些图像预处理操作附加到GPU上,但我是从基于CPU的队列中输入它们的。这并没有导致失败,但我得到了奇怪的数值不稳定性,并最终得到了NaN。我可以解决上面提到的问题,在GPU上运行,没有线程/队列,完全在CPU上运行,或者我的最终解决方案:使用带有设备('/CPU:0')的
    将图像处理操作固定到CPU上: