Table of Contents
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