keras是基于tensorflow封装的的高级API,Keras的优点是可以快速的开发实验,它能够以TensorFlow, CNTK, 或者 Theano 作为后端运行。
最简单的模型是 Sequential 顺序模型,它由多个网络层线性堆叠。对于更复杂的结构,你应该使用 Keras 函数式 API,它允许构建任意的神经网络图。
用Keras定义网络模型有两种方式,
1、Sequential 顺序模型
from keras.models import Sequential model = Sequential()
我们可以通过将网络层实例的列表传递给 Sequential 的构造器,来创建一个 Sequential模型,:
from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential([ Dense(32, input_shape=(784,)), Activation('relu'), Dense(10), Activation('softmax'), ])
也可以通过 .add()的方法将各层添加到网络中
from keras.layers import Dense from keras.model import Sequential model = Sequential() model.add(Dense(units=64, activation='relu', input_dim=100)) model.add(Dense(units=10, activation='softmax'))
模型需要知道它所期望的出入尺寸,所以模型中的第一层需要接收关于出入尺寸的信息
- 传递一个
input_shape
参数给第一层。它是一个表示尺寸的元组 (一个整数或None
的元组,其中None
表示可能为任何正整数)。在input_shape
中不包含数据的 batch 大小。 - 某些 2D 层,例如
Dense
,支持通过参数input_dim
指定输入尺寸,某些 3D 时序层支持input_dim
和input_length
参数。 - 如果你需要为你的输入指定一个固定的 batch 大小(这对 stateful RNNs 很有用),你可以传递一个
batch_size
参数给一个层。如果你同时将batch_size=32
和input_shape=(6, 8)
传递给一个层,那么每一批输入的尺寸就为(32,6,8)
。
model.add(Dense(32, input_shape=(784,))) # 这两段代码是等价的 model.add(Dense(32, input_dim=784))
Dense的参数
activation: 激活函数
kernel_initializer和bias_initializer: 权重和偏置项的初始化方案
kernel_regularizer和bias_regularizer: 权重和偏置项的正则方案,L1或L2
layers.Dense(64, activation='sigmoid') # 或者 layers.Dense(64, activation=tf.sigmoid) # 一个线性层,系数0.01的l1正则化权重 layers.Dense(64, kernel_regularizer=tf.keras.regularizers.l1(0.01)) # 将因子0.01的L2正则化的线性层应用于偏置项 layers.Dense(64, bias_regularizer=tf.keras.regularizers.l2(0.01)) # 初始化为随机正交矩阵的线性层 layers.Dense(64, kernel_initializer='orthogonal') # 一个线性层,偏置项初始化为2.0s layers.Dense(64, bias_initializer=tf.keras.initializers.constant(2.0))
View Code
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Keras Sequential顺序模型 - Python技术站