Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python keras自定义sigmoid添加偏差_Python_Python 3.x_Keras - Fatal编程技术网

Python keras自定义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的范围。例如,如

有一个需要添加偏见到我的自定义sigmod函数,并应用这作为最后一个激活层在NN。但我的回忆正确地进入了第一阶段。这说明这个公式有问题

自定义乙状结肠功能

召回严格按1进行

同时,没有乘法器和偏置的自定义sigmoid工作得很好

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"