def append(self, obs0, action, is_teacher=False, training=True):
    "Keep separate copies of obs0, obs1. So it's not memory efficient.\n        "
    if (not training):
        return
    if is_teacher:
        assert (not self.done_adding_teach), self.nb_teach
        assert (self.nb_teach < self.limit), self.nb_teach
        self.nb_teach += 1
    self.observations0.append(obs0, is_teacher)
    self.actions.append(action, is_teacher)
Keep separate copies of obs0, obs1. So it's not memory efficient.
def append(self, obs0, action, is_teacher=False, training=True):
    "\n        "
    if (not training):
        return
    if is_teacher:
        assert (not self.done_adding_teach), self.nb_teach
        assert (self.nb_teach < self.limit), self.nb_teach
        self.nb_teach += 1
    self.observations0.append(obs0, is_teacher)
    self.actions.append(action, is_teacher)