code: def _eval(self, node):
  		
  		# if node.name == 'Momentum':
  		# 	pdb.set_trace()
  		if isinstance(node,HTOp):
  			# All Tensors MUST be in the cache.
  			feed_dict=dict((t,self._cache[t.name]) for t in node.inputs)
  			node.run(feed_dict) # this will populate self._cache on its own
  		else: # is a TensorFlow node
  			if isinstance(node,tf.Tensor):
  				result=self.session.run(node,self._cache)
  				self._cache[node.name]=result
  			else:
  				# is an operation
  				if node.type =='Assign' or node.type == 'AssignAdd' or node.type == 'AssignSub':
  					# special operation that takes in a tensor ref and mutates it
  					# unfortunately, we end up having to execute nearly the full graph?
  					# alternatively, find a way to pass the tensor_ref thru the feed_dict
  					# rather than the tensor values.
  					self.session.run(node,self._original_feed_dict)
docs: node is a TensorFlow Op or Tensor from self._exe_order