前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Keras进行深度学习:(一)Keras 入门

使用Keras进行深度学习:(一)Keras 入门

作者头像
磐创AI
发布于 2018-04-24 10:19:19
发布于 2018-04-24 10:19:19
1.2K0
举报

导语

Keras是Python中以CNTK、Tensorflow或者Theano为计算后台的一个深度学习建模环境。相对于其他深度学习的框架,如Tensorflow、Theano、Caffe等,Keras在实际应用中有一些显著的优点,其中最主要的优点就是Keras已经高度模块化了,支持现有的常见模型(CNN、RNN等),更重要的是建模过程相当方便快速,加快了开发速度。 笔者使用的是基于Tensorflow为计算后台。接下来将介绍一些建模过程的常用层、搭建模型和训练过程,而Keras中的文字、序列和图像数据预处理,我们将在相应的实践项目中进行讲解。 各层函数只介绍一些比较常用参数,详细参数介绍可查阅Keras文档 。

1核心层

(1)全连接层:神经网络中最常用到的,实现对神经网络里的神经元激活。Dense(units, activation=’relu’, use_bias=True)

参数说明:

units: 全连接层输出的维度,即下一层神经元的个数

activation:激活函数,默认使用Relu

use_bias:是否使用bias偏置项

(2)激活层:对上一层的输出应用激活函数。

Activation(activation)

参数说明:

Activation:想要使用的激活函数,如:relu、tanh、sigmoid等

(3) Dropout层:对上一层的神经元随机选取一定比例的失活,不更新,但是权重仍然保留, 防止过拟合。

Dropout(rate)

参数说明:

rate:失活的比例,0-1的浮点数。

(4)Flatten层:将一个维度大于或等于3的高维矩阵,“压扁”为一个二维矩阵。即保留第一个维度(如:batch的个数),然后将剩下维度的值相乘为“压扁”矩阵的第二个维度。

Flatten()

(5)Reshape层:该层的作用和numpy.reshape一样,就是将输入的维度重构成特定的shape。

Reshape(target_shape)

参数说明:

target_shape:目标矩阵的维度,不包含batch样本数。如我们想要一个9个元素的输入向量重构成一个( None, 3, 3) 的二维矩阵:Reshape((3,3), input_length=(16, ))

(6)卷积层:卷积操作分为一维、二维、三维,分别为Conv1D、Conv2D、Conv3D。一维卷积主要应用于以时间序列数据或文本 数据,二维卷积通常应用于图像数据。由于这三种的使用和参数都基本相同,所以主要以处理图像数据的Conv2D进行说明。

Conv2D(filters, kernel_size, strides=(1, 1), padding='valid')

参数说明:filters:卷积核的个数。

kernel_size:卷积核的大小。

strdes:步长,二维中默认为(1, 1),一维默认为1。

Padding:补“0”策略,'valid'指卷积后的大小与原来的大小可以不同,'same'则卷积后大小与原来大小 一 致。

(7)池化层:与卷积层一样,最大统计量池化和平均统计量池也有三种,分别为MaxPooling1D、MaxPooling2D、MaxPooling3D、AveragePooling1D、AveragePooling2D、AveragePooli ng3D,由于使用和参数基本相同,所以主要以MaxPooling2D进行说明。MaxPooling(pool_size=(2,2), strides=None, padding=’valid’)

参数说明:

pool_size:长度为2的整数tuple,表示在横向和纵向的下采样样子,一维则为纵向的下采样因子

padding:和卷积层的padding一样。

(8) 循环层:循环神经网络中的RNN、LSTM和GRU都继承本层,所以该父类的参数同样使用于对应的子类SimpleRNN、LSTM和GRU。

Recurrent(return_sequences=False)

参数说明:

return_sequences:控制返回的类型,“False”返回输出序列的最后一个输出,“True”则返回整个序列。当我们要搭建多层神经网络(如深层LSTM时,若不是最后一层,则需要将该参数设为True。

(9) 嵌入层:该层只能用在模型的第一层,是将所有索引标号的稀疏矩阵映射到致密的低维矩阵。如我们对文本数据进行处理时,我们对每个词编号后,我们希望将词编号变成词向量就可以使 用嵌入层。

Embedding(input_dim, output_dim, input_length)

参数说明:

Input_dim:大于或等于0的整数,字典的长度即输入数据的个数。

output_dim:输出的维度,如词向量的维度。

input_length:当输入序列的长度为固定时为该长度,然后要在该层后加上Flatten层,然后再加上Dense层,则必须指定该参数,否则Dense层无法自动推断输出的维度。

该层可能有点费解,举个例子,当我们有一个文 本,该文本有100句话,我们已经通过一系列操作,使得文本变成一个(100,32)矩阵,每行代表一句话,每个元素代表一个词,我们希望将该词变为64维的词向量。

Embedding(100, 64, input_length=32) 则输出的矩阵的shape变为(100, 32, 64):即每个词已经变成一个64维的词向量。

2模型搭建

讲完了一些常用层的语法后,接下来我们通过模型搭建来说明Keras的方便性。Keras中设定了两类深度学习的模型,一类是序列模型(Sequential类);另一类是通用模型(Model 类)。下面我们通过搭建下图模型进行讲解。

图 1:两层神经网络

假设我们有一个两层神经网络,其中输入层为784个神经元,隐藏层为32个神经元,输出层为10个神经元,其中隐藏层使用ReLU激活函数,输出层使用Softmax激活函数。分别使用序列模型和通用模型实现如下:

图 2:导入相关库

图 3:序列模型实现

使用序列模型,首先我们要实例化Sequential类,之后就是使用该类的add函数加入我们想要的每一层,从而实现我们的模型。

图 4:通用模型实现

使用通用模型,首先要使用Input函数将输入转化为一个tensor,然后将每一层用变量存储后,作为下一层的参数,最后使用Model类将输入和输出作为参数即可搭建模型。

从以上两类模型的简单搭建,都可以发现Keras在搭建模型比起Tensorflow等简单太多了,如Tensorflow需要定义每一层的权重矩阵,输入用占位符等,这些在Keras中都不需要,我们只要在第一层定义输入维度,其他层定义输出维度就可以搭建起模型,通俗易懂,方便高效,这是Keras的一个显著的优势。

3模型优化和训练

(1)compile(optimizer, loss, metrics=None)

参数说明:

optimizer:优化器,如:’SGD‘,’Adam‘等

loss:定义模型的损失函数,如:’mse’,’mae‘等

metric:模型的评价指标,如:’accuracy‘等

(2)fit(x=None,y=None,batch_size=None,epochs=1,verbose=1,validation_split=0.0)

参数说明:

x:输入数据。

y:标签。

batch_size:梯度下降时每个batch包含的样本数。

epochs:整数,所有样本的训练次数。

verbose:日志显示,0为不显示,1为显示进度条记录,2为每个epochs输出一行记录。validation_split:0-1的浮点数,切割输入数据的一定比例作为验证集。

图 5:优化和训练实现

最后用以下图片总结keras的模块,下一篇文章我们将会使用keras来进行项目实践,从而更好的体会Keras的魅力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磐创AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
keras 基础入门整理
在进行自然语言处理之前,需要对文本进行处理。 本文介绍keras提供的预处理包keras.preproceing下的text与序列处理模块sequence模块
学到老
2019/01/25
1.6K0
【深度学习】人人都能看得懂的卷积神经网络——入门篇
近年来,卷积神经网络热度很高,在短时间内,这类网络成为了一种颠覆性技术,打破了从文本、视频到语音多个领域的大量最先进的算法,远远超出其最初在图像处理的应用范围。
黄博的机器学习圈子
2020/06/18
1.2K0
【深度学习】人人都能看得懂的卷积神经网络——入门篇
深度学习第3天:CNN卷积神经网络
这张图显示了一个滤波器的某时刻的运作过程,最左边的是原图,中间是滤波器,最右边是结果,它会进行一个内积运算,图中也展示了这个过程
Nowl
2024/01/18
2770
深度学习第3天:CNN卷积神经网络
使用Keras进行深度学习:(三)使用text-CNN处理自然语言(下)
前言:在上一篇文章中,已经介绍了Keras对文本数据进行预处理的一般步骤。预处理完之后,就可以使用深度学习中的一些模型进行文本分类。在这篇文章中,将介绍text-CNN模型以及使用该模型对imdb影评数据集进行情感分析。 正如上篇文章所说,文本分类的关键在于准确提炼文档或者句子的中心思想,而提炼中心思想的方法是抽取文档或句子的关键词作为特征,基于这些特征去训练分类器并分类。每个类别可以理解为一种中心思想,如情感分析中,分类器将样本分为两类,一类为正面评论,另一类为负面评论,而正面和负面评论正是该文本或句子的
磐创AI
2018/04/24
1.1K0
使用Keras进行深度学习:(三)使用text-CNN处理自然语言(下)
福利 | Keras入门之——网络层构造
《Keras快速上手:基于Python的深度学习实战》系统地讲解了深度学习的基本知识、建模过程和应用,并以深度学习在推荐系统、图像识别、自然语言处理、文字生成和时间序列中的具体应用为案例,详细介绍了从工具准备、数据获取和处理到针对问题进行建模的整个过程和实践经验,是一本非常好的深度学习入门书。本章节选自《Keras快速上手:基于Python的深度学习实战》第四章Keras入门部分内容。 福利提醒:在评论区留言,分享你的Keras学习经验,评论点赞数前五名可获得本书。时间截止周五(8月11日)晚22点
AI科技大本营
2018/04/27
1.7K0
福利 | Keras入门之——网络层构造
【Keras篇】---Keras初始,两种模型构造方法,利用keras实现手写数字体识别
Keras 适合快速体验 ,keras的设计是把大量内部运算都隐藏了,用户始终可以用theano或tensorflow的语句来写扩展功能并和keras结合使用。
LhWorld哥陪你聊算法
2018/09/13
1.1K0
【Keras篇】---Keras初始,两种模型构造方法,利用keras实现手写数字体识别
[机器学习|理论&实践] 深度学习基础概念深入解析
深度学习是机器学习领域中备受关注的分支,其核心在于神经网络。本文将更深入地探讨神经网络结构、优化算法以及损失函数,为读者提供对深度学习基础概念的深入理解。
数字扫地僧
2023/12/05
3870
讲解UserWarning: Update your Conv2D
在深度学习中,卷积神经网络(Convolutional Neural Networks,简称CNN)是一种广泛应用的模型。然而,在使用CNN时,我们有时会遇到一个名为"UserWarning: Update your Conv2D"的告警信息。本文将详细讲解这个Warnning信息的含义以及如何解决这个问题。
大盘鸡拌面
2023/12/22
1890
【机器学习】神经网络的无限可能:从基础到前沿
在当今人工智能的浪潮中,神经网络作为其核心驱动力之一,正以前所未有的速度改变着我们的世界。从图像识别到自然语言处理,从自动驾驶到医疗诊断,神经网络的应用无处不在。本文旨在深入探讨神经网络的各个方面,从基础概念到最新进展,带领读者一窥其背后的奥秘与魅力。
破晓的历程
2024/08/20
3300
基于深度学习的图像目标识别预测 | CV | Tensorflow | Keras
在人工智能研究的大潮中,如何模拟人类对于静态或动态目标的有效识别预测一直是研究热点,通过智能技术实现对于目标特征的学习并对特定目标进行快速识别,预测得出目标识别概率,实现基于深度学习模型在复杂背景、不确定外部干扰下的高精度、实时识别目标,能够保持或者优于有丰富经验人员的识别效果。
用户7623498
2020/08/04
1.5K0
基于深度学习的图像目标识别预测 | CV | Tensorflow | Keras
【机器学习】深度学习实践
在当今人工智能的浪潮中,深度学习作为其核心驱动力之一,正以前所未有的速度改变着我们的世界。从图像识别、语音识别到自然语言处理,深度学习技术已经渗透到我们生活的方方面面。本文将带您深入了解深度学习的基本概念,并通过一个具体的图像分类示例来展示其实际应用,同时附上相应的Python代码。
破晓的历程
2024/08/20
1410
AlexNet算法入门
AlexNet是深度学习领域中的经典卷积神经网络(CNN)模型之一,由Alex Krizhevsky等人提出,并在2012年的ImageNet图像识别竞赛中取得了重大突破。本文将介绍AlexNet的基本结构和关键特点,帮助读者深入了解这一算法。
大盘鸡拌面
2023/10/26
4320
Colab超火的Keras/TPU深度学习免费实战,有点Python基础就能看懂的快速课程
想要真的了解深度学习,除了看视频,拿数据和算力真枪实弹的练手可能比各种理论知识更重要。
大数据文摘
2019/05/15
1.1K0
Colab超火的Keras/TPU深度学习免费实战,有点Python基础就能看懂的快速课程
使用Keras进行深度学习:(五)RNN和双向RNN讲解及实践
作者 | Ray 编辑 | 磐石 出品 | 磐创AI技术团队 【磐创AI导读】:本文主要介绍了RNN与双向RNN网路的原理和具体代码实现。欢迎大家点击上方蓝字关注我们的公众号:磐创AI。进入公众号通过下方文章精选系列文章了解更多keras相关项目。 介绍 通过对前面文章的学习,对深度神经网络(DNN)和卷积神经网络(CNN)有了一定的了解,也感受到了这些神经网络在各方面的应用都有不错的效果。然而这些网络都有一个共同的特点:每一层的神经元之间是相互独立的,如输入层的神经元彼此之间是独立的。然而,现实世界中很
磐创AI
2018/07/03
1.1K0
keras doc 7 Pooling Connceted Recurrent Embedding Activation
‘th’模式下,为形如(samples,channels, rows,cols)的4D张量
CreateAMind
2018/07/25
7770
keras doc 7 Pooling Connceted Recurrent  Embedding Activation
[深度学习概念]·CNN网络架构演进:从LeNet到DenseNet(代码实现基于Keras)
卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀。CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春,从ZF Net到VGG,GoogLeNet再到ResNet和最近的DenseNet,网络越来越深,架构越来越复杂,解决反向传播时梯度消失的方法也越来越巧妙。新年有假期,就好好总结一波CNN的各种经典架构吧,领略一下CNN的发展历程中各路大神之间的智慧碰撞之美。
小宋是呢
2019/06/27
6290
[深度学习概念]·CNN网络架构演进:从LeNet到DenseNet(代码实现基于Keras)
深度学习在情感分析中的应用
编者按:本文选自图书《Keras快速上手:基于Python的深度学习实战》第七章,本书覆盖当前最热门的传统数据挖掘场景和四个深度学习应用场景,据调研,是目前唯一一本以应用为导向的介绍机器学习和深度学习的专业书籍,具备很高的参考价值和学术价值。 注意啦!文末活动评论赠送此书! 自然语言情感分析简介 情感分析无处不在,它是一种基于自然语言处理的分类技术。其主要解决的问题是给定一段话,判断这段话是正面的还是负面的。例如在亚马逊网站或者推特网站中,人们会发表评论,谈论某个商品、事件或人物。商家可以利用情感分析工具
用户1737318
2018/06/05
1.6K0
深度学习(六)keras常用函数学习 2018最新win10 安装tensorflow1.4(GPU/CPU)+cuda8.0+cudnn8.0-v6 + keras 安装CUDA失败 导入ten
原文链接:https://www.cnblogs.com/DOMLX/p/9769301.html
徐飞机
2018/10/11
2.2K0
深度学习快速参考:6~10
使用深度神经网络的最大缺点之一是它们具有许多应优化的超参数,以使网络发挥最佳表现。 在前面的每个章节中,我们都遇到但没有涵盖超参数估计的挑战。 超参数优化是一个非常重要的话题。 在大多数情况下,这是一个未解决的问题,尽管我们不能涵盖本书的全部主题,但我认为它仍然值得一章。
ApacheCN_飞龙
2023/04/23
5900
TextCNN文本分类(keras实现)「建议收藏」
深度学习模型在计算机视觉与语音识别方面取得了卓越的成就,在 NLP 领域也是可以的。将卷积神经网络CNN应用到文本分类任务,利用多个不同size的kernel来提取句子中的关键信息(类似 n-gram 的关键信息),从而能够更好地捕捉局部相关性。
全栈程序员站长
2022/09/13
1.8K0
TextCNN文本分类(keras实现)「建议收藏」
推荐阅读
相关推荐
keras 基础入门整理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档