def _push_allocation_config(self):
        # Configure readout. That involves `get_dim` requests
        # to the transition. To make sure that it answers
        # correctly we should finish its configuration first.
        self.transition.push_allocation_config()
        transition_sources = (self._state_names + self._context_names +
                              self._glimpse_names)
        self.readout.source_dims = []
        for name in self.readout.source_names:
            if name in transition_sources:
                self.readout.source_dims.append(self.transition.get_dim(name))
            elif self.language_model and name in self._lm_state_names:
                self.readout.source_dims.append(
                    self.get_dim(name))
            else:
                self.readout.get_dim(name)


        # Configure fork. For similar reasons as outlined above,
        # first push `readout` configuration.
        self.readout.push_allocation_config()
        feedback_name, = self.readout.feedback.outputs
        self.fork.input_dim = self.readout.get_dim(feedback_name)
        self.fork.output_dims = self.transition.get_dims(
            self.fork.apply.outputs)
dataset/ETHPy150Open rizar/attention-lvcsr/libs/blocks/blocks/bricks/sequence_generators.py/BaseSequenceGenerator._push_allocation_config/original