[英]keras custom sigmoid adding bias
需要为我的自定义 sigmod 函数添加偏差,并将其用作 NN 中的最后一个激活层。 但我的回忆正确地为 1。这表明公式有问题。
自定义 sigmoid 函数
召回严格进入 1
def custom_sigmoid(x):
return 1 / (1 + K.exp(-20*x - 0.5))
同时,没有乘数和偏差的自定义 sigmoid 效果很好。
def custom_sigmoid(x):
return 1 / (1 + K.exp(x))
可以在这里看到
self.model_.add(keras.layers.Dense(1, activation=custom_sigmoid))
self.model_.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=[precision_threshold(0.7), recall_threshold(0.7)])
如何修改自定义 sigmoid 函数以使其工作?
您的公式没有明显问题,但很可能导致-20*x - 0.5
算术溢出,您可以检查x
的范围。 例如,如果 x 在[-100, 100]
,原始 sigmoid 不会溢出,而您自定义的 sigmoid 会溢出。 你可以在 numpy 中做一个简单的实验:
import numpy as np
def original_sigmoid(x):
return 1 / (1 + np.exp(x))
def custom_sigmoid(x):
return 1 / (1 + np.exp(-20 * x - 0.5))
x = np.linspace(-100, 100)
print(original_sigmoid(x))
print(custom_sigmoid(x)) # this will output a warning: "RuntimeWarning: overflow encountered in exp"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.