如何在Python中使用Keras LeakyReLU?
conv-neural-network
keras
machine-learning
neural-network
15
0

我正在尝试使用Keras生成CNN,并编写了以下代码:

batch_size = 64
epochs = 20
num_classes = 5

cnn_model = Sequential()
cnn_model.add(Conv2D(32, kernel_size=(3, 3), activation='linear',
                     input_shape=(380, 380, 1), padding='same'))
cnn_model.add(Activation('relu'))
cnn_model.add(MaxPooling2D((2, 2), padding='same'))
cnn_model.add(Conv2D(64, (3, 3), activation='linear', padding='same'))
cnn_model.add(Activation('relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))
cnn_model.add(Conv2D(128, (3, 3), activation='linear', padding='same'))
cnn_model.add(Activation('relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))
cnn_model.add(Flatten())
cnn_model.add(Dense(128, activation='linear'))
cnn_model.add(Activation('relu'))
cnn_model.add(Dense(num_classes, activation='softmax'))

cnn_model.compile(loss=keras.losses.categorical_crossentropy,
                  optimizer=keras.optimizers.Adam(), metrics=['accuracy'])

我想使用KerasLeakyReLU激活层,而不是使用Activation('relu') 。但是,我尝试LeakyReLU(alpha=0.1)使用LeakyReLU(alpha=0.1) ,但这是LeakyReLU(alpha=0.1)中的激活层,并且在使用激活层而不是激活函数时遇到错误。

在此示例中,如何使用LeakyReLU

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

LeakyReLU所有高级激活,包括LeakyReLU ,都可以作为图层使用 ,而不能作为激活使用;因此,您应该这样使用它:

from keras.layers import LeakyReLU

# instead of cnn_model.add(Activation('relu'))
# use
cnn_model.add(LeakyReLU(alpha=0.1))
收藏
评论

因此,在这里,Conv2D层的默认激活功能设置为“线性”。编写的内容是否正确:( 我现在要通过以下几行将Conv2D层的激活功能设置为LeakyRelu?

model.add(Conv2D(32, kernel_size=(3, 3),
           input_shape=(380,380,1))
model.add(LeakyReLU(alpha=0.01))
收藏
评论

有时,您只想直接替换内置的激活层,而不必为此添加额外的激活层。

为此,可以使用activation参数可以是可调用对象的事实。

lrelu = lambda x: tf.keras.activations.relu(x, alpha=0.1)
model.add(Conv2D(..., activation=lrelu, ...)

由于Layer也是可调用对象,因此您也可以简单地使用

model.add(Conv2D(..., activation=tf.keras.layers.LeakyReLU(alpha=0.1), ...)

现在可以在TF2中使用。这是一个更好的解决方案,因为它避免了@ChristophorusReyhan提到的在加载过程中使用custom_object的需要。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号