def fprop(self, inputs, inference=False, beta=0.0):
        x = inputs
        if inference:
            inference_revert_list = []

        for l in self.layers:
            l.revert_list = []
            altered_tensor = l.be.distribute_data(x, l.parallelism)
            if altered_tensor:
                if inference:
                    inference_revert_list.append((l, altered_tensor))
                else:
                    l.revert_list.append(altered_tensor)

            if l is self.layers[-1] and beta != 0:
                x = l.fprop(x, inference, beta=beta)
            else:
                x = l.fprop(x, inference)

        if inference:
            for layer, tensor in inference_revert_list:
                layer.be.revert_tensor(tensor)

        return x
TODO:  Handle final layers that don't own their own outputs (bias, activation)
dataset/ETHPy150Open NervanaSystems/neon/neon/layers/container.py/Sequential.fprop