Пример #1
0
 def sampleIndex(self,trace):
   if self.block == "one": return constructScaffold(trace,[trace.getNodesInBlock(self.scope,trace.sampleBlock(self.scope))])
   elif self.block == "all": return constructScaffold(trace,[trace.getAllNodesInScope(self.scope)])
   elif self.block == "ordered": return constructScaffold(trace,trace.getOrderedSetsInScope(self.scope))
   elif self.block == "ordered_range": 
     assert self.interval
     return constructScaffold(trace,trace.getOrderedSetsInScope(self.scope),self.interval)
   else: return constructScaffold(trace,[trace.getNodesInBlock(self.scope,self.block)])
Пример #2
0
 def sampleIndex(self,trace):
   program = trace.proposal_programs[self.program_name]
   node_set = set()
   for target in program.tlist:
     for node in trace.getNodesInBlock(target[0],target[1]):
       node_set.add(node)
       # print node.value
   return constructScaffold(trace, [node_set])
Пример #3
0
 def __call__(self, values):
   """Returns the gradient of the weight of regenerating along
   an (implicit) scaffold starting with the given values.  Smashes
   the trace, but leaves it a torus.  Assumes there are no delta
   kernels around."""
   # TODO Assert that no delta kernels are requested?
   self.fixed_regen(values)
   new_scaffold = constructScaffold(self.trace, [set(self.pnodes)])
   registerDeterministicLKernels(self.trace, new_scaffold, self.pnodes, values)
   (_, rhoDB) = detachAndExtract(self.trace, new_scaffold.border[0], new_scaffold, True)
   self.scaffold = new_scaffold
   return [rhoDB.getPartial(pnode) for pnode in self.pnodes]
Пример #4
0
 def sampleLocalIndex(self,trace,local_child):
     assert(isinstance(local_child, LookupNode) or isinstance(local_child, OutputNode))
     setsOfPNodes = [set([local_child])]
     return constructScaffold(trace,setsOfPNodes,updateValue=self.updateValue,updatedNodes=self.updatedNodes)