Chainer: обычная функция активации сигмоида - PullRequest
0 голосов
/ 23 июня 2019

Я хочу реализовать следующую сигмоидальную функцию с пользовательским параметром наклона k.

y = f(x)= 1/ ( 1+exp(-1*k*x))
gradient gy = k * f(x)*(1-f(x))

Я хочу использовать это в своем автоэнкодере.Как мне реализовать это в Chainer?

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Если k является постоянной величиной (т. Е. Гиперпараметром), F.sigmoid(k * x) должно просто работать.

Если k является параметром, который должен быть изучен так же, как и другие веса, вы можетехотите создать подкласс для ссылки типа L.PReLU и использовать ее так же, как и другие ссылки, например L.Linear и L.Convolution2D.Вы все еще можете реализовать метод forward для ссылки, как в приведенном выше простом выражении.

0 голосов
/ 23 июня 2019

Функция активации должна быть подклассом Chainer.FunctionNode ( FunctionNode docs ). Примером этого является функция Swish , предоставляемая библиотекой цепей. Вы можете наблюдать его источник здесь и клонировать его (или любую другую функцию, такую ​​как tanh ), чтобы внести необходимые изменения в декларацию операций вперед и назад в соответствии с вашими потребностями.

...