Keras教学(1):Keras是什么
【写在前面】:大家好,我是【猪葛】
一个很看好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是什么相关推荐
- NS之VGG(Keras):基于Keras的VGG16实现之《复仇者联盟3》灭霸图像风格迁移设计(A Neural Algorithm of Artistic Style)
NS之VGG(Keras):基于Keras的VGG16实现之<复仇者联盟3>灭霸图像风格迁移设计(A Neural Algorithm of Artistic Style) 导读 通过代码 ...
- DL之Keras:基于Keras框架建立模型实现【预测】功能的简介、设计思路、案例分析、代码实现之详细攻略(经典,建议收藏)
DL之Keras:基于Keras框架建立模型实现[预测]功能的简介.设计思路.案例分析.代码实现之详细攻略(经典,建议收藏) 目录 Keras框架使用分析 Keras框架设计思路 案例分析 代码实现 ...
- 【Keras速成】Keras图像分类从模型自定义到测试
文章首发于微信公众号<与有三学AI> [Keras速成]Keras图像分类从模型自定义到测试 这是给大家准备的Keras速成例子 这一次我们讲讲keras这个简单.流行的深度学习框架,一个 ...
- Keras vs tf.keras: 在TensorFlow 2.0中有什么区别?
导读 在本文中,您将发现Keras和tf.keras之间的区别,包括TensorFlow 2.0中的新增功能. 万众期待的TensorFlow 2.0于9月30日正式发布. 虽然肯定是值得庆祝的时刻, ...
- 【tf.keras】tf.keras模型复现
keras 构建模型很简单,上手很方便,同时又是 tensorflow 的高级 API,所以学学也挺好. 模型复现在我们的实验中也挺重要的,跑出了一个模型,虽然我们可以将模型的 checkpoint ...
- tf.keras 05: 使用Keras保存和加载不同格式的模型
本文是 tf.keras 系列文章的第五篇.通过手写数字识别数据集介绍了 Keras 模型训练中的 检查点(checkpoint) 文件,.weights 文件,.pb 文件以及 .h5 文件等四种格 ...
- keras 中的keras.preprocessing、Embedding、GlobalMaxPooling1D()、 TimeDistributed
本文以短问答为背景,串联几个keras下常用的函数 0:keras.preprocessing 该模块是对数据的预处理模块 https://blog.csdn.net/winter_python/ar ...
- Keras与tf.keras的区别
keras 简介 Keras 是一个主要由 Python 语言开发的开源神经网络计算库,最初由 François Chollet编写, 它被设计为高度模块化和易扩展的高层神经网络接口,使得用户可以不需 ...
- Keras与tf.keras:TensorFlow 2.0有什么区别?
在本教程的第一部分中,我们将讨论Keras和TensorFlow之间相互交织的历史,包括他们共同的受欢迎程度如何相互滋养,相互促进和滋养,使我们走向今天. 然后,我将讨论为什么您应该在以后的所 ...
最新文章
- Google I/O大会,炫酷产品汇总
- JS和Jquery获取和修改label的值
- 对contentoffset的理解
- 数据库索引为什么会失效
- 撸.NET Core的正确姿势
- Python求梅森尼数
- qt 开发新问题QList使用小记
- Spring Aop源码解读
- Axure与markman
- uni-app 学习: 页面高度设置100%
- pikachu靶场之暴力破解
- 三大运营商的网上流量卡数据对比,看看你会选哪一个?
- 2018.11.3 PION模拟赛
- 大众点评评论反爬解决方案
- 【原创】xenomai+linux双内核下的时钟管理机制
- POSTGRESQL index advisor 4种方式 (国内,国外,远程,云)那个更好
- 互联网时代各行业都在快速更替,对于金融行业即将成为下一个风口的分析
- 安卓集成云闪付,以及So库冲突多moudle项目解决办法
- SMTP与ESMTP的关系和区别
- 机票预定系统可行性分析
热门文章
- QT自定义简单表盘(完整代码)
- nm and n||m 的区别
- 《飞机大战小游戏(Java)》
- UESTC 1601 艾尔大停电2 二维树状数组+区间更新
- 201571030130/201571030124《小学四则运算练习软件需求说明》结对项目报告
- linux下dvwa安装教程,Kali linux2.0系统安装DVWA渗透测试平台 焕焕
- Arouter讲解4_Core,flutter游戏
- 数字签名(1) 证书下载
- 2022登高架设考试题及模拟考试
- python 涨停统计_python 轻松实现获取涨跌停数据