Keras Layer 常见网络层

keras.layer

keras 里面的几个基础layer

1. 常用层

1.1. Dense

Dense就是常用的全连接层。

$$output = activation(dot(input, kernel)+bias)$$

input shape=(None,n)
output shape=(None,units)

其中activation是逐元素计算的激活函数,kernel是本层的权值矩阵,bias为偏置向量,只有当use_bias=True才会添加。

Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

1.2. Flatten

用来将输入压平,即把多维的输入一维化,常用在从卷积层到全连接层的过渡。Flatten不影响batch的大小。

input_shape=(None,n,m,x,y,z)
output_shape=(None,n*m*x*y,z)
_________________________________________________________________
lstm_24 (LSTM)               (None, 12, 10)            3000      
_________________________________________________________________
flatten_3 (Flatten)          (None, 120)               0         
_________________________________________________________________

1.3. Embedding

Embedding层只能作为模型的第一层

keras.layers.embeddings.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=False, input_length=None)

2. 卷积层

3. 池化层

4. 局部连接层

5. 循环层

6. 嵌入层

7. 激活层

8. BN层

9. 噪声层

10. 包装器

11. 自定义层

将自定义的tensorflow图写入keras

参考 Tensorflow 官方:通过子类化创建新的层和模型

class Linear(keras.layers.Layer):
    def __init__(self, units=32, input_dim=32):
        super(Linear, self).__init__()
        w_init = tf.random_normal_initializer()
        self.w = tf.Variable(
            initial_value=w_init(shape=(input_dim, units), dtype="float32"),
            trainable=True,
        )
        b_init = tf.zeros_initializer()
        self.b = tf.Variable(
            initial_value=b_init(shape=(units,), dtype="float32"), trainable=True
        )

    def call(self, inputs):
        return tf.matmul(inputs, self.w) + self.b

如果你觉得这篇文章对你有帮助,不妨请我喝杯咖啡,鼓励我创造更多!