函数式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)相关推荐

  1. keras 世上无难事只要肯放弃(2)

    "sample", "batch", "epoch" 分别是什么? 为了正确地使用 Keras,以下是必须了解和理解的一些常见定义: Sam ...

  2. Keras 世上无难事只要肯放弃(1)

    所有的内容都是从Keras中文文档看的 重新打一遍是因为想督促自己 不知道能坚持多久. Keras sequential顺序模型 顺序模型是多个网络层的线性堆栈. from keras.models ...

  3. openalyers6.x源码解读-1(世上无难事只要肯放弃)

    openalyers6.x源码解读-1(世上无难事只要肯放弃) 第一步.下载源码 第二步.查找入口文件 第三步.先强行解析一个方法 第三步.Object 第一步.下载源码 源码下载地址 https:/ ...

  4. OSChina 周六乱弹 ——世上无难事,只要肯放弃!

    2019独角兽企业重金招聘Python工程师标准>>> @二环南路上的狂奔 : 充满鲜花的世界到底在哪里? Young For You ----GALA 手机党少年们想听歌,请使劲儿 ...

  5. Vue源码解读-1(世上无难事,只要肯放弃)

    从19年开始由于一些原因好久没怎么写博客了,今天心血来潮记录下vue的源码解读历程(可能中间懒了就又停了,世上无难事,只要肯放弃嘛!) 正式开始 准备工作 我们把源码搞下来后,用vscode打开后不要 ...

  6. keras从入门到放弃(二十)LSTM处理 电影评价预测

    电影评价预测,对于词频使用keras.preprocessing.sequence.pad_sequences import keras from keras import layers data = ...

  7. keras从入门到放弃(十八)批量标准化

    什么是批量标准化 批标准化(Batch Normalization,BN),又叫批量归一化,是一种用于改善人工神经网络的性能和稳定性的技术. 这是一种为神经网络中的任何层提供零均值/单位方差输入的技术 ...

  8. keras从入门到放弃(十五)图片数据增强

    import keras from keras import layers import numpy as np import os import shutil base_dir = '../猫狗数据 ...

  9. keras从入门到放弃(十七)使用预训练网络VGG迁移学习

    VGG16网络是13层卷积层,运算起来非常的忙,如果使用CPU基本跑不了 import keras from keras import layers import numpy as np import ...

最新文章

  1. JavaScript——定时器(setTimeout/setInterval)
  2. PHP登录密码的生成与验证
  3. T-SQL编程基础之二:条件选择、循环编程
  4. nagios常见问题
  5. linux 脚本调用企业微信_shell或python调用企业微信发送消息(实现报警功能)
  6. 移动Web利器transformjs入门
  7. css实现垂直居中(+水平居中)
  8. python图像切面numpy_NumPy做图像处理不香吗?我用Python把秋日里最美的景色做成了这种效果~...
  9. 力扣-509 裴波那契数
  10. SVN创建项目以及检出项目
  11. 计算机桌面快捷方式误删了,电脑把桌面快捷方式删除了怎么办?电脑快捷方式删除了的恢复方法...
  12. JAVA架构师之路-视频学习
  13. Linux下安装宋体以及微软雅黑字体
  14. 即将30岁的2020年总结,放眼未来的未雨绸缪
  15. 网购热催生网络模特月入万元多为大学生
  16. 十七、.net core(.NET 6)搭建基于Quartz组件的定时调度任务
  17. 人脸识别学生考勤系统【2】--登录
  18. 我叫mt4最新服务器,我叫mt4新区开服表 最新新区开服时间汇总分享[多图]
  19. quartus ii怎么生成pof和下载pof文件
  20. 二进制LDPC码的构造及译码算法

热门文章

  1. EXCEL 2016常用知识--Excel函数
  2. 关于EAS辅助帐横表的问题
  3. Linux课程特点与目标
  4. java开发工程师报名费多少_Java开发工程师工资水平是多少 看看这些城市就知道...
  5. LCP插件linux-cp-xc-ip6节点
  6. 企业管理的基本知识有哪些?如何梳理企业流程管理?
  7. 如何找回四六级准考证号
  8. Python软件编程等级考试二级——20200614A
  9. 2014中国互联网安全大会(ISC)开幕,沃通与您共襄安全盛会
  10. 关于 tomcat9 下载后启动不了的问题