Keras 世上无难事只要肯放弃(3)
函数式API指引
Keras函数式API是定义复杂模型(如多输出模型、有向无环图、或具有共享层的模型)的方法。
例一:全连接层
from keras.layers import Input, Dense
from keras.models import Model# 这部分返回一个张量
inputs = Input(shape=(784,))# 层的实例是可调用的,它以张量为参数,并且返回一个张量
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)# 这部分创建了一个包含输入层和三个全连接层的模型
model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(data, labels) # 开始训练
利用函数式API,可以轻易地重用训练好的模型:可以将任何模型看作是一个层,然后通过传递张量来调用它。
如
x = Input(shape=(784,))
#这是可行的,并且返回上面定义的10-way softmax
y = model(x)
多输入输出模型
模型结构:
新闻标题,预测转发量和点赞数。
主要输入接收新闻标题本身,即一个整数序列(每个整数编码一个词)。 这些整数在 1 到 10,000 之间(10,000 个词的词汇表),且序列长度为 100 个词。
from keras.layers import Input, Embedding, LSTM, Dense
from keras.models import Model# 标题输入:接收一个含有 100 个整数的序列,每个整数在 1 到 10000 之间。
# 注意我们可以通过传递一个 "name" 参数来命名任何层。
main_input = Input(shape=(100,), dtype='int32', name='main_input')# Embedding 层将输入序列编码为一个稠密向量的序列,
# 每个向量维度为 512。
x = Embedding(output_dim=512, input_dim=10000, input_length=100)(main_input)# LSTM 层把向量序列转换成单个向量,
# 它包含整个序列的上下文信息
lstm_out = LSTM(32)(x)
在这里,我们插入辅助损失,使得即使在模型主损失很高的情况下,LSTM 层和 Embedding 层都能被平稳地训练。
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])# 堆叠多个全连接网络层
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)# 最后添加主要的逻辑回归层
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='binary_crossentropy',loss_weights=[1., 0.2])model.fit([headline_data, additional_data], [labels, labels],epochs=50, batch_size=32)#也可以通过以下方式编译模型
model.compile(optimizer='rmsprop',loss={'main_output': 'binary_crossentropy', 'aux_output': 'binary_crossentropy'},loss_weights={'main_output': 1., 'aux_output': 0.2})# 然后使用以下方式训练:
model.fit({'main_input': headline_data, 'aux_input': additional_data},{'main_output': labels, 'aux_output': labels},epochs=50, batch_size=32)
函数API另一个用途 共享网络层
这个不想写了
Keras 世上无难事只要肯放弃(3)相关推荐
- keras 世上无难事只要肯放弃(2)
"sample", "batch", "epoch" 分别是什么? 为了正确地使用 Keras,以下是必须了解和理解的一些常见定义: Sam ...
- Keras 世上无难事只要肯放弃(1)
所有的内容都是从Keras中文文档看的 重新打一遍是因为想督促自己 不知道能坚持多久. Keras sequential顺序模型 顺序模型是多个网络层的线性堆栈. from keras.models ...
- openalyers6.x源码解读-1(世上无难事只要肯放弃)
openalyers6.x源码解读-1(世上无难事只要肯放弃) 第一步.下载源码 第二步.查找入口文件 第三步.先强行解析一个方法 第三步.Object 第一步.下载源码 源码下载地址 https:/ ...
- OSChina 周六乱弹 ——世上无难事,只要肯放弃!
2019独角兽企业重金招聘Python工程师标准>>> @二环南路上的狂奔 : 充满鲜花的世界到底在哪里? Young For You ----GALA 手机党少年们想听歌,请使劲儿 ...
- Vue源码解读-1(世上无难事,只要肯放弃)
从19年开始由于一些原因好久没怎么写博客了,今天心血来潮记录下vue的源码解读历程(可能中间懒了就又停了,世上无难事,只要肯放弃嘛!) 正式开始 准备工作 我们把源码搞下来后,用vscode打开后不要 ...
- keras从入门到放弃(二十)LSTM处理 电影评价预测
电影评价预测,对于词频使用keras.preprocessing.sequence.pad_sequences import keras from keras import layers data = ...
- keras从入门到放弃(十八)批量标准化
什么是批量标准化 批标准化(Batch Normalization,BN),又叫批量归一化,是一种用于改善人工神经网络的性能和稳定性的技术. 这是一种为神经网络中的任何层提供零均值/单位方差输入的技术 ...
- keras从入门到放弃(十五)图片数据增强
import keras from keras import layers import numpy as np import os import shutil base_dir = '../猫狗数据 ...
- keras从入门到放弃(十七)使用预训练网络VGG迁移学习
VGG16网络是13层卷积层,运算起来非常的忙,如果使用CPU基本跑不了 import keras from keras import layers import numpy as np import ...
最新文章
- JavaScript——定时器(setTimeout/setInterval)
- PHP登录密码的生成与验证
- T-SQL编程基础之二:条件选择、循环编程
- nagios常见问题
- linux 脚本调用企业微信_shell或python调用企业微信发送消息(实现报警功能)
- 移动Web利器transformjs入门
- css实现垂直居中(+水平居中)
- python图像切面numpy_NumPy做图像处理不香吗?我用Python把秋日里最美的景色做成了这种效果~...
- 力扣-509 裴波那契数
- SVN创建项目以及检出项目
- 计算机桌面快捷方式误删了,电脑把桌面快捷方式删除了怎么办?电脑快捷方式删除了的恢复方法...
- JAVA架构师之路-视频学习
- Linux下安装宋体以及微软雅黑字体
- 即将30岁的2020年总结,放眼未来的未雨绸缪
- 网购热催生网络模特月入万元多为大学生
- 十七、.net core(.NET 6)搭建基于Quartz组件的定时调度任务
- 人脸识别学生考勤系统【2】--登录
- 我叫mt4最新服务器,我叫mt4新区开服表 最新新区开服时间汇总分享[多图]
- quartus ii怎么生成pof和下载pof文件
- 二进制LDPC码的构造及译码算法