2024年最全深度学习高级,Keras多输入和混合数据实现回归模型

本文介绍了如何使用Keras的函数式API构建一个多输入模型,该模型可以处理混合数据类型,包括数字/分类数据和图像数据,用于回归预测。文章详细阐述了数据预处理、模型构建(包括多层感知器和卷积神经网络分支)以及模型训练的过程,展示了如何结合不同数据类型的输入以预测房价。
摘要由CSDN通过智能技术生成

model = Model(inputs, x)

请注意我们如何不再依赖 Sequential 类。 要了解 Keras 函数 API 的强大功能,请考虑以下代码,其中我们创建了一个接受多个输入的模型:

define two sets of inputs

inputA = Input(shape=(32,))

inputB = Input(shape=(128,))

the first branch operates on the first input

x = Dense(8, activation=“relu”)(inputA)

x = Dense(4, activation=“relu”)(x)

x = Model(inputs=inputA, outputs=x)

the second branch opreates on the second input

y = Dense(64, activation=“relu”)(inputB)

y = Dense(32, activation=“relu”)(y)

y = Dense(4, activation=“relu”)(y)

y = Model(inputs=inputB, outputs=y)

combine the output of the two branches

combined = concatenate([x.output, y.output])

apply a FC layer and then a regression prediction on the

combined outputs

z = Dense(2, activation=“relu”)(combined)

z = Dense(1, activation=“linear”)(z)

our model will accept the inputs of the two branches and

then output a single value

model = Model(inputs=[x.input, y.input], outputs=z)

在这里,您可以看到我们为 Keras 神经网络定义了两个输入:

  • 输入A:32-dim

  • 输入B : 128-dim

使用 Keras 的函数式 API 定义了一个简单的 32-8-4 网络。

类似地,定义了一个 128-64-32-4 网络。

然后我们合并 x 和 y 的输出。 x 和 y 的输出都是 4-dim,所以一旦我们将它们连接起来,我们就有一个 8-dim 向量。 然后,我们应用另外两个完全连接的层。第一层有 2 个节点,然后是 ReLU 激活,而第二层只有一个具有线性激活的节点(即我们的回归预测)。 构建多输入模型的最后一步是定义一个模型对象,它:

  • 接受我们的两个输入

  • 将输出定义为最终的 FC 层集(即 z )。

如果您要使用 Keras 来可视化模型架构,它将如下所示:

在这里插入图片描述

图 3:该模型有两个输入分支,最终合并并产生一个输出。 Keras 函数式 API 支持这种类型的架构以及您可以想象的其他架构。

注意我们的模型有两个不同的分支。 第一个分支接受我们的 128-d 输入,而第二个分支接受 32-d 输入。 这些分支彼此独立运行,直到它们连接起来。 从那里从网络输出单个值。 在本教程的其余部分,您将学习如何使用 Keras 创建多个输入网络。

房价数据集

================================================================

image-20211103132539807

图 4:房价数据集由数字/分类数据和图像数据组成。 使用 Keras,我们将构建一个支持多输入和混合数据类型的模型。 结果将是预测房屋价格/价值的 Keras 回归模型。

数据集地址:emanhamed/Houses-dataset: This is the first benchmark dataset for houses prices that contains both images and textual information that was introduced in our paper. (github.com)

该数据集包括数字/分类数据以及数据集中 535 个示例房屋中的每一个的图像数据。 数字和分类属性包括:

  • 卧室数量

  • 浴室数量

  • 面积(即平方英尺)

  • 邮政编码

每个房子总共提供了四张图片:

  • 卧室

  • 浴室

  • 厨房

  • 房子的正面图

今天,我们将使用 Keras 处理多个输入和混合数据。 我们将接受数字/分类数据以及我们的图像数据到网络。 将定义网络的两个分支来处理每种类型的数据。 然后将在最后合并分支以获得我们最终的房价预测。

通过这种方式,我们将能够利用 Keras 处理多个输入和混合数据。

项目结构

===============================================================

$ tree --dirsfirst --filelimit 10

.

├── Housesdataset

│ ├── HousesDataset [2141 entries]

│ └── README.md

├── model

│ ├── init.py

│ ├── datasets.py

│ └── models.py

└── mixed_training.py

Houses-dataset 文件夹包含我们在本系列中使用的 House Prices 数据集。 当我们准备好运行 mix_training.py 脚本时,您只需要提供一个路径作为数据集的命令行参数(我将在结果部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值