赞
踩
model = Model(inputs, x)
请注意我们如何不再依赖 Sequential 类。 要了解 Keras 函数 API 的强大功能,请考虑以下代码,其中我们创建了一个接受多个输入的模型:
inputA = Input(shape=(32,))
inputB = Input(shape=(128,))
x = Dense(8, activation=“relu”)(inputA)
x = Dense(4, activation=“relu”)(x)
x = Model(inputs=inputA, outputs=x)
y = Dense(64, activation=“relu”)(inputB)
y = Dense(32, activation=“relu”)(y)
y = Dense(4, activation=“relu”)(y)
y = Model(inputs=inputB, outputs=y)
combined = concatenate([x.output, y.output])
z = Dense(2, activation=“relu”)(combined)
z = Dense(1, activation=“linear”)(z)
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 创建多个输入网络。
================================================================
图 4:房价数据集由数字/分类数据和图像数据组成。 使用 Keras,我们将构建一个支持多输入和混合数据类型的模型。 结果将是预测房屋价格/价值的 Keras 回归模型。
该数据集包括数字/分类数据以及数据集中 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。