sigmoid 函数只适用于 dense() 层之后吗?

Is sigmoid function only applicable after dense() layer?

我正在制作一个类似于 SE-Net 的网络(https://github.com/titu1994/keras-squeeze-excite-network/blob/master/se.py) 使用keras,但与它完全不同。

假设我想制作一些图层序列,例如:

import keras

Input = keras.model.Input((None,None,3))
x1 = keras.layers.Conv2d(filters = 32, kernel_size = (3,3))(Input)
x_gp = keras.layers.GlobalAveragePooling()(x1)
x2 = keras.layers.Conv2d(filters = 32, kernel_size = (1,1))(x_gp)
x3 = keras.layers.Conv2d(filters = 8, kernel_size = (1,1))(x2)
x2_ = keras.layers.Conv2d(filters = 32, kernel_size = (1,1))(x3)
x_se = keras.activation.sigmoid()(x2_)

我想知道像这样应用 x_se 是可编程的。如果我做错了请告诉我。

你当然可以实验 sigmoid 作为 cnn 层的激活,但 sigmoid 不与 cnn 层一起使用的原因是:

1. Sigmoid 函数是单调的,但它的导数不是单调的,因此您的训练可能会卡住

2。 S形范围:[0,1]

如果你正在试验带有 cnn 层的 sigmoid,那么我建议你只将它用于几个层。 你可以试试 swish