Keras —— 序贯模型和函数式模型
序贯模型
序贯模型是多个网络层的线性堆叠,是函数式模型的简略版,为最简单的线性、从头到尾的结构顺序,不发生分叉。
1、应用序贯模型的基本步骤
- model.add,添加层;
- model.compile,模型训练的BP模式设置;
- model.fit,模型训练参数设置 + 训练;
- 模型评估
- 模型预测
2、创建
1、可以通过向Sequential模型传递一个layer的list来构造该模型:
from keras.models import Sequential
from keras.layers import Dense, Activationmodel = Sequential([
Dense(32, units=784),
Activation('relu'),
Dense(10),
Activation('softmax'),
])
2、也可以通过.add()方法一个个的将layer加入模型中:
model = Sequential()
model.add(Dense(32, input_shape=(784,)))
model.add(Activation('relu'))
3、指定输入数据的shape
模型需要知道输入数据的shape,因此,Sequential的第一层需要接受一个关于输入数据shape的参数,后面的各个层则可以自动的推导出中间数据的shape,因此不需要为每个层都指定这个参数。有几种方法来为第一层指定输入数据的shape
1、传递一个input_shape的关键字参数给第一层,input_shape是一个tuple类型的数据
model = Sequential()
model.add(Dense(64, input_shape=(20,), activation='relu'))
2、有些2D层,如Dense,支持通过指定其输入维度input_dim来隐含的指定输入数据shape,是一个Int类型的数据。一些3D的时域层支持通过参数input_dim和input_length来指定输入shape。
model = Sequential()
model.add(Dense(64, input_dim=20, activation='relu'))
4、编译
在训练模型之前,我们需要通过compile来对学习过程进行配置。compile接收三个参数:优化器optimizer,损失函数loss,指标列表metrics
model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy'])
5、训练
训练模型一般使用fit函数
model.fit(x_train, y_train,epochs=20,batch_size=128)
6、评估
根据验证集评估模型的好坏
score = model.evaluate(x_val, y_val, batch_size=128)
print('val score:', score[0])
print('val accuracy:', score[1])
7、预测
对已训练完成的模型,输入特征值x会预测得到标签y
x=1
y=model.predict(x,verbose=0)
print(y)
8、示例
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout# 准备训练集和验证集
x_train = np.random.random((1000, 20))
y_train = np.random.randint(2, size=(1000, 1))
x_val = np.random.random((100, 20))
y_val = np.random.randint(2, size=(100, 1))model = Sequential()
model.add(Dense(64, input_dim=20, activation='relu'))
# 或 model.add(Dense(64, input_shape=(20,), activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy'])
model.fit(x_train, y_train,epochs=20,batch_size=128)score = model.evaluate(x_val, y_val, batch_size=128)
print('val score:', score[0])
print('val accuracy:', score[1])x=1
y=model.predict(x,verbose=0)
print(y)
函数式模型
比序贯模型要复杂,可以同时/分阶段输入变量,分阶段输出想要的模型
1、应用函数式模型的基本步骤
- model.layers,添加层;
- model.compile,模型训练的BP模式设置;
- model.fit,模型训练参数设置 + 训练;
- 模型评估
- 模型预测
2、创建
model=Model(inputs=, outputs=)
3、指定输入数据的shape
inputs=Input(shape=(20,))
4、编译,训练,评估,预测等步骤与序贯式模型相同,这里不再赘述
5、示例一
基于上文序贯式模型进行改造
import numpy as np
from keras.models import Model
from keras.layers import Dense, Dropout# 准备训练集和验证集
x_train = np.random.random((1000, 20))
y_train = np.random.randint(2, size=(1000, 1))
x_val = np.random.random((100, 20))
y_val = np.random.randint(2, size=(100, 1))inputs = Input(shape=(20,))
x=Dense(64,activation='relu')(inputs)
x=Dropout(0.5)(x)
x=Dense(64,activation='relu')(x)
x=Dropout(0.5)(x)
predictions=Dense(1, activation='sigmoid')(x)model=Model(inputs=inputs, outputs=predictions)
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
model.fit(x_train, y_train,epochs=20,batch_size=128)score = model.evaluate(x_val, y_val, batch_size=128)
print('val score:', score[0])
print('val accuracy:', score[1])x=1
y=model.predict(x,verbose=0)
print(y)
6、示例二
多输入多输出模型
from keras.layers import Input, Embedding, LSTM, Dense
from keras.models import Modelmain_input = Input(shape=(100,), dtype='int32', name='main_input')
x = Embedding(output_dim=512, input_dim=10000, input_length=100)(main_input)
lstm_out = LSTM(32)(x)
auxiliary_output = Dense(1, activation='sigmoid', name='aux_output')(lstm_out)
auxiliary_input = Input(shape=(5,), name='aux_input')
x = keras.layers.concatenate([lstm_out, auxiliary_input])# We stack a deep densely-connected network on top
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)# And finally we add the main logistic regression layer
main_output = Dense(1, activation='sigmoid', name='main_output')(x)model = Model(inputs=[main_input, auxiliary_input], outputs=[main_output, auxiliary_output])
model.compile(optimizer='rmsprop',loss={'main_output': 'binary_crossentropy', 'aux_output': 'binary_crossentropy'},loss_weights={'main_output': 1., 'aux_output': 0.2})# And trained it via:
model.fit({'main_input': headline_data, 'aux_input': additional_data},{'main_output': labels, 'aux_output': labels},epochs=50, batch_size=32)
Keras —— 序贯模型和函数式模型相关推荐
- Keras学习笔记(一)认识序贯(Sequential)模型
Keras由纯Python编写而成并基Tensorflow.Theano以及CNTK后端.Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,它的可读性非常强!笔者在这参考了中文文档给自 ...
- Python机器学习笔记:深入理解Keras中序贯模型和函数模型
先从sklearn说起吧,如果学习了sklearn的话,那么学习Keras相对来说比较容易.为什么这样说呢? 我们首先比较一下sklearn的机器学习大致使用流程和Keras的大致使用流程: skl ...
- 深度学习:Keras基础--序贯模型(sequential)
深度学习:Keras入门(一)之基础篇 1.Keras搭建神经网络: Keras有两种类型的模型,序贯模型(Sequential)和函数式模型(Model),函数式模型应用更为广泛,序贯模型是函数式模 ...
- Keras学习笔记:函数式模型
目录: 目录: 函数式(Functional)模型 第一个模型:全连接网络 多输入和多输出模型 让我们用函数式模型来实现这个框图 共享层 更多的例子 inception模型 卷积层的残差连接 共享视觉 ...
- keras保存模型_TF2 8.模型保存与加载
举个例子:先训练出一个模型 import 接下来第一种方法:只保留模型的参数:这个有2种方法: model.save_weights("adasd.h5")model.load_w ...
- 【博弈论基础与几大经典模型】古诺模型、斯塔克尔伯格模型Stackelberg Game、价格领导模型、Bertrand模型、Sweezy模型
最近阅读了一篇paper中用到了Stackelberg Game建模,于是找了一些资料先学习以下该模型的理论知识,发现很多学科都是相关的,真是神奇的存在. 什么是博弈论 博弈论(Game theory ...
- Keras【Deep Learning With Python】—Keras实现序贯模型
文章目录 Sequential 程序说明 代码实现 运行结果 Sequential 初步了解了tensorflow以后,发现了基于tensorflow的非常简洁的深度学习框架keras,只需要短短几行 ...
- 浅谈深度学习:LSTM对股票的收益进行预测(Sequential 序贯模型,Keras实现)
浅谈深度学习:LSTM对股票的收益进行预测(Sequential 序贯模型,Keras实现) 总包含文章: 一个完整的机器学习模型的流程 浅谈深度学习:了解RNN和构建并预测 浅谈深度学习:基于对LS ...
- Keras搭建序贯式模型
学习Keras搭建序贯式模型,并学习使用MNIST手写数字识别例子 from tensorflow.keras import layers, models# 创建一个序贯式模型对象 model = m ...
最新文章
- JUC AQS ReentrantLock源码分析
- iOS runtime实用篇:让你快速上手一个项目
- Yii2 事件学习笔记
- 制定统一业务逻辑基础规则
- C++中使用random头文件
- Python学会使用虚拟环境——pipenv
- Spark1.2新特性概述
- java对象序列化克隆_Java8基础知识(三)对象克隆与序列化
- Marketing Cloud Launchpad动态tile显示数字刷新的触发逻辑
- 动态规划|最大k乘积问题(C语言)
- 图像处理 --- 4.1 图像增强的点运算
- java httpcomponents_java – 如何使用Apache httpcomponents从NHttpRequ...
- 互联网日报 | 5月10日 星期一 | 小米成立私募股权基金管理公司;58金融升级为58数科;京东健康推出“家医保”健康险服务...
- 发邮件请领导审批文件怎么说_住建部:1月1日起,两项甲级资质实行告知承诺审批!...
- 《南溪的目标检测学习笔记》——权重初始化
- 垂直搜索引擎模块设计
- 工信部BIM工程师系列发布测评考试大纲
- 通过程序启动QQ,实现自动登录.
- 苹果与宝马和奔驰关于自动驾驶汽车的谈判告吹,退而求其次选择与大众汽车合作
- 示波器如何设置实现单次触发
热门文章
- 阿里是如何做Code Review的
- Android腾讯QQ定制版,Android QQ 5.4.0 正式版发布
- Prometheus 动态拉取监控服务
- DSS:(Decision-making Support System)决策支持系统
- Barracuda WSF v4.x - Bypass Persistent Vulnerabilities
- 计算机预览不到桌面,电脑文件夹的文件预览显示没有预览怎么办?
- Symbol LS4278扫描枪的蓝牙配对指南
- [独家]自动播放K线图训练盘感能力!股票量化分析工具QTYX-V2.3.5
- 合肥八中2021年高考成绩查询,合肥八中2018高考喜报
- 算法训练 前缀表达式(C++)