'Returns the binary cross entropy cost.
Args:
y (Tensor or OpTree): Output of previous layer or model
t (Tensor or OpTree): True targets corresponding to y
Returns:
OpTree: Returns the binary cross entropy cost'

def __call__(self, y, t):

    assert (y.shape == t.shape), 'CrossEntropy    requires    network    output    shape    to    match    targets'
    return self.be.sum(((self.be.safelog((1 - y)) * (t - 1)) - (self.be.safelog(y) * t)), axis=0)
