keras搭建模型

方法一

Sequential()搭建模型

  1. Sequential 是多个网络层的线性堆栈,可以从keras的线性模型库导入Sequential模型:
from keras.models import Sequential
import tensorflow as tf#创建一个网络模型
model = Sequential()Using Tensorflow backend.
  1. 将一些网络层的layers通过add()添加到Sequential中
from keras.layers import Dense,Activationmodel.add(Dense(units=64,input_dim=100))
model.add(Activation(('relu'))
model.add(Dense(units=10))
model.add(Activation('softmax'))
  1. 也可以自己直接输入一个list完成Sequential模型的搭建:
model = Sequential([(Dense(units=64,input_dim=100)),(Activate('relu')),(Dense(units=10)),model.add(Activation('softmax'))])

除了第一个输入的变量需要指定数据的shape以外,其他层的数据框架会自动推到。

  • 可以使用 input_shape 这个关键字来指定第一层输入的 shape,input_shape 是一个 tuple 类型的数据(可以是整数也可以填入 None,如果填入 None 则表示此位置可能是任何正整数)但需要注意的是,数据的 batch大小不应包含在其中
  • 有些 2D 层,可以使用 Dense,指定第一层输入维度 input_dim 来隐含的指定输入数据的 shape,它是一个 Int 类型的数据。还有一些 3D 的时域层支持通过参数 input_dim 和 input_length 来指定输入 shape。
model = Sequential()
model.add(Dense(32,input_shape=(784,)))model= Sequential()
model.add(Dense(32,input_dim=784))

创建好模型后可以使用model.summary()来查看最终的模型的结构

方法二-使用Model()模型来创建

方法一是使用Sequential()(中文名是序贯模型)此处使用Model()(函数式模型)来搭建模型。

中文文档中的说明:Keras 函数式模型接口是用户定义多输出模型、非循环有向模型或具有共享层的模型等复杂模型的途径。一句话,只要你的模型不是类似 VGG 一条路走到黑的模型,或者你的模型需要多于一个的输出,那么你总应该选择函数式模型。函数式模型是最广泛的一类模型,序贯模型(Sequential)只是它的一种特殊情况。

  1. 简单的demo
from keras.layers import Input,Dense
from keras.models import Modelinputs = Input(shape=(784,))# a layer instance is callable on a tensor, and returns a tensor
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)model = Model(inputs=inputs,outputs=predictions)
model.compile(optimizer='rmaprop',loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(data,labels)#start training
  1. 编译创建好的环境

网络模型创建好之后,需要对网络的歇息过程进行配置,否则在调用fit或者evaluate是会抛出异常。使用compile(self, optimizer, loss, metrics=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)

compile()主要接受前三个参数:

loss:字符串类型,用来指定损失函数,如:categorical_crossentropy,binary_crossentropy
optimizer:字符串类型,用来指定优化方式,如:rmsprop,adam,sgd
metrics:列表类型,用来指定衡量模型的指标,如:accuracy

model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
  1. 训练模型
    训练模型一般使用fit()函数:
fit(self, x, y, batch_size=32, epochs=10, verbose=1, callbacks=None, validation_split=0.0,validation_data=None,shuffle=True,class_weight=None, sample_weight=None, initial_epoch=0)
  • x: 训练数据数组。如果输入的是框架本地的张量(如 Tensorflow 的数据 tensors ), x 可以是 None (默认) 。
  • y: 目标(标签)数据数组。如果输入的是框架本地的张量(如 Tensorflow 的数据 tensors ), y 可以是 None (默认) 。
  • batch_size: 指定 batch 的大小,为整数或者为 None。如果没有指定,默认为 32。
  • epochs: 指定训练时全部样本的迭代次数,为整数。
官方教程的例子
# For a single-input model with 2 classes (binary classification):model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])# Generate dummy data
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(2, size=(1000, 1))# Train the model, iterating on the data in batches of 32 samples
model.fit(data, labels, epochs=10, batch_size=32)
# For a single-input model with 10 classes (categorical classification):model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])# Generate dummy data
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(10, size=(1000, 1))# Convert labels to categorical one-hot encoding
one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)# Train the model, iterating on the data in batches of 32 samples
model.fit(data, one_hot_labels, epochs=10, batch_size=32)

keras简单的实际入门教程相关推荐

  1. CAD简单圣诞树新手入门教程:

    合适CAD简单圣诞树新手入门教程: 花:1.先画花瓣 2.画两个相交的圆 3.修剪掉不用的边 4.变成花瓣 5.然后选择花瓣应用阵型工具 6.阵型数量为6个 7.这样花就画好了. 树:1.首先用圆弧命 ...

  2. 掌声送给TensorFlow 2.0!用Keras搭建一个CNN | 入门教程

    作者 | Himanshu Rawlani 译者 | Monanfei,责编 | 琥珀 出品 | AI科技大本营(id:rgznai100) 2019 年 3 月 6 日,谷歌在 TensorFlow ...

  3. 写一篇简单的TileMap入门教程

    是好久好久都没有更新了 最近上课讲到了unity的TileMap,那么就给大家献上我自己对TileMap的理解以及一些入门操作,便于给刚接触TileMap的你一些参考. TileMap总所周知是一个十 ...

  4. 史上最简单的Git入门教程

    1. 版本控制系统简介 1.1 何为版本控制 版本控制最主要的功能就是追踪文件的变更.它将什么时候.什么人更改了文件的什么内容等信息忠实地了已录下来.每一次文件的改变,文件的版本号都将增加.除了记录版 ...

  5. 最简单的 Git 入门教程

    机缘巧合之下,我开始使用 GitHub ,但事实上,刚刚入门的我不知道如何才能使 GitHub 发挥他的全部功能.不久之前,我偶然听了李福斯先生对 GitHub 的介绍,受益匪浅. 简单的来说, Gi ...

  6. 零基础超简单的Docker入门教程 So Easy

    前提 本文是基于windows环境下使用docker的学习文章 其实我也有很长的一段时期在ubuntu系统下开发,很喜欢linux系统的纯净方便,但是当你身边同事都是使用windows与你交流沟通传输 ...

  7. 魔方教程一步一步图解(史上最简单的魔方入门教程)新手一看就会

    IT数学系列最常见的魔方是三阶魔方,是匈牙利布达佩斯建筑学院厄尔诺·鲁比克教授在1974年发明的.魔方教程一步一步图解新手一看就会. 魔方教程一步一步图解 魔方共6色6面,每面又分为中央块(最中间的块 ...

  8. 最简单的Lambda入门教程

    Lambda简介 Lambda作为函数式编程中的基础部分,在其他编程语言(例如:Scala)中早就广为使用,但在JAVA领域中发展较慢,直到java8,才开始支持Lambda. 抛开数学定义不看,直接 ...

  9. Python入门教程详解

    Python入门教程 目录 1. 简介 2. 安装 3. 基本语法 4. 数据类型 5. 条件语句 6. 循环 7. 函数 8. 模块 9. 异常处理 10. 文件输入输出 1. 简介 Python是 ...

最新文章

  1. 关于学习Python的一点学习总结(58->匹配对象和编组)
  2. 【C++多线程系列】【七】实现经典的C/S架构
  3. reservation for talk at Stanford
  4. 用图表说话 麦肯锡 pdf下载_揭秘麦肯锡顾问百万年薪背后的逻辑,麦肯锡「方法论」系列大合集...
  5. 汇编学习笔记(二)--数据处理的两个基本问题
  6. 猎鹰与龙飞船基于Linux,采用C++、Chromium与JS开发
  7. 枚举对象注释_如何以及何时使用枚举和注释
  8. Mac下配置sublime实现LaTeX
  9. CornerNet: 将目标检测问题视作关键点检测与配对
  10. Windows2008 Server r2 64位显示桌面图标的方法
  11. 译注(1): 为什么大多数编程语言里,= 号被用来做赋值操作符?
  12. ANDROID定义自己的看法——onMeasure,MeasureSpec源代码 过程 思考具体解释
  13. oracle merge into where,Oracle merge into语法简介
  14. 容器技术Docker K8s 10 入门实践集群创建
  15. php 跨域 session,php session 跨域的解决办法
  16. 把整个网页下载下来的方法
  17. vtkPolyData获取bounds点坐标
  18. Linux内核常见分配函数
  19. 酚酸靶向助力组合消毒剂在新鲜农产品中的应用研究
  20. 李宏毅机器学习之Deep Learning简介

热门文章

  1. iOS清除WKWebView缓存
  2. 指数族分布(2)——对数配分函数和MLE与充分统计量
  3. 2021年度COMPUTEX论坛汇聚科技巨头,共同解锁未来技术新趋势
  4. 用JSP创建一个表格模板 .
  5. 计算机名无法修改怎么办,win7系统计算机名字无法更改的解决方法
  6. iOS环境股票行情报价功能历程
  7. 安卓-恢复模式--Recovery
  8. php的坑,PHP中的这容易被踩的坑,新人必看
  9. 名帖51 王羲之 小楷《佛遗教经》
  10. windows设置CPU主频