【问题标题】:Keras: How to make average/maximum operation on top of some layers results?Keras:如何在某些层结果之上进行平均/最大操作?
【发布时间】:2017-03-23 16:27:26
【问题描述】:

我设计具有动态输入量的神经网络。我的想法是用共享模型处理一组数据,然后平均/最大化它们的结果并将分类器放在它上面。 阅读文档后,我确信可以使用 Keras,但我遇到了keras.layers.average 只能接收输入张量的问题。但我需要对模型或其他层进行此操作。

这是我现在拥有的代码

inputs = [Input((countInputCount,))]  # count is always here
downs = []
for i in range(count):
        inputs.append(Input((inputCount,)))
        downs.append(sharedDown(inputs[-1]))
avg = keras.layers.average(downs)
max = keras.layers.maximum(downs)
middle = keras.layers.concatenate([inputs[0], avg, max])

为此我得到了下一个错误:ValueError: A merge layer should be called on a list of inputs.

可能我对这个错误的理解不正确。任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 你不需要输入层。合并层需要输入的列表(即张量列表),而不是Input()s 的列表。
  • 谢谢。问题实际上是列表中 1 张量的边缘情况

标签: python keras


【解决方案1】:

事实上keras.layers.average 适用于任何张量,但不接受一个张量的列表。因此,如果您将面临类似的情况,您可以使用单个 if 语句来处理:

if count==1:
  avg = downs[0]
else:
  avg = keras.layers.average(downs)

【讨论】:

    猜你喜欢
    • 2018-11-24
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2020-09-16
    • 2011-10-05
    相关资源
    最近更新 更多