广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Keras函数式(functional)API的使用方式
  • 888
分享到

Keras函数式(functional)API的使用方式

Keras函数式Keras functional APIKeras functional 2023-02-22 09:02:26 888人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录多层感知器(Multilayer Perceptron)卷积神经网络(Convolutional Neural Network)循环神经网络(Recurrent Neural N

多层感知器(Multilayer Perceptron)

定义了用于二分类的多层感知器模型。

模型输入32维特征,经过三个全连接层,每层使用relu线性激活函数,并且在输出层中使用sigmoid激活函数,最后用于二分类。

##------ Multilayer Perceptron ------##
from keras.models import Model
from keras.layers import Input, Dense
from keras import backend as K
K.clear_session() 

# MLP model
x = Input(shape=(32,))
hidden1 = Dense(10, activation='relu')(x)
hidden2 = Dense(20, activation='relu')(hidden1)
hidden3 = Dense(10, activation='relu')(hidden2)
output = Dense(1, activation='sigmoid')(hidden3)
model = Model(inputs=x, outputs=output)

# summarize layers
model.summary()

模型的结构和参数如下:

Multilayer Perceptron

卷积神经网络(Convolutional Neural Network)

定义用于图像分类的卷积神经网络。

该模型接收3通道的64×64图像作为输入,然后经过两个卷积和池化层的序列作为特征提取器,接着过一个全连接层,最后输出层过softmax激活函数进行10个类别的分类。

##------ Convolutional Neural Network ------##
from keras.models import Model
from keras.layers import Input
from keras.layers import Dense, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K
K.clear_session()

# CNN model
x = Input(shape=(64,64,3))
conv1 = Conv2D(16, (5,5), activation='relu')(x)
pool1 = MaxPooling2D((2,2))(conv1)
conv2 = Conv2D(32, (3,3), activation='relu')(pool1)
pool2 = MaxPooling2D((2,2))(conv2)
conv3 = Conv2D(32, (3,3), activation='relu')(pool2)
pool3 = MaxPooling2D((2,2))(conv3)
flat = Flatten()(pool3)
hidden1 = Dense(512, activation='relu')(flat)
output = Dense(10, activation='softmax')(hidden1)
model = Model(inputs=x, outputs=output)

# summarize layers
model.summary()

模型的结构和参数如下:

CNN

循环神经网络(Recurrent Neural Network)

定义一个用于文本序列分类的LSTM网络。

该模型需要100个时间步长作为输入,然后经过一个Embedding层,每个时间步变成128维特征表示,然后经过一个LSTM层,LSTM输出过一个全连接层,最后输出用sigmoid激活函数用于进行二分类预测。

##------ Recurrent Neural Network ------##
from keras.models import Model
from keras.layers import Input
from keras.layers import Dense, LSTM, Embedding
from keras import backend as K
K.clear_session()

VOCAB_SIZE = 10000
EMBED_DIM = 128

x = Input(shape=(100,), dtype='int32')
embedding = Embedding(VOCAB_SIZE, EMBED_DIM, mask_zero=True)(x)
hidden1 = LSTM(64)(embedding)
hidden2 = Dense(32, activation='relu')(hidden1)
output = Dense(1, activation='sigmoid')(hidden2)
model = Model(inputs=x, outputs=output)

# summarize layers
model.summary()

模型的结构和参数如下:

LSTM

Bidirectional recurrent neural network

定义一个双向循环神经网络,可以用来完成序列标注等任务,相比上面的LSTM网络,多了一个反向的LSTM,其它设置一样。

##------ Bidirectional recurrent neural network ------##
from keras.models import Model
from keras.layers import Input, Embedding
from keras.layers import Dense, LSTM, Bidirectional
from keras import backend as K
K.clear_session()

VOCAB_SIZE = 10000
EMBED_DIM = 128
HIDDEN_SIZE = 64
# input layer
x = Input(shape=(100,), dtype='int32')
# embedding layer
embedding = Embedding(VOCAB_SIZE, EMBED_DIM, mask_zero=True)(x)
# BiLSTM layer
hidden = Bidirectional(LSTM(HIDDEN_SIZE, return_sequences=True))(embedding)
# prediction layer
output = Dense(10, activation='softmax')(hidden)
model = Model(inputs=x, outputs=output)

model.summary()

模型的结构和参数如下:

BiLSTM

共享输入层模型(Shared Input Layer Model)

定义了具有不同大小内核的多个卷积层来解释图像输入。

该模型采用尺寸为64×64像素的3通道图像。

有两个共享此输入的CNN特征提取子模型; 第一个内核大小为5x5,第二个内核大小为3x3。

把提取的特征展平为向量然后拼接成一个长向量,然后过一个全连接层,最后输出层完成10分类。

##------ Shared Input Layer Model ------##

from keras.models import Model
from keras.layers import Input
from keras.layers import Dense, Flatten
from keras.layers import Conv2D, MaxPooling2D, Concatenate
from keras import backend as K
K.clear_session()

# input layer
x = Input(shape=(64,64,3))
# first feature extractor
conv1 = Conv2D(32, (3,3), activation='relu')(x)
pool1 = MaxPooling2D((2,2))(conv1)
flat1 = Flatten()(pool1)
# second feature extractor 
conv2 = Conv2D(16, (5,5), activation='relu')(x)
pool2 = MaxPooling2D((2,2))(conv2)
flat2 = Flatten()(pool2)
# merge feature
merge = Concatenate()([flat1, flat2])
# interpretation layer
hidden1 = Dense(128, activation='relu')(merge)
# prediction layer
output = Dense(10, activation='softmax')(merge)
model = Model(inputs=x, outputs=output)

model.summary()

模型的结构和参数如下:

Shared-Input-Layer

Shared Feature Extraction Layer

定义一个共享特征抽取层的模型,这里共享的是LSTM层的输出,具体共享参见代码

##------ Shared Feature Extraction Layer ------##
from keras.models import Model
from keras.layers import Input, Embedding
from keras.layers import Dense, LSTM, Concatenate
from keras import backend as K
K.clear_session()

# input layer
x = Input(shape=(100,32))
# feature extraction
extract1 = LSTM(64)(x)
# first interpretation model
interp1 = Dense(32, activation='relu')(extract1)
# second interpretation model
interp11 = Dense(64, activation='relu')(extract1)
interp12 = Dense(32, activation='relu')(interp11)
# merge interpretation
merge = Concatenate()([interp1, interp12])
# output layer
output = Dense(10, activation='softmax')(merge)
model = Model(inputs=x, outputs=output)

model.summary()

模型的结构和参数如下:

Shared-Feature-Extraction-Layer

多输入模型(Multiple Input Model)

定义有两个输入的模型,这里测试的是输入两张图片,一个输入是单通道的64x64,另一个是3通道的32x32,两个经过卷积层、池化层后,展平拼接,最后进行二分类。

##------ Multiple Input Model  ------##
from keras.models import Model
from keras.layers import Input
from keras.layers import Dense, Flatten
from keras.layers import Conv2D, MaxPooling2D, Concatenate
from keras import backend as K
K.clear_session()

# first input model
input1 = Input(shape=(64,64,1))
conv11 = Conv2D(32, (5,5), activation='relu')(input1)
pool11 = MaxPooling2D(pool_size=(2,2))(conv11)
conv12 = Conv2D(16, (3,3), activation='relu')(pool11)
pool12 = MaxPooling2D(pool_size=(2,2))(conv12)
flat1 = Flatten()(pool12)
# second input model
input2 = Input(shape=(32,32,3))
conv21 = Conv2D(32, (5,5), activation='relu')(input2)
pool21 = MaxPooling2D(pool_size=(2,2))(conv21)
conv22 = Conv2D(16, (3,3), activation='relu')(pool21)
pool22 = MaxPooling2D(pool_size=(2,2))(conv22)
flat2 = Flatten()(pool22)
# merge input models
merge = Concatenate()([flat1, flat2])
# interpretation model
hidden1 = Dense(20, activation='relu')(merge)
output = Dense(1, activation='sigmoid')(hidden1)
model = Model(inputs=[input1, input2], outputs=output)

model.summary()

模型的结构和参数如下:

Multiple-Input-Model

多输出模型(Multiple Output Model)

定义有多个输出的模型,以文本序列输入LSTM网络为例,一个输出是对文本的分类,另外一个输出是对文本进行序列标注。

##------ Multiple Output Model ------ ##
from keras.models import Model
from keras.layers import Input
from keras.layers import Dense, Flatten, TimeDistributed, LSTM
from keras.layers import Conv2D, MaxPooling2D, Concatenate
from keras import backend as K
K.clear_session()

x = Input(shape=(100,1))
extract = LSTM(10, return_sequences=True)(x)

class11 = LSTM(10)(extract)
class12 = Dense(10, activation='relu')(class11)
output1 = Dense(1, activation='sigmoid')(class12)
output2 = TimeDistributed(Dense(1, activation='linear'))(extract)
model = Model(inputs=x, outputs=[output1, output2])

model.summary()

模型的结构和参数如下:

Multiple-Output-Model

参考

[1] https://Machinelearningmastery.com/keras-functional-api-deep-learning/

[2] Https://keras.io/getting-started/functional-api-guide/

[3] https://Tensorflow.Google.cn/alpha/guide/keras/functional

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Keras函数式(functional)API的使用方式

本文链接: https://www.lsjlt.com/news/197063.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Keras函数式(functional)API的使用方式
    目录多层感知器(Multilayer Perceptron)卷积神经网络(Convolutional Neural Network)循环神经网络(Recurrent Neural N...
    99+
    2023-02-22
    Keras函数式 Keras functional API Keras functional
  • Keras函数式API怎么使用
    这篇文章主要介绍了Keras函数式API怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Keras函数式API怎么使用文章都会有所收获,下面我们一起来看看吧。多层感知器(Multilayer Percep...
    99+
    2023-07-05
  • 详解C++ functional库中的仿函数使用方法
    目录一、仿函数简介二、仿函数简要写法示例三、使用C++自带的仿函数(1)算术仿函数(2)关系仿函数(3)逻辑仿函数一、仿函数简介 仿函数(functor)又称之为函数对象(funct...
    99+
    2022-11-13
  • keras回调函数的使用
    目录回调函数fit()方法中使用callbacks参数模型的保存和加载通过对Callback类子类化来创建自定义回调函数【其他】模型的定义 和 数据加载回调函数 回调函数是一个对象(...
    99+
    2023-03-13
    keras回调函数 keras回调
  • vuecomposition-api封装组合式函数的操作方法
    目录介绍最佳实践1. options对象化2. 动态返回3. 灵活地使用ref4. 异步变同步5. 简单的状态管理参考资料介绍 在 Vue 应用的概念中,“组合式函数&r...
    99+
    2022-11-13
  • MySQL空间函数ST_Distance_Sphere()的使用方式
    目录空间函数ST_Distance_Sphere()的使用测试st_distance_sphere计算两坐标点距离例子空间函数ST_Distance_Sphere()的使用 返回球体上两个点和/或多点之间的最小球面距离(...
    99+
    2022-11-19
    MySQL空间函数 MySQL ST_Distance_Sphere 使用ST_Distance_Sphere()
  • Typescrip异步函数Promise使用方式
    目录Typescrip异步函数Promisetypescript- typescrip与react对象的类型数组类型函数类型类型断言内置对象泛型React 中使用Typescrip异...
    99+
    2022-11-13
  • C++11lambda表达式在回调函数中的使用方式
    目录一、lambda表达式在C++异步框架中的应用二、如何在C-style注册回调函数中使用lambda表达式?在回调函数中使用lambda表达式的好处,在于可以利用C++的RAII...
    99+
    2022-11-13
    C++11 lambda表达式 使用回调函数 C++11 lambda
  • TypeScript 泛型重载函数的使用方式
    目录前言TypeScript 的运行环境1. ts-node2. tscTypeScript 中的函数重载简单的排序算法1. 快速排序2. 中文排序3. 字符串自排序4. 通过泛型整...
    99+
    2022-11-13
    TypeScript 泛型重载函数使用方式 TypeScript 泛型重载函数
  • PHP中随机函数rand()的使用方式
    这篇文章主要讲解了“PHP中随机函数rand()的使用方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中随机函数rand()的使用方式”吧!首先二话不说,创建一个PHP示例文件dem...
    99+
    2023-06-20
  • vue-next函数式api的示例分析
    小编给大家分享一下vue-next函数式api的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!setupsetup 会作...
    99+
    2022-10-19
  • C++11 成员函数作为回调函数的使用方式
    目录C++11成员函数作为回调函数使用示例1示例2类成员函数作为回调函数的方法及注意点类成员函数当回调函数的方法为什么回调函数必须为静态函数?类的静态成员函数如何访问非静态成员?C+...
    99+
    2022-11-13
    C++11 成员函数 C++11 回调函数 使用回调函数
  • Python numpy下几种fft函数的使用方式
    目录fftrfftfftfreqifftirfft总结numpy下fft模块提供了丰富的fft函数,几种常用的在这里记录一下使用方式 fft 输入实数samples,如果输入的sam...
    99+
    2022-11-11
  • php中函数调用函数的方式有哪些
    这篇文章主要讲解了“php中函数调用函数的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中函数调用函数的方式有哪些”吧!直接调用最基本的方式调用函数是直接在代码中调用它。当你...
    99+
    2023-07-05
  • .NET6 Minimal API的使用方式是什么
    这篇文章主要介绍“.NET6 Minimal API的使用方式是什么”,在日常操作中,相信很多人在.NET6 Minimal API的使用方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
    99+
    2023-06-21
  • 基于keras中训练数据的几种方式对比(fit和fit_generator)
    一、train_on_batch model.train_on_batch(batchX, batchY) train_on_batch函数接受单批数据,执行反向传播,然后更新...
    99+
    2022-11-12
  • Java8处理数据的函数式方式是什么
    本篇内容介绍了“Java8处理数据的函数式方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!处理数据的函数式方式Java 8 不仅仅添...
    99+
    2023-06-17
  • MySQL中json_extract函数说明及使用方式
    目录1. json_extract 使用场景说明2. MySQL json_extract 函数简介2.1 函数简介2.2 使用方式2.3 注意事项3. 数据验证3.1 提取普通js...
    99+
    2022-11-13
  • 浅析php中函数调用函数的不同方式
    在PHP中,函数调用可能是程序中最常用的操作之一。但是,当你需要一个函数调用另一个函数的时候,你需要了解一些细节。在本文中,我们将讨论PHP中函数调用函数的不同方式,以帮助你更好地理解这个过程。直接调用最基本的方式调用函数是直接在代码中调用...
    99+
    2023-05-14
    php 函数
  • 关于.NET6 Minimal API的使用方式详解
    目录前言使用方式几行代码构建Web程序更改监听地址日志操作基础环境配置主机相关设置默认容器替换中间件相关请求处理路由约束模型绑定绑定示例自定义绑定总结前言 随着.Net6的发布,微软...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作