Keras的两种模型:序列模型(Sequential)和通用模型(Model)

本文详细介绍了Keras中的两种模型类型——Sequential模型的list构造与add()构造方法,以及通用Model的高级用法。探讨了它们的特点、实例和应用场景,适合初学者理解这两种模型的区别和灵活性。
摘要由CSDN通过智能技术生成


Keras中有两种不同的模型:序列模型(Sequential)和通用模型(Model)

一.序列模型(Sequential)

序列模型的两种创建方式:list构造add()构造

1.1 list构造

通过向Sequential模型传递一个layer的list来构造该模型:

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

1.2 add()构造

通过add逐层向Sequential中添加layer

from keras.models import Sequential
from keras.layers import Dense, Activation
 
model = Sequential() # 定义模型
model.add(Dense(units=64, activation='relu', input_dim=100)) # 定义网络结构
model.add(Dense(units=10, activation='softmax')) # 定义网络结构
model.compile(loss='categorical_crossentropy', # 定义loss函数、优化方法、评估标准
              optimizer='sgd',
              metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=32) # 训练模型
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128) # 评估模型
classes = model.predict(x_test, batch_size=128) # 使用训练好的数据进行预测

二.通用模型(Model)

from keras.layers import Input, Dense
from keras.models import Model
 
# 输入层,确定输入维度
input = input(shape = (784, ))
# 2个隐含层,每个都有64个神经元,使用relu激活函数,且由上一层作为参数
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)

注意⚠️,在新版的keras中model = Model(inputs=input, outputs=y)中的inputs和outpus不再是之前的input和output,注意加s!
优点:

  • 1、 每个layer实例都是可以调用的,它返回一个tensor
  • 2、 输入tensor和输出tensor可以用来定义一个Model
  • 3、 函数式的模型也可以像 Sequential模型一样训练。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值