序贯模型(Sequential)

序贯模型是多个网络层的线性堆叠。

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

  1. from Keras.models import Sequential
  2. from Keras.layers import Dense,Activation
  3.  
  4. model = Sequential([Dense(32,units=784),Activation('relu'),Dense(10),Activation('softmax'),])

也可以通过.add()方法一个个的将layer加入到模型中:

  1. model = Sequential()
  2. model.add(Dense(32,input_shape=(784,)))
  3. model.add(Activation('relu'))

指定输入数据的Shape

模型需要知道输入数据的shape,因此,Sequential的第一层需要接受一个关于输入数据shape的参数,后面的各个层则可以自动推导出中间数据的shape,因此不需要为每个层都指定这个参数。有几种方法来为第一层指定输入数据的shape,因此不需要为每个层都指定这个参数。有几种方法来为第一层指定输入数据的shape

  1. 传递一个input_shape的关键字给第一层,input_shape是一个tuple类型的数据,其中也可以填入None,如果填入None则表示此位置可能是任何正整数。数据的batch大小不应该包含在其中。
  2. 有些2D层,如Dense,支持通过指定其输入维度input_dim来隐含的指定指定输入数据shape。一些3D的时域层支持通过参数input_dim和input_length来指定输入shape
  3. 如果你需要为输入指定一个固定大小的batch_size(常用于stateful RNN网络),可以传递batch_size参数到一个层中,例如你想指定输入张量的batch大小是32,数据shape是(6,8),则你需要传递batch_size=32和input_shape()=(6,8)。
  1. model = Sequential()
  2. model.add(Dense(32,input_dim(784)))
  3.  
  4. model = Sequential()
  5. model.add(Dense(32,input_shape=784))

编译

在训练模型之前,我们需要通过compile来对学习过程进行配置。compile接收三个参数:

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

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

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

  1. #For a multi-class classification problem
  2. model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'
  1. #For a binary classification problem
  2. model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])
  1. #For a mean squared error regression problem
  2. model.compile(optimizer='rmsprop',loss='mse')
  1. #For custom metrics
  2. import keras.backed as k
  3.  
  4. def men_pred(y_true,y_pred):
  5. return K.mean(y_pred)
  6.  
  7. model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy',mean_pred])

训练

Keras以Numpy数组作为输入数据和标签的数据类型。训练模型一般使用fit函数。下面给出一些例子:

  1. #For a single-input model with 2 class (binary classification)
  2. model = Sequential()
  3. model.add(Dense(32,activation='relu', input_dim=100))
  4. model.add(Dense(1,activation='sigmoid'))
  5. model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])
  6.  
  7. #Generate dummy data
  8. import numppy as np
  9. data = np.random.random((100,100))
  10. labels = np.random.randint(2,size=(1000,1))
  11.  
  12. #Train the model,iterating on the data in batches of 32 samples
  13. model.fit(data,labels,epochs=10,batch_size=32)
  1. #For a sinale-input model with 10 class (categorical classfication):
  2. model = Sequential()
  3. model.add(Dense(32,activation='relu',input_dim=100))
  4. model.add(Dense(10,activation='softmax'))
  5. model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])
  6.  
  7. #Generate dummy data
  8. import numpy as np
  9. data = np.random.random((1000,100))
  10. labels = np.random.randint(10,size=(1000,1))
  11.  
  12. #Convert Labels to categorical one-hot encoding
  13. one_hot_labels = keras.utils.to_categorical(labels,num_classes=10)
  14.  
  15. #Train the model,interating on the data in batches of 32 samples
  16. model.fit(data,one_hot_labels,epochs=10,batch_size=32)

Keras之序贯(Sequential)模型的更多相关文章

  1. Python机器学习笔记:深入理解Keras中序贯模型和函数模型

     先从sklearn说起吧,如果学习了sklearn的话,那么学习Keras相对来说比较容易.为什么这样说呢? 我们首先比较一下sklearn的机器学习大致使用流程和Keras的大致使用流程: skl ...

  2. keras模块学习之Sequential模型学习笔记

    本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! Sequential是多个网络层的线性堆叠 可以通过向Sequential模型传递一个layer的list来构造该模型: from ...

  3. Keras官方中文文档:序贯模型

    快速开始序贯(Sequential)模型 序贯模型是多个网络层的线性堆叠,也就是"一条路走到黑". 可以通过向Sequential模型传递一个layer的list来构造该模型: f ...

  4. Keras官方中文文档:序贯模型API

    Sequential模型接口 如果刚开始学习Sequential模型,请首先移步这里阅读文档,本节内容是Sequential的API和参数介绍. 常用Sequential属性 model.layers ...

  5. Python机器学习笔记:深入学习Keras中Sequential模型及方法

    Sequential 序贯模型 序贯模型是函数式模型的简略版,为最简单的线性.从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠. Keras实现了很多层,包括core核心层,Convolution卷 ...

  6. 【Keras学习】Sequential模型

    序贯(Sequential)模型 序贯模型是多个网络层的线性堆叠,也就是“一条路走到黑”. 可以通过向Sequential模型传递一个layer的list来构造该模型: from keras.mode ...

  7. Keras(一)Sequential与Model模型、Keras基本结构功能

    keras介绍与基本的模型保存 思维导图 1.keras网络结构 2.keras网络配置 3.keras预处理功能 模型的节点信息提取 config = model.get_config() 把mod ...

  8. Keras Model Sequential模型接口

    Sequential 模型 API 在阅读这片文档前,请先阅读 Keras Sequential 模型指引. Sequential 模型方法 compile compile(optimizer, lo ...

  9. mnist手写数字识别——深度学习入门项目(tensorflow+keras+Sequential模型)

    前言 今天记录一下深度学习的另外一个入门项目——<mnist数据集手写数字识别>,这是一个入门必备的学习案例,主要使用了tensorflow下的keras网络结构的Sequential模型 ...

随机推荐

  1. js 旋转控件 jQueryRotate

    插代码 .. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...

  2. 谈谈哥的python爬虫书写之路

    为了做一个百度网盘搜索引擎,哥开始研究爬虫,从此迷上爬虫而一发不可收拾,现在就大概谈谈哥的爬虫之路,顺便给出引擎:http://www.quzhuanpan.com 首先基本的 Python 语法你要 ...

  3. dubbo入门使用

    主要参考dubbo官网demo 此处采用zookeeper注册中心进行服务协调管理 真个项目结构如下所示: dcommon : 主要用于定义服务接口, 为dconsumer,dprovider所依赖 ...

  4. poj1961 Period kmp解决找字符串的最小循环节

    /** 题目:poj1961 Period 链接:http://poj.org/problem?id=1961 题意:求从1到i这个前缀(2<=i<=N) ,如果有循环节(不能自身单独一个 ...

  5. 全栈JavaScript之路(十四)HTML5 中与class属性相关的扩充

    1. getElementByClassName() :支持getElementsByClassName()方法的浏览器有IE 9+.Firefox 3+.Safari 3.1+.Chrome 和 O ...

  6. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  7. Tuning 07 Optimizing Sort Operations

  8. shellscript

    shell script 运行方法 -------------------------------------- 1. 以命令方式执行( 一般是以这种方式执行 ) 首先修改档案权限可以运行 chmod ...

  9. setAttribute()使用方法与IE兼容解决方法

    我们经常需要在JavaScript中给Element动态添加各种属性,可以使用setAttribute()来实现,但涉及到了浏览器的兼容性问题.setAttribute(string name,str ...

  10. 【BZOJ】2021: [Usaco2010 Jan]Cheese Towers(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2021 噗,自己太弱想不到. 原来是2次背包. 由于只要有一个大于k的高度的,而且这个必须放在最顶,那 ...