ValueError("无法使用`eval()`来评估张量:

时间:2017-12-21 23:01:05

标签: python multithreading tensorflow

为什么sess在训练中传递给消费者但是在eval()中没有成功 https://github.com/JasonPrendergast/AccuracyTestingaModel

我正在进行批处理精度测试并遇到错误:ValueError("无法使用eval()评估张量:无默认值" ValueError:无法使用eval()评估张量:未注册默认会话。使用with sess.as_default()或将显式会话传递给`eval(session = sess)

我一直在使用线程进行培训,并且没有任何问题将会话作为sess传递给消费者类,如下所示:

_, c = self.sess.run([self.optimizer, self.cost], feed_dict={x: np.array(batch_x),y: np.array(batch_y)})

运行正常我可以使用消费者类生成我的模型。但是当我尝试跑步时:

result = (self.sess.run(tf.argmax(self.prediction.eval(feed_dict={x:[np.array(batch_x)]}),1)))

我收到错误

  

追踪(最近一次通话):     文件" C:\ Users \ jimbob \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ threading.py",第914行,在_bootstrap_inner中       self.run()     文件" C:\ Users \ jimbob \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ threading.py",第862行,运行中       self._target(* self._args,** self._kwargs)     文件" D:/mine/jobs_network/NN_size_10k_batch/testAcc2_threads.py" ;,第198行,在运行中       result =(self.sess.run(tf.argmax(self.prediction.eval(feed_dict = {x:[np.array(batch_x)]}),1)))     文件" C:\ Users \ jimbob \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ framework \ ops.py",第541行,在eval中       return _eval_using_default_session(self,feed_dict,self.graph,session)     文件" C:\ Users \ jimbob \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ framework \ ops.py",第4071行,在_eval_using_default_session中       引发ValueError("无法使用eval()评估张量:无默认值"   ValueError:无法使用eval()评估张量:未注册默认会话。使用with sess.as_default()或将显式会话传递给eval(session=sess)

1 个答案:

答案 0 :(得分:0)

通过替换result = (self.sess.run(tf.argmax(self.prediction.eval(feed_dict={x:[np.array(batch_x)]}),1))),我达到了我想要的结果                 result=self.prediction.eval(session = self.sess,feed_dict={x: np.array(batch_x)}) result= np.array(result) outputarray.append(str((labellexicon[int(np.argmax(result))])))