Tensorflow - 在cpu上工作,在gpu上返回成本为nan

时间:2017-09-14 17:23:43

标签: python machine-learning tensorflow nan

任何人都可以解释或纠正我为什么在GPU上产生Nan Loss并在CPU上正常工作?在GPU上,第一次计算c的输出很好但是在第一次计算之后它变成了纳米并保持这种状态。

在我将生产者消费者线程放入程序之前,它正在GPU上工作。

  class Consumer:
        def __init__(self,maximum,sess,optimizer,cost):

            self.nextTime=1
            self.max=maximum
            self.i=0
            self.sess=sess
            self.optimizer=optimizer
            self.cost=cost
        def run(self):
            global qfeatures,finishedflag,qlabels,errorcount,epoch_loss
            while (self.i<(self.max-errorcount)):
                if(self.nextTime<time.clock() and not qfeatures.empty()):
                    if(self.i/100).is_integer():
                        print('remove'+str(self.i))
                        print(epoch_loss)
                    batch_x=qfeatures.get()
                    batch_y=qlabels.get()
                    #print('Removing')
                    batch_x=np.array(batch_x)
                    batch_x = batch_x.reshape((batch_size,n_chunks,chunk_size))
                    _, c = self.sess.run([self.optimizer, self.cost], feed_dict={x: batch_x,y: np.array(batch_y)})
                    if math.isnan(c):
                        sys.exit('nan error')

                    epoch_loss += c
                    print(epoch_loss)
                    self.nextTime+=(random.random()*2)/100
                    self.i+=1

            finishedflag=1
            print('finished out')

完整代码也可以在this GitHub Repository中找到。

0 个答案:

没有答案