函数式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. com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@4e47db1f -- Acquisition Attempt Failed!!!
  2. Word2013、2016中页码总页数设置为当前节总页数
  3. C# 模拟鼠标移动与点击
  4. Django2.2安装
  5. 无线循环里面 string = “i”会内存溢出吗?_记一次公司JVM堆溢出抽茧剥丝定位的过程...
  6. Oracle学习笔记:备份、还原、恢复的一点理解
  7. 享元模式 - 结构型模式
  8. 通过BAT、网易、京东产品经理的简历大概什么样?
  9. 所见即所得的开源跨平台 Markdown 编辑器
  10. 介绍一个基于ASP.NET MVC的框架Catharsis
  11. php长微博,用Word一键发布长微博
  12. 微信公众平台登录 超详解 Springboot版
  13. DOTA2怎么清除缓存_家里没网了怎么办?不要慌,学会这两招自己就能解决
  14. 迅雷极速版修改边下边播的默认播放器为PotPlayer
  15. php支付接口验签,银联支付接口开发php版
  16. 综合案例之学成在线首页
  17. ssh隧道连接的3种方式
  18. 猫咪视频_猫视频如何进入您的手机
  19. 安卓开发者中心!那些BAT大厂的Android面试官到底在想些什么?持续更新中
  20. GNU Radio学习一 :什么是GUN Radio

热门文章

  1. html div标签内背景图片自适应div大小
  2. 3. kafka开启JMX
  3. 主要针对项目路径发生变化产生 报错:Project SDK is not defined
  4. 2021年电工(初级)考试报名及电工(初级)考试资料
  5. linux 查看子进程和父进程
  6. js的attribute
  7. Ubuntu14.04源
  8. 福州市计算机等级考试培训点,计算机等级考试培训
  9. SOLIDWORKS提升 SAE赛车队成绩
  10. CPU层次的电源管理