Keras中的两种模型:Sequential和Model用法


Posted in Python onJune 27, 2020

在Keras中有两种深度学习的模型:序列模型(Sequential)和通用模型(Model)。差异在于不同的拓扑结构。

序列模型 Sequential

序列模型各层之间是依次顺序的线性关系,模型结构通过一个列表来制定。

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)

或者逐层添加网络结构

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'))

通用模型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(input=input, output=y)
# 编译模型,指定优化器,损失函数,度量
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
# 模型拟合,即训练
model.fit(data, labels)

补充知识:keras神经网络,Sequential序贯模型(二分类、多分类)

1 Sequential参数

model = Sequential() model.add(Dense(32, input_dim=78))

解释:

Sequential 的第一个关于输入数据shape的参数,后边的各个层则可以自动推到出中间数据的shape

01 传递一个input_shape的关键字参数给第一层,如果填入None则表示此位置可能是任何正整数。数据的batch大小不应包含在其中。

02 有些2D层,如Dense,支持通过指定其输入维度input_dim来隐含的指定输入数据shape,是一个Int类型的数据。一些3D的时域层支持通过参数input_dim和input_length来指定输入shape。

03 如果你需要为输入指定一个固定大小的batch_size(常用于stateful RNN网络),可以传递batch_size参数到一个层中,例如你想指定输入张量的batch大小是32,数据shape是(6,8),则你需要传递batch_size=32和input_shape=(6,8)。

2、compile配置学习过程

model.compile(optimizer='rmspropy',loss='categorical_crossentropy',metrics=['accuracy'])

01 优化器optimizer:

该参数可指定为已预定义的优化器名,如rmsprop、adagrad,或一个Optimizer类的对象。

02 损失函数loss:

该参数为模型试图最小化的目标函数,它可为预定义的损失函数名,如categorical_crossentropy、mse,也可以为一个损失函数。

03 指标列表metrics:

对分类问题,我们一般将该列表设置为metrics=['accuracy']。指标可以是一个预定义指标的名字,也可以是一个用户定制的函数.指标函数应该返回单个张量,或一个完成metric_name - > metric_value映射的字典.

3、案例

01 基于多层感知器Softmax多分类(图片)

from keras.models import Sequential
from keras.layers import Dense,Dropout,Activation
from keras.optimizers import SGD
import keras #abd
 
# Generate dummy data
import numpy as np
 
x_train=np.random.random((1000,20))
y_train=keras.utils.to_categorical(np.random.randint(10,size=(1000,1)),num_classes=10)
x_test=np.random.random((100,20))
y_test=keras.utils.to_categorical(np.random.randint(10,size=(100,1)),num_classes=10)
 
model=Sequential()
 
# Dense(64) is a fully-connected Layer with 64 hidden units.
# in the first layer ,you must specify the expected input data shape;
# here,20-dimensional vectors.
 
model.add(Dense(64,activation='relu',input_dim=20))
model.add(Dropout(0.5))
model.add(Dense(64,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10,activation='softmax'))
 
sgd=SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True)
 
model.compile(loss='categorical_crossentropy', # 损失函数
    optimizer=sgd, # 
    metrics=['accuracy'] # 精确度,评估模型在训练和测试时的网络性能的指标。
    ) 
 
model.fit(x_train,y_train,epochs=20,batch_size=128) 
 
# batch_size 整数,指定进行梯度下降时每个批次包含的样本数训练时一个批次的样本
# 会被计算一次梯度下降,使目标函数进行一步优化
# epochs;训练20次,整数,训练终止时候的epoch值
score=model.evaluate(x_test,y_test,batch_size=128)
 
# 评估函数 ,本函数返回一个测试误差的标量值(如果模型没有其他评价指标)。

02 MLP的二分类

import numpy as np
from keras.models import Sequential
from keras.layers import Dense,Dropout
 
x_train=np.random.random((1000,20))
y_train=keras.utils.to_categorical(np.random.randint(10,size=(1000,1)),num_classes=10)
x_test=np.random.random((100,20))
y_test=keras.utils.to_categorical(np.random.randint(10,size=(100,1)),num_classes=10)
 
model=Sequential()
model.add(Dense(64,input_dim=20,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1,activation='sigmoid'))
 
model.compile(loss='binary_crossentropy',
    optimizer='rmsprop',
    metrics=['accuracy'])
 
model.fit(x_train,y_train,
   epoches=20,
   batch_size=128)
 
score=model.evaluate(x_test,y_test,batch_size=128)

相关详细说明见官方文档:https://keras-cn.readthedocs.io/en/latest/getting_started/sequential_model/

以上这篇Keras中的两种模型:Sequential和Model用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
对python内置map和six.moves.map的区别详解
Dec 19 Python
kafka-python批量发送数据的实例
Dec 27 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
Django前后端分离csrf token获取方式
Dec 25 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
Jun 09 Python
Django路由层如何获取正确的url
Jul 15 Python
如何Python使用re模块实现okenizer
Apr 30 Python
keras输出预测值和真实值方式
Jun 27 #Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 #Python
浅谈keras 模型用于预测时的注意事项
Jun 27 #Python
python suds访问webservice服务实现
Jun 26 #Python
解析Python 偏函数用法全方位实现
Jun 26 #Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 #Python
使用pytorch实现论文中的unet网络
Jun 24 #Python
You might like
德生S2000电路分析
2021/03/02 无线电
flash用php连接数据库的代码
2011/04/21 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
全面理解Python中self的用法
2016/06/04 Python
Python中的日期时间处理详解
2016/11/17 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
年度考核自我鉴定
2014/03/19 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
旅游文化节策划方案
2014/06/06 职场文书
活动总结范文
2014/08/30 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
2015年度女工工作总结
2015/10/22 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
Python绘画好看的星空图
2022/03/17 Python