gpt4 book ai didi

python - 用自定义激活替换 sigmoid 激活

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:05 25 4
gpt4 key购买 nike

我正在尝试用定义为的分段线性函数替换 Keras sigmoid 函数:

def custom_activation_4(x):
if x < -6:
return 0
elif x >= -6 and x < -4:
return (0.0078*x + 0.049)
elif x >= -4 and x < 0:
return (0.1205*x + 0.5)
elif x >= 0 and x < 4:
return (0.1205*x + 0.5)
elif x >= 4 and x < 6:
return (0.0078*x + 0.951)
else:
return 1;

当我尝试运行它时:

classifier_4.add(Dense(output_dim = 18, init = 'uniform', activation = custom_activation_4, input_dim = 9))

编译器抛出错误提示:

Using a `tf.Tensor` as a Python `bool` is not allowed.

我对此进行了研究并了解到,我将变量 x 视为一个简单的 python 变量,而它是一个张量。这就是不能将其视为简单 bool 变量的原因。我还尝试使用 tensorflow cond 方法。这里如何处理和使用 x 作为张量?非常感谢您提供的所有帮助。

最佳答案

您的自定义激活被编写为单个 float 的函数,但您想将其应用于整个张量。最好的方法是使用 tf.where。有点像

def custom_activation_4(x):
orig = x
x = tf.where(orig < -6, tf.zeros_like(x), x)
x = tf.where(orig >= -6 and orig < -4, (0.0078*x + 0.049), x)
x = tf.where(orig >= -4 and orig < 0, (0.1205*x + 0.5), x)
x = tf.where(orig >= 0 and orig < 4, (0.1205*x + 0.5), x)
x = tf.where(orig >= 4 and orig < 6, (0.0078*x + 0.951), x)
return tf.where(orig >= 6, 1, x)

关于python - 用自定义激活替换 sigmoid 激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52435394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com