Keras有两种类型的模型,序贯模型(Sequential)和函数式模型(Model),函数式模型应用更为广泛,序贯模型是函数式模型的一种特殊情况。
a)序贯模型(Sequential):单输入单输出,一条路通到底,层与层之间只有相邻关系,没有跨层连接。这种模型编译速度快,操作也比较简单
b)函数式模型(Model):多输入多输出,层与层之间任意连接。这种模型编译速度慢。
Keras模块结构
keras搭建神经网络步骤
1.Dense
全连接层(对上一层的神经元进行全部连接,实现特征的非线性组合),这个全连接层封装了output = activation(tf.matmul(input, kernel) + bias)这一线性变换+激活函数的计算操作,以及 kernel 和 bias 两个变量。当不指定激活函数时(即 activation(x) = x ),这个全连接层就等价于我们上述的线性变换。全连接层可能是我们编写模型时使用最频繁的层。
keras.layers.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)
参数说明如下:
units:该层有几个神经元,代表该层的输出维度
activation:该层使用的激活函数
use_bias:是否添加偏置项
kernel_initializer:权重初始化方法
bias_initializer:偏置值初始化方法
kernel_regularizer:权重规范化函数
bias_regularizer:偏置值规范化方法
activity_regularizer:输出的规范化方法
kernel_constraint:权重变化限制函数
bias_constraint:偏置值变化限制函数
2.Dropout
为输入数据施加Dropout。Dropout将在训练过程中每次更新参数时随机断开一定百分比(rate)的输入神经元,Dropout层用于防止过拟合。
keras.layers.Dropout(rate, noise_shape=None, seed=None)
参数
rate:0~1的浮点数,控制需要断开的神经元的比例
noise_shape:整数张量,为将要应用在输入上的二值Dropout mask的shape,例如你的输入为(batch_size, timesteps, features),并且你希望在各个时间步上的Dropout mask都相同,则可传入noise_shape=(batch_size, 1, features)。
seed:整数