Python keras自定义sigmoid添加偏差
有一个需要添加偏见到我的自定义sigmod函数,并应用这作为最后一个激活层在NN。但我的回忆正确地进入了第一阶段。这说明这个公式有问题 自定义乙状结肠功能 召回严格按1进行 同时,没有乘法器和偏置的自定义sigmoid工作得很好Python keras自定义sigmoid添加偏差,python,python-3.x,keras,Python,Python 3.x,Keras,有一个需要添加偏见到我的自定义sigmod函数,并应用这作为最后一个激活层在NN。但我的回忆正确地进入了第一阶段。这说明这个公式有问题 自定义乙状结肠功能 召回严格按1进行 同时,没有乘法器和偏置的自定义sigmoid工作得很好 def custom_sigmoid(x): return 1 / (1 + K.exp(x)) 从这里可以看出 如何修改自定义sigmoid函数以使其工作?您的公式没有明显的问题,但它可能会导致-20*x-0.5的算术溢出,您能否检查x的范围。例如,如
def custom_sigmoid(x):
return 1 / (1 + K.exp(x))
从这里可以看出
如何修改自定义sigmoid函数以使其工作?您的公式没有明显的问题,但它可能会导致
-20*x-0.5
的算术溢出,您能否检查x
的范围。例如,如果x位于[-100100]
中,则原始的乙状结肠不会溢出,而自定义的乙状结肠会溢出。您可以在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"
实现该公式的代码似乎是正确的,问题似乎在于自定义sigmoid函数。这似乎符合您的
\u如何修改自定义sigmoid函数使其工作?\u
请求。然而,A)这是一个编程问答网站,不是数学网站,所以我不知道我们是否能提供帮助。B) 即使我们尝试过,我们怎么知道如何添加“偏见”?“这实在是太模糊了。”温德尔曼的想法不在数学部分,而是在keras如何在内部应用自定义激活函数。所有这些都可以很好地工作,但在Keras中不行,所以问题更多地在编程部分。我想我没有正确地将这个函数传递给keras,但我不知道到底是什么问题。但无论如何,谢谢你的邀请reply@IvanShelonik我不一定确定你在解释中所说的偏差是什么意思,但是如果你检查一下你所实现的自定义函数的曲线图,它有一个非常陡峭和短的过渡区域。这将使网络很难“学习”;调整网络权重。我认为这也可能与阿隆科的回答直接相关。使用此函数时,您很可能会遇到一些不足/溢出的情况,因为它的转换非常陡峭和短暂。//你为什么一开始就试图改变功能?
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)])
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"