I am trying to produce a CNN using Keras, and wrote the following code:
JavaScript
x
23
23
1
batch_size = 64
2
epochs = 20
3
num_classes = 5
4
5
cnn_model = Sequential()
6
cnn_model.add(Conv2D(32, kernel_size=(3, 3), activation='linear',
7
input_shape=(380, 380, 1), padding='same'))
8
cnn_model.add(Activation('relu'))
9
cnn_model.add(MaxPooling2D((2, 2), padding='same'))
10
cnn_model.add(Conv2D(64, (3, 3), activation='linear', padding='same'))
11
cnn_model.add(Activation('relu'))
12
cnn_model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))
13
cnn_model.add(Conv2D(128, (3, 3), activation='linear', padding='same'))
14
cnn_model.add(Activation('relu'))
15
cnn_model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))
16
cnn_model.add(Flatten())
17
cnn_model.add(Dense(128, activation='linear'))
18
cnn_model.add(Activation('relu'))
19
cnn_model.add(Dense(num_classes, activation='softmax'))
20
21
cnn_model.compile(loss=keras.losses.categorical_crossentropy,
22
optimizer=keras.optimizers.Adam(), metrics=['accuracy'])
23
I want to use Keras’s LeakyReLU activation layer instead of using Activation('relu')
. However, I tried using LeakyReLU(alpha=0.1)
in place, but this is an activation layer in Keras, and I get an error about using an activation layer and not an activation function.
How can I use LeakyReLU in this example?
Advertisement
Answer
All advanced activations in Keras, including LeakyReLU
, are available as layers, and not as activations; therefore, you should use it as such:
JavaScript
1
6
1
from keras.layers import LeakyReLU
2
3
# instead of cnn_model.add(Activation('relu'))
4
# use
5
cnn_model.add(LeakyReLU(alpha=0.1))
6