一、Sequential模型
1、构造方式
(1)可以通过向Sequential模型传递一个layer的list来构造
from keras.models import Sequential #导入Sequential模型 from keras.layers import Dense,Activation #导入Dense,Activation层 model = Sequential( [Dense(32,input_dim=748), Activation('relu'), Dense(10), Activation('softmax'),] )
(2)通过.add()方法将layer一个一个的加入模型中
model = Sequential() model.add(Dense(32,input_dim=784)) model.add(Activation('relu'))
2、参数
模型的第一层通常情况下需要传入一个输入数据的shape参数
- input_shape:tuple类型的数据,不包含batch_size。可以填入None,表示该位置可以是任意正整数
- batch_input_size:包含batch_size。
以下三种方式是等价的
model = Sequential() #1 model.add(Dense(32,input_shape=(784,))) #2 model.add(Dense(32,batch_input_shape=(None,784))) #3 model.add(Dense(32,input_dim=784))
model = Sequential() #1 model.add(LSTM(32,input_shape=(10,64))) #2 model.add(LSTM(32,batch_input_shape=(None,10,64))) #3 model.add(LSTM(32,input_length=10,input_dim=64))
3、Merge层
多个Sequential可经由一个Merge层合并到一个输出。Merge层的输出是一个可以被添加到新的Sequential的层对象。
from keras.layers import Merge left_branch = Sequential() left_branch.add(Dense(32,input_dim=784)) right_branch = Sequential() right_branch.add(Dense(32,input_dim=784)) merged = Merge([left_branch,right_branch], mode='concat') final_model = Sequential() final_Model.add(merged) final_Model.add(Dense(10,activation='softmax'))
合并模式:
sum:逐元素相加
concat:张量串联 concat_axis指定哪个轴
mul:逐元素相乘
ave:张量平均
dot:张量相乘
cos:2D张量中各个向量的余弦距离
4、compile编译
训练模型前,需要通过compile来对学习模型进行配置。
compile接收的参数:
- 优化器optimizer:可为预定义的优化器名rmsprop、adagrad
- 损失函数loss:该参数为模型试图最小化的目标函数,可为预定义的损失函数名categorical_crossentropy/mse
- 指标列表metrics:分类问题需要将该列表设置为metrics=['accuracy']
#for a multi-class classification problem model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) #for a binary-class classification problem loss='binary_crossentropy' #for a mean squared error regression problem model.compile(optimizer='rmsprop', loss='mse')
5、训练-fit函数