我应该在哪里定义 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)。
所以你根本不需要定义梯度或导数,它会自动为你计算。
我是 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)。
所以你根本不需要定义梯度或导数,它会自动为你计算。