【写在前面】:大家好,我是【猪葛】
一个很看好AI前景的算法工程师
在接下来的系列博客里面我会持续更新Keras的教学内容(文末有大纲)
内容主要分为两部分
第一部分是Keras的基础知识
第二部分是使用Keras搭建FasterCNN、YOLO目标检测神经网络
代码复用性高
如果你也感兴趣,欢迎关注我的动态一起学习
学习建议:
有些内容一开始学起来有点蒙,对照着“学习目标”去学习即可
一步一个脚印,走到山顶再往下看一切风景就全明了了

本篇博客学习目标:1、当朋友跟你谈论keras是什么的时候,你脑子不是一片空白;2、知道搭建神经网络的三个流程分别是:构建模型、搭配模型、训练模型。

文章目录

  • Keras概念
  • Keras搭建神经网络总体流程

Keras概念

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验。能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。

如果你在以下情况下需要深度学习库,请使用 Keras:

  • 允许简单而快速的原型设计(由于用户友好,高度模块化,可扩展性)。
  • 同时支持卷积神经网络和循环神经网络,以及两者的组合。
  • 在 CPU 和 GPU 上无缝运行。

Keras搭建神经网络总体流程

Keras 的核心数据结构是 model,一种组织网络层的方式。最简单的模型是Sequential 顺序模型 ,它由多个网络层线性堆叠。对于更复杂的结构,你应该使用 Keras 函数式 API,它允许构建任意的神经网络图。

下面先逐一拆解每个函数的意思,更加具体的解释请看下面完整代码中的注释

Sequential模型如下所示:

from keras.models import Sequentialmodel = Sequential()

创建完model之后可以简单地使用 .add() 来堆叠模型:

from keras.layers import Densemodel.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))

在完成了模型的构建后, 可以使用.compile() 来配置学习过程:

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

如果需要,你还可以进一步地配置你的优化器。Keras 的核心原则是使事情变得相当简单,同时又允许用户在需要的时候能够进行完全的控制(终极的控制是源代码的易扩展性)。

model.compile(loss=keras.losses.categorical_crossentropy,optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))

现在,你可以批量地在训练数据上进行迭代了:

# x_train 和 y_train 是 Numpy 数组 -- 就像在 Scikit-Learn API 中一样。
model.fit(x_train, y_train, epochs=5, batch_size=32)

或者,你可以手动地将批次的数据提供给模型:

model.train_on_batch(x_batch, y_batch)

只需一行代码就能评估模型性能:

loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)

或者对新的数据生成预测:

classes = model.predict(x_test, batch_size=128)

完整代码(建议自己运行一遍,注意看代码注释,注意看代码注释,注意看代码注释)


"""
本实例使用的是tensorflow后端的keras,
所以导入keras的方式是
import tensorflow.keras
以此类推
"""from tensorflow.keras.models import Sequential
import tensorflow as tf
from tensorflow.keras.layers import Dense# ***************流程一:构建模型*********************
model = Sequential()   # 创建模型实例
model.add(Dense(units=64, activation='relu', input_dim=100))  # input_dim=100,表示输出的shape(None, 100)
model.add(Dense(units=10, activation='softmax'))  # 全连接的神经元个数为units=10, 激活函数activation='softmax'# ***************流程二:搭配模型***********************
model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])  # 选用模型训练使用的损失函数和优化函数和评价指标# 或者使用实例对象,在实例化对象的过程中进行参数初始化,详情看类SGD的初始化
# model.compile(loss=keras.losses.categorical_crossentropy,
#               optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))# ****************流程三:训练模型***************************
# 自己假设训练数组
x_train, y_train = tf.random.truncated_normal(shape=(1000, 100)), tf.random.truncated_normal(shape=(1000, 1))
# x_train 和 y_train 是 Numpy 数组或者是Tensor变量都可,此处是Tensor变量, 开始训练
model.fit(x_train, y_train, epochs=5, batch_size=32)

代码运行结果

Train on 1000 samples
Epoch 1/5
1000/1000 [==============================] - 0s 391us/sample - loss: -0.3190 - accuracy: 0.1590
Epoch 2/5
1000/1000 [==============================] - 0s 48us/sample - loss: -0.3125 - accuracy: 0.1590
Epoch 3/5
1000/1000 [==============================] - 0s 50us/sample - loss: -0.3265 - accuracy: 0.1570
Epoch 4/5
1000/1000 [==============================] - 0s 50us/sample - loss: -0.3447 - accuracy: 0.1450
Epoch 5/5
1000/1000 [==============================] - 0s 64us/sample - loss: -0.3743 - accuracy: 0.1380Process finished with exit code 0

有了这个总体框架,以后的内容不过就是在细化每一部分的知识和步骤而已,下期详细解释如何使用Sequence对象创建模型,欢迎关注收藏我的动态一起学习~,下面是系列内容目录截图:

Keras教学(1):Keras是什么相关推荐

  1. NS之VGG(Keras):基于Keras的VGG16实现之《复仇者联盟3》灭霸图像风格迁移设计(A Neural Algorithm of Artistic Style)

    NS之VGG(Keras):基于Keras的VGG16实现之<复仇者联盟3>灭霸图像风格迁移设计(A Neural Algorithm of Artistic Style) 导读 通过代码 ...

  2. DL之Keras:基于Keras框架建立模型实现【预测】功能的简介、设计思路、案例分析、代码实现之详细攻略(经典,建议收藏)

    DL之Keras:基于Keras框架建立模型实现[预测]功能的简介.设计思路.案例分析.代码实现之详细攻略(经典,建议收藏) 目录 Keras框架使用分析 Keras框架设计思路 案例分析 代码实现 ...

  3. 【Keras速成】Keras图像分类从模型自定义到测试

    文章首发于微信公众号<与有三学AI> [Keras速成]Keras图像分类从模型自定义到测试 这是给大家准备的Keras速成例子 这一次我们讲讲keras这个简单.流行的深度学习框架,一个 ...

  4. Keras vs tf.keras: 在TensorFlow 2.0中有什么区别?

    导读 在本文中,您将发现Keras和tf.keras之间的区别,包括TensorFlow 2.0中的新增功能. 万众期待的TensorFlow 2.0于9月30日正式发布. 虽然肯定是值得庆祝的时刻, ...

  5. 【tf.keras】tf.keras模型复现

    keras 构建模型很简单,上手很方便,同时又是 tensorflow 的高级 API,所以学学也挺好. 模型复现在我们的实验中也挺重要的,跑出了一个模型,虽然我们可以将模型的 checkpoint ...

  6. tf.keras 05: 使用Keras保存和加载不同格式的模型

    本文是 tf.keras 系列文章的第五篇.通过手写数字识别数据集介绍了 Keras 模型训练中的 检查点(checkpoint) 文件,.weights 文件,.pb 文件以及 .h5 文件等四种格 ...

  7. keras 中的keras.preprocessing、Embedding、GlobalMaxPooling1D()、 TimeDistributed

    本文以短问答为背景,串联几个keras下常用的函数 0:keras.preprocessing 该模块是对数据的预处理模块 https://blog.csdn.net/winter_python/ar ...

  8. Keras与tf.keras的区别

    keras 简介 Keras 是一个主要由 Python 语言开发的开源神经网络计算库,最初由 François Chollet编写, 它被设计为高度模块化和易扩展的高层神经网络接口,使得用户可以不需 ...

  9. Keras与tf.keras:TensorFlow 2.0有什么区别?

      在本教程的第一部分中,我们将讨论Keras和TensorFlow之间相互交织的历史,包括他们共同的受欢迎程度如何相互滋养,相互促进和滋养,使我们走向今天.   然后,我将讨论为什么您应该在以后的所 ...

最新文章

  1. Google I/O大会,炫酷产品汇总
  2. JS和Jquery获取和修改label的值
  3. 对contentoffset的理解
  4. 数据库索引为什么会失效
  5. 撸.NET Core的正确姿势
  6. Python求梅森尼数
  7. qt 开发新问题QList使用小记
  8. Spring Aop源码解读
  9. Axure与markman
  10. uni-app 学习: 页面高度设置100%
  11. pikachu靶场之暴力破解
  12. 三大运营商的网上流量卡数据对比,看看你会选哪一个?
  13. 2018.11.3 PION模拟赛
  14. 大众点评评论反爬解决方案
  15. 【原创】xenomai+linux双内核下的时钟管理机制
  16. POSTGRESQL index advisor 4种方式 (国内,国外,远程,云)那个更好
  17. 互联网时代各行业都在快速更替,对于金融行业即将成为下一个风口的分析
  18. 安卓集成云闪付,以及So库冲突多moudle项目解决办法
  19. SMTP与ESMTP的关系和区别
  20. 机票预定系统可行性分析

热门文章

  1. QT自定义简单表盘(完整代码)
  2. nm and n||m 的区别
  3. 《飞机大战小游戏(Java)》
  4. UESTC 1601 艾尔大停电2 二维树状数组+区间更新
  5. 201571030130/201571030124《小学四则运算练习软件需求说明》结对项目报告
  6. linux下dvwa安装教程,Kali linux2.0系统安装DVWA渗透测试平台 焕焕
  7. Arouter讲解4_Core,flutter游戏
  8. 数字签名(1) 证书下载
  9. 2022登高架设考试题及模拟考试
  10. python 涨停统计_python 轻松实现获取涨跌停数据