前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Keras模型

Keras模型

作者头像
小锋学长生活大爆炸
发布于 2021-06-11 10:24:52
发布于 2021-06-11 10:24:52
53300
代码可运行
举报
运行总次数:0
代码可运行

文件下载:https://download.csdn.net/download/sxf1061700625/19229828

Keras模型

在Keras中有两种深度学习的模型:序列模型(Sequential)和通用模型(Model)。差异在于不同的拓扑结构。

Sequential序列模型

序列模型各层之间是依次顺序的线性关系(多个网络层的线性堆叠),模型结构通过一个列表来制定,或者逐层添加网络结构。

通过将网络层实例的列表传递给Sequential的构造器,来创建一个Sequential模型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入类
from keras.models import Sequential
from keras.layers import Dense, Activation
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 构建Sequential模型
# Model是keras最核心的数据结构
model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])

也可以简单地使用.add()方法将各层添加到模型中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))
model.add(Dense(10))
model.add(Activation('softmax'))

指定输入数据的尺寸 在第一层,模型需要知道它所期望的输入尺寸。而在后面的层中,模型可以自动地推断尺寸。

  • 方式1:传递一个input_shape参数给第一层。它是一个表示尺寸的元组(一个由整数或None组成的元组,其中None表示可能为任何正整数)。在input_shape中不包含数据的batch大小。
  • 方式2:某些2D层,如Dense,支持通过参数input_dim指定输入尺寸;某些3D时序层支持input_diminput_length参数。
  • 方式3:如果你需要为你的输入制定一个固定大小的batch(对stateful RNNs很有用),可以传递一个batch_size参数给一个层。如果你同时将batch_size=32input_shape=(6,8)传递给一个层,那么每一批输入的尺寸就为(32,6,8)

因此,如下代码是等价的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model.add(Dense(32, input_shape=(784,))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model.add(Dense(32, input_dim=784))

模型编译 在训练模型之前,通过compile方法配置学习过程,接收的参数:

  • 优化器optimizer:可以是现有优化器的字符串标识符(如rmspropadagrad),也可以是Optimizer类的示例,见optimizers
  • 损失函数loss:模型试图最小化的目标函数。他可以使现有损失函数的字符串标识符(如categorical_crossentropymse),也可以是一个目标函数,见losses
  • 评估标准metrics:对于任何分类问题,都希望将其设置为metrics = ['accuracy']。他可以使现有的字符串标识符,也可以是自定义的评估标准函数。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 分类问题
model.compile(
    optimizer='rmsprop',
    loss='categorical_crossentropy',
    metrics=['accuracy']
)

# 二分类问题
model.compile(
    optimizer='rmsprop',
    loss='binary_crossentropy',
    metrics=['accuracy']
)

# 均方误差回归问题
model.compile(
    optimizer='rmsprop',
    loss='mse'
)

# 自定义评估标准函数
import keras.backend as K
def mean_pred(y_true, y_pred):
    return K.mean(y_pred)

model.compile(
    optimizer='rmsprop',
    loss='binary_crossentropy',
    metrics=['accuracy', mean_pred]
)

模型训练 在输入数据和标签的Numpy矩阵上进行训练。为了训练这一个模型,通常会使用fit函数,见文档

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 对于具有2个类的单输入模型(二进制分类)
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'])

# 生成虚拟数据
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(2, size=(1000, 1))

# 训练模型,以32个样本为一个batch进行迭代
model.fit(data, labels, epochs=10, batch_size=32)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Epoch 1/10
1000/1000 [==============================] - 0s 105us/step - loss: 0.7028 - accuracy: 0.4980
Epoch 2/10
1000/1000 [==============================] - 0s 32us/step - loss: 0.6932 - accuracy: 0.5380
Epoch 3/10
1000/1000 [==============================] - 0s 34us/step - loss: 0.6862 - accuracy: 0.5510
Epoch 4/10
1000/1000 [==============================] - 0s 34us/step - loss: 0.6842 - accuracy: 0.5580
Epoch 5/10
1000/1000 [==============================] - 0s 31us/step - loss: 0.6834 - accuracy: 0.5570
Epoch 6/10
1000/1000 [==============================] - 0s 34us/step - loss: 0.6799 - accuracy: 0.5720
Epoch 7/10
1000/1000 [==============================] - 0s 34us/step - loss: 0.6760 - accuracy: 0.5860
Epoch 8/10
1000/1000 [==============================] - 0s 37us/step - loss: 0.6742 - accuracy: 0.5920
Epoch 9/10
1000/1000 [==============================] - 0s 35us/step - loss: 0.6702 - accuracy: 0.5810
Epoch 10/10
1000/1000 [==============================] - 0s 36us/step - loss: 0.6686 - accuracy: 0.6050





<keras.callbacks.callbacks.History at 0x1e1c574b888>

Model通用模型

通用模型可以设计非常复杂、任意拓扑结构的神经网络,例如有向无环网络、共享层网络等。相比于序列模型只能依次线性逐层添加,通用模型能够比较灵活地构造网络结构,设定各层级的关系。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from keras.layers import Input, Dense
from keras.models import Model

# 定义输入层,确定输入维度
input = input(shape = (784, ))
# 2个隐含层,每个都有64个神经元,使用relu激活函数,且由上一层作为参数
x = Dense(64, activation='relu')(input)
x = Dense(64, activation='relu')(x)
# 输出层
y = Dense(10, activation='softmax')(x)
# 定义模型,指定输入输出
model = Model(input=input, output=y)
# 编译模型,指定优化器,损失函数,度量
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
# 模型拟合,即训练
model.fit(data, labels)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Keras学习笔记——Hello Keras
目前最流行的框架莫过于Tensorflow了,但是只要接触过它的人,就知道它使用起来是多么让人恐惧。Tensorflow对我们来说,仿佛是一门高深的Deep Learning学习语言,需要具备很深的机器学习和深度学习功底,才能玩得转。
用户1154259
2018/07/31
6780
Keras框架速查手册(Python For Data Science Cheat Sheet Keras)
Keras框架速查表 1 Keras 1.1 一个基本示例 2 数据 2.1 Keras数据设置 3 模型结构 3.1 Sequential模型 3.2 多层感知器(MLP) 3.2.1 二元分类 3.2.2 多类别分类 3.2.3 回归 3.3 卷积神经网络(CNN) 3.4 循环神经网络(RNN) 4 预处理 4.1 序列填充 4.2 创建虚拟变量 4.3 训练集、测试集分离 4.4 标准化/归一化 5 模型细节提取 5.1 模型输出形状 5.2 模型总结 5.3 get模型参数 5.4 g
荣仔_最靓的仔
2022/01/05
3700
Keras框架速查手册(Python For Data Science Cheat Sheet Keras)
Keras学习(一)—— Keras 模型(keras.model): Sequential 顺序模型 和 Model 模型
首先了解Keras的一个很好的途径就是通过 文档 Keras 中文文档地址: https://keras.io/zh/models/about-keras-models/
全栈程序员站长
2022/11/15
1.7K0
【Keras】Keras入门指南
在用了一段时间的Keras后感觉真的很爽,所以特意祭出此文与我们公众号的粉丝分享。 Keras是一个非常方便的深度学习框架,它以TensorFlow或Theano为后端。用它可以快速地搭建深度网络,灵活地选取训练参数来进行网路训练。总之就是:灵活+快速!
keloli
2018/09/13
2.1K0
Keras函数式API
之前所有的神经网络都是基于Sequential模型实现的,而且网络都是层的线性叠加。但是在实际情况下,有些网络需要多个独立的输入,有些网络需要多个输出;而且有些层之间具有内部分支。
皮大大
2023/08/25
2120
Keras的基本使用(1)--创建,编译,训练模型
Keras 是一个用 Python 编写的,高级的神经网络 API,使用 TensorFlow,Theano 等作为后端。快速,好用,易验证是它的优点。 官方文档传送门:http://keras.io/ 中文文档传送门:http://keras.io/zh 中文第三方文档:http://keras-cn.readthedocs.io
caoqi95
2019/03/27
1.3K0
Keras 训练简单的深度神经网络
机器学习训练营最近的作业都是使用Keras,所以最近去翻了下文档,这里记录一下学习栗子。(官网有中文文档)
小歪
2018/12/13
8180
Keras 学习笔记(三)Keras Sequential 顺序模型
你可以通过将网络层实例的列表传递给 Sequential 的构造器,来创建一个 Sequential 模型:
种花家的奋斗兔
2020/11/12
2.4K0
keras系列︱Sequential与Model模型、keras基本结构功能(一)
中文文档:http://keras-cn.readthedocs.io/en/latest/ 官方文档:https://keras.io/ 文档主要是以keras2.0。
全栈程序员站长
2022/11/03
1.8K0
Deep learning基于theano的keras学习笔记(1)-Sequential模型
《统计学习方法》中指出,机器学习的三个要素是模型,策略和优算法,这当然也适用于深度学习,而我个人觉得keras训练也是基于这三个要素的,先建立深度模型,然后选用策略(目标函数),采用优化器,编译和训练模型。
李智
2018/08/03
1.4K0
keras 基础入门整理
在进行自然语言处理之前,需要对文本进行处理。 本文介绍keras提供的预处理包keras.preproceing下的text与序列处理模块sequence模块
学到老
2019/01/25
1.5K0
神经网络基础及Keras入门
人工神经网络,简称神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。
小歪
2018/12/17
5830
TensorFlow教程:快速入门深度学习五步法(附Keras实例)
作为一个程序员,我们可以像学习编程一样学习深度学习模型开发。我们以 Keras 为例来说明。我们可以用 5 步 + 4 种基本元素 + 9 种基本层结构,这 5-4-9 模型来总结。
数据派THU
2018/07/30
1.5K0
TensorFlow教程:快速入门深度学习五步法(附Keras实例)
超快速!10分钟入门Keras指南
作者:李中粱 小编:赵一帆 1 Keras框架介绍 在用了一段时间的Keras后感觉真的很爽,所以特意祭出此文与我们公众号的粉丝分享。 Keras是一个非常方便的深度学习框架,它以TensorFlow或Theano为后端。用它可以快速地搭建深度网络,灵活地选取训练参数来进行网路训练。总之就是:灵活+快速!!! 2 安装Keras 首先你需要有一个Python开发环境,直接点就用Anaconda,然后在CMD命令行中安装: # GPU 版本 >>> pip install --upgrade tensorf
机器学习算法工程师
2018/03/30
1.3K0
超快速!10分钟入门Keras指南
keras系列︱Sequential与Model模型、keras基本结构功能(一)
该文章介绍了在深度学习模型中,不同的层对输入进行计算,从而影响模型的性能。文章详细讨论了卷积层、池化层、全连接层和LSTM层的特点和作用,以及如何使用这些层来构建高性能的模型。此外,文章还探讨了如何通过冻结层和重新训练层来提高模型的性能。
悟乙己
2018/01/02
10.3K0
keras系列︱Sequential与Model模型、keras基本结构功能(一)
【Keras篇】---Keras初始,两种模型构造方法,利用keras实现手写数字体识别
Keras 适合快速体验 ,keras的设计是把大量内部运算都隐藏了,用户始终可以用theano或tensorflow的语句来写扩展功能并和keras结合使用。
LhWorld哥陪你聊算法
2018/09/13
1.1K0
【Keras篇】---Keras初始,两种模型构造方法,利用keras实现手写数字体识别
Deep learning基于theano的keras学习笔记(2)-泛型模型(含各层的方法)
  我们希望预测Twitter上一条新闻会被转发和点赞多少次。模型的主要输入是新闻本身(一个词语序列)。但我们还可以拥有额外的输入(如新闻发布的日期等)。这个模型的损失函数将由两部分组成,辅助的损失函数评估仅仅基于新闻本身做出预测的情况,主损失函数评估基于新闻和额外信息的预测的情况,即使来自主损失函数的梯度发生弥散,来自辅助损失函数的信息也能够训练Embeddding和LSTM层。在模型中早点使用主要的损失函数是对于深度网络的一个良好的正则方法。总而言之,该模型框图如下:
李智
2018/08/03
9280
Deep learning基于theano的keras学习笔记(2)-泛型模型(含各层的方法)
MLK | Keras 基础模型调参指南
上一篇文章讲解了如何简易入门Keras,大致给出了一个深度学习模型,但对于模型如何调参就没有太过于深入讲解,今天继续写一篇文章来整理下 Keras 深度学习模型的调参教程,希望可以对大家有所帮助。
Sam Gor
2019/08/09
1.2K0
MLK | Keras 基础模型调参指南
推荐阅读
相关推荐
Keras学习笔记——Hello Keras
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验