我应该在哪里定义Keras中自定义激活函数的派生

时间:2019-04-24 06:49:41

标签: keras activation-function sigmoid

我是python,深度学习和神经网络的初学者。我做了自定义激活功能。我想知道何时从Sigmoid生成自定义激活函数,我应该知道什么?我应该在哪里定义自定义激活函数的导数?

我尝试阅读有关自动差异的文章。但是我不确定keras是否会自动派生我的自定义Sigmoid吗?

我在keras / activation.py中的自定义激活功能

def tempsigmoid(x, temp=1.0):
    return K.sigmoid(x/temp)

我的模特

def baseline_model():
    # create model
    model = Sequential()
    model.add(Conv2D(101, (5, 5), input_shape=(1, 28, 28), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.2))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dense(num_classes, activation='tempsigmoid'))
    # Compile model
    model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
    return model

2 个答案:

答案 0 :(得分:0)

您可以在同一脚本中定义用于启动的自定义指标。

您不需要提供引号'',您可以简单地写:

model.add(Dense(num_classes, activation=tempsigmoid))

答案 1 :(得分:0)

是的,Keras使用自动区分,因为它仅支持具有此功能的后端(例如TensorFlow)。

因此您完全不需要定义梯度或导数,它将自动为您计算。