Где я должен определить производную от пользовательской функции активации в Керасе - PullRequest
0 голосов
/ 24 апреля 2019

Я новичок в Python, глубокое обучение и нейронные сети. Я сделал пользовательскую функцию активации. Что я хочу знать, когда я делаю пользовательскую функцию активации, которая является корнем из сигмоида, где я должен определить производную для моей пользовательской функции активации?

Я пробовал читать об автоматической дифференциации. но я не уверен, что keras автоматически выводит мой пользовательский сигмоид?

Моя пользовательская функция активации в keras / активации.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 голосов
/ 24 апреля 2019

Да, Keras использует автоматическое дифференцирование, поскольку поддерживает только бэкэнды с этой функцией (например, TensorFlow).

Так что вам вообще не нужно определять градиент или производную, он будет автоматически рассчитан для вас.

0 голосов
/ 24 апреля 2019

Вы можете определить пользовательскую метрику для запуска в том же скрипте.

Вам не нужно указывать цитаты '', вы можете просто написать:

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