当前位置: 首页 > 面试题库 >

Keras顺序模型的多个输入

夹谷衡
2023-03-14
问题内容

我正在尝试合并两个模型的输出,并使用keras顺序模型将它们作为第三模型的输入。型号1:

inputs1 = Input(shape=(750,))
x = Dense(500, activation='relu')(inputs1)
x = Dense(100, activation='relu')(x)

型号1:

inputs2 = Input(shape=(750,))
y = Dense(500, activation='relu')(inputs2)
y = Dense(100, activation='relu')(y)

型号3:

merged = Concatenate([x, y])
final_model = Sequential()
final_model.add(merged)
final_model.add(Dense(100, activation='relu'))
final_model.add(Dense(3, activation='softmax'))

直到这里,我的理解是,来自两个模型的输出x和y被合并并作为第三模型的输入。但是当我全都喜欢的时候

module3.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
module3.fit([in1, in2], np_res_array)

in1和in2是尺寸为10000 * 750的两个numpy ndarray,其中包含我的训练数据,而np_res_array是相应的目标。
这给了我错误,因为“列表”对象没有属性“形状” 据我们所知,这就是我们为模型提供多个输入的方式,但是这是什么错误呢?我该如何解决?


问题答案:

您无法使用顺序API来执行此操作。这是因为两个原因:

  1. 顺序模型,顾名思义,是一系列的层,其中每个层都直接连接到其上一层,因此它们不能具有分支(例如,合并层,多个输入/输出层,跳过连接等)。

  2. add()顺序API的方法接受Layer实例作为其参数,而不接受Tensor实例。在您的示例中merged是张量(即连接层的输出)。

此外,使用Concatenate图层的正确方法是这样的:

merged = Concatenate()([x, y])

但是,您也可以使用concatenate(注意小写的“ c”)等效功能接口,如下所示:

merged = concatenate([x, y])

最后,要构建第三个模型,您还需要使用功能性API。



 类似资料:
  • 问题内容: 在Keras中创建顺序模型时,我知道您在第一层中提供了输入形状。然后,此输入形状会构成 隐式 输入层吗? 例如,下面的模型明确指定了2个密集层,但这实际上是一个3层模型,即由输入形状隐含的一个输入层,一个具有32个神经元的隐藏密集层,然后一个具有10个可能输出的输出层组成的模型吗? 问题答案: 好吧,实际上它实际上 是 一个隐式输入层,即您的模型是一个具有三层“输入,隐藏和输出”的“老

  • 我一直在尝试使用Keras构建一个多输入模型。我来自使用顺序模型,并且只有一个相当直接的输入。我一直在查看StackOverflow上的留档(https://keras.io/getting-started/functional-api-guide/)和一些答案(如何在Keras 2.0中“合并”顺序模型?)。基本上,我想要的是让两个输入训练一个模型。一个输入是一段文本,另一个是从该文本中提取的一

  • 我有一个顺序模型定义如下: 我想更改此模型,以获取可变形状的输入。具体来说,第一个维度需要可变。阅读关于指定输入形状的Keras文档,我发现可以在input\u shape元组中使用None条目,其中None表示可能需要任何正整数。 对于现有模型,如果我将input\u形状从(2,4)更改为(None,4),我将收到以下错误: 我不确定,但我不相信当模型包含一个flatte()层时,可以指定可变的

  • 问题内容: 给定一个预测变量向量时,我有一个问题要处理两个输出。假设预测变量矢量看起来像,它是坐标,并且是附加到出现坐标的其他属性。基于这个预测变量集,我想进行预测。这是一个时间序列问题,我正在尝试使用多元回归解决。我的问题是如何设置keras,这可以在最后一层为我提供2个输出。 问题答案:

  • 问题内容: 我正在使用 Keras 运行一个简单的前馈网络。仅具有一个隐藏层,我想对每个输入与每个输出的相关性做出一些推断,并且我想提取权重。 这是模型: 为了提取重量,我写道: 不幸的是,我没有矩阵中的biass列,我知道Keras会自动将其放入。 您知道如何获取偏倚权重吗? 预先感谢您的帮助 ! 问题答案: 对于图层,返回两个元素的列表,第一个元素包含权重,第二个元素包含偏差。因此,您可以简单

  • 本文向大家介绍在keras下实现多个模型的融合方式,包括了在keras下实现多个模型的融合方式的使用技巧和注意事项,需要的朋友参考一下 在网上搜过发现关于keras下的模型融合框架其实很简单,奈何网上说了一大堆,这个东西官方文档上就有,自己写了个demo: 补充知识:keras的融合层使用理解 最近开始研究U-net网络,其中接触到了融合层的概念,做个笔记。 上图为U-net网络,其中上采样层(绿