in crlapi/sl/architectures/firefly_vgg/sp/module.py [0:0]
def _d2_actv(self, x, beta=3.):
if self.actv_fn == 'relu':
# use 2nd order derivative of softplus for approximation
s = torch.sigmoid(x*beta)
return beta*s*(1.-s)
elif self.actv_fn == 'softplus':
s = torch.sigmoid(x)
return s*(1.-s)
elif self.actv_fn == 'rbf':
return (x.pow(2)-1)*(-x.pow(2)/2).exp()
elif self.actv_fn == 'leaky_relu':
s = torch.sigmoid(x*beta)
return beta*s*(1.-s)*(1.-self.leaky_alpha)
elif self.actv_fn == 'swish':
s = torch.sigmoid(x)
return s*(1.-s) + s + x*s*(1.-s) - (s.pow(2) + 2.*x*s.pow(2)*(1.-s))
elif self.actv_fn == 'sigmoid':
s = torch.sigmoid(x)
return (s-s.pow(2)) * (1.-s).pow(2)
elif self.actv_fn == 'tanh':
h = torch.tanh(x)
return -2.*h * (1-h.pow(2))
elif self.actv_fn == 'none':
return torch.ones_like(x)
else:
raise NotImplementedError