Keras模型分类分析及代码实现
一.序列模型
1.序列模型【写法一】
序列模型属于通用模型的一种,这种模型各层之间是依次顺序的线性关系。在第k层和第k+1层之间可以加上各种元素来构造神经网络。这些元素可以通过一个列表来制定,然后作为参数传递给序列模型来生成相应的模型。
from keras.models import Sequential from keras.layers import Dense from keras.layers import Activation # input_shape 输入层,784表示输入样式 layers = [Dense(32, input_shape=(784,)), # Dense 全连接层,32表示全连接层上面有32个神经元 Activation('relu'), # 激活函数relu Dense(10), Activation('softmax')] model = Sequential(layers) # 构建序列模型 model.summary() # 打印模型信息
执行结果:
解析:
a.25120=784*32 + 32,表示全连接层要计算的参数个数,32表示截距
b.330=32*10 + 10 解析同上
c.25450=25120+330 表示全部要计算的参数个数
2.序列模型【写法二】
from keras.models import Sequential from keras.layers import Dense from keras.layers import Activation model = Sequential() model.add(Dense(32, input_shape=(784,))) model.add(Activation('relu')) model.add(Dense(10)) model.add(Activation('softmax')) model.summary()
执行结果同上!
二.通用模型
通用模型可以用来设计非常复杂、任意拓扑结构的神经网络。类似于序列模型,通用模型通过函数化的应用接口来定义模型。在通用模型中,从输入的多维矩阵开始,然后定义各层及其要素,最后定义输出层。将输入层和输出层作为参数纳入通用模型中就可以定义一个模型对象。
from keras.models import Model from keras.layers import Input, Dense # 定义输入层 input = Input(shape=(784,)) # 定义各个连接层,包括两个全连接层,使用relu和softmax激活函数 layer1 = Dense(64, activation='relu')(input) layer2 = Dense(64, activation='relu')(layer1) # 定义输出层 out = Dense(10, activation='softmax')(layer2) # 定义模型对象 model = Model(inputs=input, output=out) model.summary()
执行结果: