优化N个权重共享Keras模型的堆叠

时间:2018-10-10 12:36:03

标签: python tensorflow keras

我有两个Keras(Tensorflow后端)模型,它们堆叠在一起构成了一个组合模型:

  • small_modelIn: (None,K), Out: (None,K)
  • large_modelIn: (None,N,K), Out: (None,1)
  • combined_modelN x small_model -> large_model)与In: (None,N,K), Out: (None,1)

large_model需要N的{​​{1}}堆叠输出作为输入。

我可以定义small_model N个,它们共享权重,然后连接它们的输出(从技术上讲,我需要堆叠它们),然后将其发送到small_model,如下面的代码。

我的问题是我需要能够在非常大的large_modelN)上执行此操作,并且我当前的解决方案占用了大量内存和时间在创建模型时,甚至对于> 10**6

我希望有一个解决方案,可以并行地通过N ~ 10**2发送N数据点(例如将模型批处理给模型时所执行的操作),然后收集这些点(使用Keras历史记录,以便可以进行反向传播)并将其发送到small_model,而不必定义large_model的{​​{1}}实例。列出的三个模型的输入和输出形状不应更改,但是当然可以定义其他中间模型。

谢谢。

当前不能令人满意的解决方案(假设Nsmall_model已经存在,并且small_model已定义):

large_model

1 个答案:

答案 0 :(得分:0)

您可以使用TimeDistributed图层包装器来做到这一点:

foodepdep

输出:

install_requires