【发布时间】:2019-06-23 11:22:16
【问题描述】:
我想用自定义斜率参数 k 实现以下 sigmoid 函数。
y = f(x)= 1/ ( 1+exp(-1*k*x))
gradient gy = k * f(x)*(1-f(x))
我想在我的自动编码器中使用它。如何在 Chainer 中实现这一点?
【问题讨论】:
标签: python neural-network autoencoder chainer
我想用自定义斜率参数 k 实现以下 sigmoid 函数。
y = f(x)= 1/ ( 1+exp(-1*k*x))
gradient gy = k * f(x)*(1-f(x))
我想在我的自动编码器中使用它。如何在 Chainer 中实现这一点?
【问题讨论】:
标签: python neural-network autoencoder chainer
如果k 是常数(即超参数),F.sigmoid(k * x) 应该可以正常工作。
如果k 是一个应该以与其他权重相同的方式学习的参数,您可能希望将L.PReLU 之类的链接子类化,并像其他链接一样使用它,例如L.Linear 和 L.Convolution2D。您仍然可以像上面的简单表达式一样实现链接的forward 方法。
【讨论】:
激活函数应该是Chainer.FunctionNode (FunctionNode docs) 的子类。一个例子是chainer库提供的Swish函数。您可以观察其源代码here 并对其进行克隆(或任何其他函数,例如tanh),以对其前向和后向操作声明进行必要的更改,以满足您的需求。
【讨论】: