我想用自定义坡度参数k实现以下Sigmoid函数。
y = f(x)= 1/ ( 1+exp(-1*k*x))
gradient gy = k * f(x)*(1-f(x))
我想在我的自动编码器中使用它。如何在Chainer中实现呢?
答案 0 :(得分:0)
激活功能应该是Chainer.FunctionNode
(FunctionNode docs)的子类。链接器库提供的Swish函数就是一个例子。您可以观察其来源here并对其进行克隆(或其他任何功能,例如tanh),以对其前进和后退操作声明进行必要的更改,以使其符合您的需求。
答案 1 :(得分:0)
如果k
是常量(即超参数),则F.sigmoid(k * x)
应该可以正常工作。
如果k
是应该以与其他权重相同的方式学习的参数,则您可能希望将L.PReLU之类的链接作为子类,并像其他链接一样使用它,例如L.Linear
和L.Convolution2D
。您仍然可以像上面的简单表达式一样实现链接的forward
方法。