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。
我正在制作一个类似于 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。