Sequential模型

序贯模型是多个网络层的线性堆叠,可以通过向sequential模型传递一个layer的list来构造该模型:

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

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

也可以通过.add()一个一个添加

model=Sequential()
model.add(Dense(32,input_shape=(784,))
model.add(Activation('relu'))

指定输入数据的shape

模型需要知道输入数据的shape,因此,sequential的第一层就需要接受一个关于输入数据shape的参数,后面的各个层则可以自动的推导出中间数据的shape,因此不需要为每一层指定,(第一层一定要指定),有几个方法指定第一层的shape

  • 传递一个input_shape的关键字给第一层,input_shape可以是一个数字,其中也可以传递None,如果填入None则表示这个位置可以是任何的正数,数据的batch不应该包含在其中,
  • 有些2D层,如dense可以通过指定其输入维度,input_dim来来隐含的指定输入数据的shape,一些3D层可以通过指定input_dim和input_length来指定输入的shape
    -如果你需要为输入指定一个固定大小的batch_size可以传递一个batch_size参数到一个层里面。例如你想要输入的张量batch的大小是31,shape是(6,8),则你需要传递batch_size和input_shape=(6,8)

编译

在训练模型之前,我们需要通过compile来对学习过程进行配置,compile接受三个参数,

  • 优化器optimizer:该参数可以指定为预定义的优化器名字,如rmsprop,adagrad或者一个Optimizer类的对象,详细见:http://keras-cn.readthedocs.io/en/latest/other/optimizers/
  • 损失函数:指定预定义的损失函数名字,categorical_crossentropy,mes,详细见:http://keras-cn.readthedocs.io/en/latest/other/objectives/
  • 指定列表的metrics:对于分类问题,一般设定为额metrics["accuracy"],指标可以是一个预定义的名字,也可以是一个用户制定的函数,可以参考:http://keras-cn.readthedocs.io/en/latest/getting_started/other/metrices.md
# For a multi-class classification problem
model.compile(optimizer="rmsprop",loss='categorical_crossentropy',metrics=['accuracy'])

# For a binary classification problem
model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])


# For a mean squared error regression problem
model.compile(optimizer='rmsprop',loss='mse')

# 自定义的metrics
import keras.backend as k
def mean_pred(y_true,y_pred):
    return(k.mean(y_pred))

model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy',mean_pred])

训练

keras一般用Numpy数组作为输入数据和标签的数据类型。训练模型一般使用fit函数

model=Senquential()
model.add(Dense(32,activation='relu',input_dim=100))
model.add(Dense(1,activation='sigmod',))
model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['acuracy'])
# 生成哑变量
import numpy as np
data=np.random.random((1000,100))
labels=np.random.randint(2,size=(1000,1))

# train model
model.fit(data,lables,epochs=10,batch_size=32)

# 10 classes
model=Sequential()
model.add(Dense(32,activation='relu',input_dim=100))
model.add(Dense(10,activation='softmax'))
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])

#  create dummy data
import numpy as np
data=np.random.random((1000,100))
labels=np.random

你可能感兴趣的:(Sequential模型)