本文将简要介绍Keras的功能特点,使用Keras构建模型一般流程的6个步骤,以及使用Keras处理mnist分类问题的一个简单范例。

一,Keras简介

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow,Theano 或者 CNTK, MXNet 作为后端运行。
Keras 具有以下优势:
简单易用:Keras是为人类而不是为机器设计的 API。它把用户体验放在首要和中心位置。Keras遵循减少认知困难的最佳实践,它提供一致且简单的 API,将常见用例所需的用户操作数量降至最低,并且在用户错误时提供清晰和可操作的反馈。
功能强大:Keras同时支持卷积神经网络和循环神经网络,以及两者的组合,它可以在CPU和GPU上无缝运行。Keras不仅提供了构建和训练神经网络模型的高级功能,还提供了模型结果可视化的工具,以及常见的图像和文本数据的预处理工具,另外Keras中还包括一些常用的玩具数据集和一些著名的已经训练好的神经网络模型。
高度灵活:用户可以使用Keras的函数式API构建任意结构的神经网络,如多输入多输出结构,残差网络,Inception网络等。通过自定义层和自定义模型,用户可以实现高度定制化的功能。利用Keras的后端backend提供的一些函数用户甚至可以从底层开始实现任意模型。
总之,这几乎是一个无懈可击的封装,集极致的体验,强大的功能,无限的灵活性于一身。
这就是Keras,你恰好发现了她!
目前Keras是github排名第二的开源深度学习框架,也是Kaggle竞赛中使用人数最多的神经网络框架。

二,使用流程

使用Keras进行神经网络实验的一般流程包括以下6个步骤。其中准备数据,构建模型和训练模型是必选的3个步骤。1,准备数据:
可以从keras的dataset导入玩具数据集,也可以导入外部数据集,并使用图像,文本,序列等数据预处理工具进行数据预处理。当数据规模较大时,需要使用Sequence等工具构建数据管道以备在训练过程中并行读取。2,构建模型
可以使用以下3种方式构建模型:使用Sequential按层顺序构建模型,使用函数式API构建任意结构模型,继承Model基类构建自定义模型。
模型由层layer组成,keras中有许多已经定义好的层,用户可以使用backend函数定义Lambda匿名层,此外用户也可以继承Layer层基类构建自定义层。
另外,用户也可以将application中已经训练好的模型加载进来,对其进行微调或者将其部分结构作为模型的一部分,模型本身也可以被看成一个层。
构建完模型后,需要用compile方法来编译模型,指定优化器,目标函数,评估指标,以及回调函数。
可以用summary方法来查看模型的结构和参数数量。也可以用plot_model方法来可视化模型的结构图。
如果需要使用tensorboard来对模型结构图及训练过程进行可视化,可以调用tensorboard回调函数。3,训练模型
一般情况下可以用模型的fit方法训练模型,当数据集较大时,应当使用内存友好的fit_generator方法训练模型,如果需要细粒度的自定义训练过程,可以用train_on_batch逐批次地训练模型。
如果需要使用GPU训练模型,需要安装CUDA和cuDNN以支持相应计算,并安装tensorflow-gpu版本,则可以无缝切换到GPU运行。
如果需要使用多个GPU训练模型,可以使用keras.utils.multi_gpu_model创建支持多个GPU同时训练的模型。4,评估模型
在通常情况下,训练模型时候指定验证集就可以在训练过程中输出模型的在训练集和验证集的损失和评估指标。然后可以用matplotlib将结果可视化,也可以利用回调函数在tensorboard中进行可视化。如果需要自定义评估指标,可以利用backend接口进行编写。
在模型训练完成后,可以用evaluate方法对模型进行评估,当数据集较大时,使用对内存友好的evaluate_generator方法评估模型,如果需要细粒度的评估,可以用test_on_batch在一个批次上评估模型。5,使用模型
一般情况下使用模型的predict方法进行预测,当数据集较大时,使用predict_generator方法进行预测。6,保存模型
keras可以用模型的save方法保存模型的结构和权重到.h5文件,也可以用save_weight方法只保存模型的权重到.h5文件,也可以用to_json或者to_yaml方法只保存模型的结构到json或者yaml文件。

三,mnist分类范例

我们以mnist手写数字识别数据集为例介绍分类范例。这是一个多分类问题。

import 

1,导入数据

from 

2,构建模型

from 

3,训练模型

history 

4,评估模型

import 

5,使用模型

6,保存模型

# 保存模型结构及权重

神经网络模型中class的forward函数何时调用_用Keras从零开始6步骤训练神经网络相关推荐

  1. 神经网络模型中class的forward函数何时调用_总结深度学习PyTorch神经网络箱使用...

    ↑ 点击蓝字 关注极市平台来源丨计算机视觉联盟编辑丨极市平台 极市导读 本文介绍了Pytorch神经网络箱的使用,包括核心组件.神经网络实例.构建方法.优化器比较等内容,非常全面.>>加入 ...

  2. python中函数的调用_慢步python,编程中函数的概念,python中函数的声明和调用

    函数,曾经是一个很高大尚的概念.笔者是在高中数学里认识的函数,先是从y=2x+3 这条代数式开始的.y是因变量,x是自变量,y因为x取值的变化而变化. 再后来式子变成这样:f(x)=2x+3,f(x) ...

  3. dojo——AMD(二、AMD中class内部成员函数相互调用实现)

    一.引言 这两天写arcgis javascript代码的时候,自己以为对dojo的amd规范掌握了,可是后来碰到了一个问题,在每个module中成员函数调用另外一个成员函数必须使用this调用(这点 ...

  4. python中形参只在函数内部有效_【Python】函数

    Python函数 >>>转到思维导图>>>转到博客园 函数的返回值 函数内要想返回给调用者值 必须用关键字return 不写return:函数默认返回None de ...

  5. evaluate函数使用无效_使用Keras和Pytorch处理RNN变长序列输入的方法总结

    最近在使用Keras和Pytorch处理时间序列数据,在变长数据的输入处理上踩了很多坑.一般的通用做法都需要先将一个batch中的所有序列padding到同一长度,然后需要在网络训练时屏蔽掉paddi ...

  6. python中forward函数的引用_调用没有.forward()的forward函数

    在看一些关于姿势估计的pytorch代码时,AlphaPose我注意到一些不熟悉的语法: 基本上,我们定义了一个Darknet类,它继承了nn.Module属性,比如:class Darknet(nn ...

  7. python中协程与函数的区别_深入浅析python 协程与go协程的区别

    进程.线程和协程 进程的定义: 进程,是计算机中已运行程序的实体.程序本身只是指令.数据及其组织形式的描述,进程才是程序的真正运行实例. 线程的定义: 操作系统能够进行运算调度的最小单位.它被包含在进 ...

  8. 汽车电子嵌入式技术篇(二) -autosar中的嵌入式系统函数的调用

    1   程序的内存分布 嵌入式系统中,一个函数调用时,它的内部机理是什么,执行了哪些步骤?如图1所示,先看 看 一个程序在运行时,它的内存分布状况.                           ...

  9. java类中自定义函数的调用_关于方法:自定义类中对函数的未解析引用

    我无法解决看似微不足道的问题.我的问题可能是缺乏对Kotlin语言的经验(和理解).不过,我将需要帮助. 我做了一个自定义类,其中包含一个自定义函数.看起来很简单,但是当我尝试使用此功能时,我一直收到 ...

最新文章

  1. 程序是一座城,八年来我深陷其中
  2. OpenCV 新版 4.5.1 发布!
  3. [学习笔记]标记永久化
  4. 16个烧光你脑细胞的悖论
  5. Windows环境下多线程编程原理与应用读书笔记(8)————信号量及其应用
  6. matplotlib.lines.Line2D
  7. AJAX实例二:实现类似Google的搜索提示【原著】
  8. angular input_更快的Angular应用程序
  9. 条形图设置颜色Java_java – 如何在条形图中显示每个条形的条形值?
  10. 转账引发数据一致性思考
  11. 四叶草关闭啰嗦模式_教你如何解决 Win7 64位卡LOGO(四叶草)
  12. 彩虹自助下单平台对接爱代挂插件程序
  13. J2Cache缓存的使用
  14. Vue 从零开始搭建PC端项目完整框架(附GitHub地址和Vue项目执行流程)
  15. 我99年想出来00年发表的一个概念,被百度百科引用了
  16. Apple ID到期续费问题及验证手机(开启双重认证)
  17. Windows 11 首次开机OOBE阶段跳过连接网络及登录微软账户,使用本地账号登录的方法
  18. 旅游订票订酒店团购(APP,JAVA后台管理,MYSQL)
  19. 云图说丨数字资产链:您的数字资产产权保护神
  20. H.265视频流媒体EasyPlayer播放器无法禁用自动播放的问题修复

热门文章

  1. 高性能javascript 文件加载阻塞
  2. 百度地图 app 点击事件无效、不触发 解决方案
  3. C#自定义异常 统一异常处理
  4. 关于解决GPS定位设备:GPS静态漂移的方法
  5. eclipse中生成的html存在中文乱码问题的解决方法
  6. 页面加载后如何使JavaScript执行?
  7. 附带数据库的应用程序
  8. Node.js 11.12.0 发布,服务器端的 JavaScript 运行环境
  9. CopyCat 代码克隆检测发布,剑指开源软件抄袭
  10. 一些基于VUE的后台框架对比