当前位置 : 主页 > 编程语言 > python >

如何使Keras接收多个输入

来源:互联网 收集:自由互联 发布时间:2022-06-15
Keras 能够通过其功能 API 处理多个输入(甚至多个输出)。功能 API 与顺序 API(您之前几乎可以肯定通过 Sequential 类使用过)相反,可用于定义更复杂的非顺序模型,包括: 多输入模型

      Keras 能够通过其功能 API 处理多个输入(甚至多个输出)。功能 API 与顺序 API(您之前几乎可以肯定通过 Sequential 类使用过)相反,可用于定义更复杂的非顺序模型,包括:

  • 多输入模型
  • 多输出型号
  • 既是多输入又是多输出的模型
  • 有向无环图
  • 具有共享层的模型

      例如,我们可以将一个简单的顺序神经网络定义为:

model = Sequential()
model.add(Dense(8, input_shape=(10,), activation="relu"))
model.add(Dense(4, activation="relu"))
model.add(Dense(1, activation="linear"))

该网络是一个简单的前馈神经网络,没有 10 个输入,第一个隐藏层有 8 个节点,第二个隐藏层有 4 个节点,最后一个输出层用于回归。

     我们可以使用功能 API 定义示例神经网络:

inputs = Input(shape=(10,))
x = Dense(8, activation="relu")(inputs)
x = Dense(4, activation="relu")(x)
x = Dense(1, activation="linear")(x)
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 神经网络定义了两个输入:

inputA:32-dim
inputB:128-dim

第 2行使用 Keras 的功能 API 定义了一个简单的 32-8-4 网络。同样,第3 行定义了一个 128-64-32-4 网络。然后我们在第 17行合并 x 和 y 的输出。x 和 y 的输出都是 4-dim,所以一旦我们将它们连接起来,我们就有一个 8-dim 向量。然后,我们在第 21 行和第 22 行应用两个全连接层。第一层有 2 个节点,然后是 ReLU 激活,而第二层只有一个具有线性激活的节点(即我们的回归预测)。构建多输入模型的最后一步是定义一个 Model 对象,该对象:

  • 接受我们的两个输入
  • 将输出定义为最终的 FC 层集(即 z )。

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

如何使Keras接收多个输入_全连接

注意我们的模型有两个不同的分支。第一个分支接受我们的 128 维输入,而第二个分支接受 32 维输入。 这些分支相互独立运行,直到它们被连接起来。 从那里从网络输出一个值。

上一篇:提取字符串中””双引号内的内容
下一篇:没有了
网友评论