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

Where should i define derivative from custom activation function in Keras

我是 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

您可以在同一脚本中定义开始的自定义指标。

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

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

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

所以你根本不需要定义梯度或导数,它会自动为你计算。