繁体   English   中英

keras 自定义 sigmoid 添加偏差

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM