简单上手Sequential模型

序贯模型式多个网络层的线性堆叠。

    1. 通过向Sequential模型传递一个layer的list构造模型;

from keras.models import Sequential
from keras.layers import Dense, Activation


'''
参数说明:
Dense表示设置全连接层输入和输出,然后设置第一层中的激活函数为‘relu’;
同理第二层的输入式第一层的输出,因此只定义了输出和激活函数。
'''

model = Sequential([
    Dense(32, input_dim=784), 
    Activation('relu'),
    Dense(10), 
    Activation('softmax'), 
])

    2. 通过add()方法将layer一个个加入到模型中;

model.add(Dense(15))
model.add(Activation('relu'))

    3.指定输入数据的shape

    模型需要知道输入数据的shape,因此Sequential的第一层需要设置输入数据的shape,后面层只需要控制设置输出就ok了,输入能够根据前面的输出进行自适应匹配。

  •  传递input_shape关键字给第一层(需要注意的式input_shape是一个tuple类型数据);
  • 如果输入指定规定大小的batch-size固定输入数据量,例如想固定输入数据为100的张量,数据张量的shape是(6,6),那么只需要简单的设置batch_size = 100和input_shape=(6,6);
model = Sequential()
model.add(Dense(100, batch_size=100, input_shape=(6, 6)))
model.add(Activation('relu'))
model.add(Dense(40))
model.add(Activation('softmax'))

    4.学习过程配置

    在训练模型之前需要对模型的学习过程参数进行相关的设置,利用compile进行配置。compile接受三个参数:

  • 优化器optimizer:该参数可以指定为预定义的优化器名称,如rmsprop、adagrad,或者一个optimizer对象。
  • 损失函数
  • 指标。
"""
设置学习过程相关参数
参数说明:
lr:大于或者等于0的浮点数,表示学习率
momentum:大于或等于0的浮点数,动量参数
decay:大于或等于0的数,每次更新之后学习率的衰减
nesterov:布尔,确定是否使用Nesterov动量
"""
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer='sgd',metrics=['accuracy'])

    5.训练

    keras以numpy数组作为输入数据和标签类型。训练一般使用fit函数。一个简单的例子,详细使用可以参见keras中文文档。

model = Sequential()
model.add(Dense(100, input_dim=100))
model.add(Activation('relu'))
model.add(Dense(1))
model.add(Activation('sigmoid'))

"""
设置学习过程相关参数
参数说明:
lr:大于或者等于0的浮点数,表示学习率
momentum:大于或等于0的浮点数,动量参数
decay:大于或等于0的数,每次更新之后学习率的衰减
nesterov:布尔,确定是否使用Nesterov动量
"""
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])
data = np.random.random((1000, 100))
label = np.random.randint(2, size=(1000, 1))
model.fit(data, label, epochs=10)



你可能感兴趣的:(DeepLearning)