Я определил пользовательскую функцию активации с обучаемым параметром в Keras, написав свой собственный слой ниже, и мне было интересно, есть ли простой способ вывести этот обучаемый параметр после каждой эпохи. Я знаю, что у Keras есть функция обратного вызова, которая позволила бы мне получить вес и прочее, но я не уверен, где хранится этот обучаемый параметр. Я включил свой код ниже, и любая помощь будет принята с благодарностью!
class CustomLayer(Layer):
def __init__(self, **kwargs):
super(CustomLayer, self).__init__(**kwargs)
def build(self, input_shape):
self.kernel = self.add_weight(name='kernel',
shape=(input_shape[1], 1),
initializer='uniform',
trainable=True)
super(CustomLayer, self).build(input_shape)
def call(self, x):
h1 = K.relu(x)
h2 = K.relu(-x)
return h1*self.kernal - h2*(1 - self.kernel)
def compute_output_shape(self, input_shape):
return input_shape
custom_activation=get_custom_objects().update({'custom_activation':
Activation(CustomLayer)})
# Create the model
model = Sequential()
model.add(Conv2D(192, (5, 5), input_shape=(3, 32, 32), padding='same',
activation=custom_activation, kernel_constraint=maxnorm(3)))
model.add(Conv2D(160, (1, 1), padding='same',
activation=custom_activation, kernel_constraint=maxnorm(3)))
model.add(Conv2D(96, (1, 1), padding='same', activation=custom_activation,
kernel_constraint=maxnorm(3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(192, (5, 5), padding='same',
activation=custom_activation, kernel_constraint=maxnorm(3)))
model.add(Conv2D(192, (1, 1), padding='same',
activation=custom_activation, kernel_constraint=maxnorm(3)))
model.add(Conv2D(192, (1, 1), padding='same',
activation=custom_activation, kernel_constraint=maxnorm(3)))
model.add(AveragePooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(192, (3, 3), padding='same',
activation=custom_activation, kernel_constraint=maxnorm(3)))
model.add(Conv2D(192, (1, 1), padding='same',
activation=custom_activation, kernel_constraint=maxnorm(3)))
model.add(Conv2D(10, (1, 1), padding='same', activation=custom_activation,
kernel_constraint=maxnorm(3)))
model.add(AveragePooling2D(pool_size=(8, 8)))
model.add(Flatten())
model.add(Dense(num_classes, activation='softmax'))