'Args:
scale (float, optional): Amount by which to scale the backpropagated error (default: 1)
cost_type (string): select discriminator cost "dis" or generator cost "gen"
cost_func (string): cost function: choice from "original", "modified" and "wasserstein"
(Goodfellow et al. 2014, Arjovski et al. 2017)'

def __init__(self, scale=1.0, cost_type='dis', func='modified'):

    self.scale = scale
    self.cost_type = cost_type
    self.func = func
    err_str = 'Illegal    GAN    cost    type,    can    only    be:    gen    or    dis'
    assert (self.cost_type in ['dis', 'gen'])
    err_str = 'Unsupported    GAN    cost    function,    supported:    original,    modified,    wasserstein'
    assert (self.func in ['original', 'modified', 'wasserstein']), err_str
    self.one_buf = self.be.iobuf(1)
    self.one_buf.fill(1)
