def fprop(self, inputs, inference=False, beta=0.0):
        if self.inputs is None or self.inputs.base is not inputs:
            self.inputs = inputs.reshape((self.nfm, -1))

        if inference:
            return self._fprop_inference(self.inputs, beta)

        if self.compute_batch_sum:
            self.xsum[:] = self.be.sum(self.inputs, axis=1)

        self.be.compound_fprop_bn(
            self.inputs, self.xsum, self.xvar, self.gmean, self.gvar,
            self.gamma, self.beta, self.outputs, self.eps, self.rho, beta, self.relu)

        return self.outputs
Checks for valid shapes for args of MatMul
dataset/ETHPy150Open NervanaSystems/neon/neon/layers/layer.py/BatchNorm.fprop--crossover with--dataset/ETHPy150Open sympy/sympy/sympy/matrices/expressions/matmul.py/validate