自定义sigmoid激活功能

时间:2017-11-03 00:58:15

标签: python neural-network keras conv-neural-network activation-function

因此,我使用Keras实现卷积神经网络。在我的解码拓扑结束时,有一个带有sigmoid激活的Conv2D层。

decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

基本上,我想更改sigmoid实现,我的目标是使其成为二进制类型激活,如果sigmoid函数获取低于0.5的值则返回0,如果值等于或高于0.5,则返回1.

在Tensorflow实现中搜索,我发现sigmoid是这样的:

def sigmoid(x, name=None):
    with ops.name_scope(name, "Sigmoid", [x]) as name:
        x = ops.convert_to_tensor(x, name="x")
        return gen_math_ops._sigmoid(x, name=name)

我在操作gen_math_ops返回时遇到问题,将其值与0.5阈值进行比较。我知道通常如果由于张量类型的限制而无法使用,那么我应该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

只是围绕你的输出。

label = g.vp["label"]
for t in range(args.num_trials):
    for b in budget:
        train, test = train_test_split(n, train_size=b, random_state=t)
        y_true = [label[t] for t in test]

请记住,这种硬sigmoid在任何地方都有衍生物,因此您无法使用任何基于渐变的技术进行训练。

相关问题