def get(self, name):
if name in self._storage:<EOL><INDENT>return self._storage[name]<EOL><DEDENT>elif name in self._providers:<EOL><INDENT>value = self._storage[name] = self._providers[name](self)<EOL>return value<EOL><DEDENT>elif name.startswith('<STR_LIT>'):<EOL><INDENT>rollout_name = name[<NUM_LIT:8>:]<EOL>value = self._storage[name] = self.rollout.batch_tensor(rollout_name)<EOL>return value<EOL><DEDENT>else:<EOL><INDENT>raise RuntimeError(f"<STR_LIT>")<EOL><DEDENT>
Return a value from this evaluator.

Because tensor calculated is cached, it may lead to suble bugs if the same value is used multiple times
with and without no_grad() context.

It is advised in such cases to not use no_grad and stick to .detach()