Press "Enter" to skip to content

Keras中的模型

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

在keras中主要有两大类深度学习模型: 一类是序列模型(Sequential);另一类是通用模型(Model),其中的差异主要体现在拓扑结构上.

 

序列模型

 

可以说序列模型是通用模型的一个子类,这种模型各层之间是依次顺序的线性关系,通常是叠加形式构造深度学习模型,比如:

 

from keras.models import Sequential
from keras.layers import Dense,Activation
model = Sequential()
model.add(Dense(32,input_shape=(784,)))
model.add(Activation('relu'))
model.add(Dense(10))
model.add(Activation("softmax"))

 

通用模型

 

通用模型可以用来设计比较复杂,任意结构的深度学习模型,比如:

 

from keras.layers import Input,Dense
from keras.models import Model
# 定义输入层,主要是为了定义输入的多维矩阵的尺寸
# 这里的(784,) 相当于把每一个图像都拉平为784个像素点的向量
input = Input(shape = (784,))
# 定义各个连接层
x = Dense(64,activation='relu')(input)
x = Dense(64,activation='relu')(x)
y = Dense(10,activation='softmax')(x)
# 定义模型对象
model = Model(inputs=input,outputs=y)
# 进行模型编译
model.compile(optimizer='rmsprop',loss = 'categorical_crossentropy',metrics = ['accuracy'])
# 进行模型拟合
model.fit(data,labels)

 

,对于序列模型跟通用模型,他们的主要差异是在于如何定义从输入层到输出层的各层结构:

首先,在序列模型中,是先定义序列模型对象;而在通用模型中是先定义从输入层到输出层各层要素,然后在定义模型对象.
其次,在序列模型中,当有了一个模型对象之后,通过add方式依次添加各层信息;而在通用模型中,通过不断的封装各层模型结构的函数作为参数来定义模型结构.
最后,在序列模型中,各层只能依次线性添加;而在通用模型中,采用了封装的概念,可以定义出很复杂的网络模型.

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注