我有两个Keras(Tensorflow后端)模型,它们堆叠在一起构成了一个组合模型:
small_model
与In: (None,K), Out: (None,K)
large_model
与In: (None,N,K), Out: (None,1)
combined_model
(N x small_model -> large_model
)与In: (None,N,K), Out: (None,1)
large_model
需要N
的{{1}}堆叠输出作为输入。
我可以定义small_model
N
个,它们共享权重,然后连接它们的输出(从技术上讲,我需要堆叠它们),然后将其发送到small_model
,如下面的代码。
我的问题是我需要能够在非常大的large_model
(N
)上执行此操作,并且我当前的解决方案占用了大量内存和时间在创建模型时,甚至对于> 10**6
。
我希望有一个解决方案,可以并行地通过N ~ 10**2
发送N
数据点(例如将模型批处理给模型时所执行的操作),然后收集这些点(使用Keras历史记录,以便可以进行反向传播)并将其发送到small_model
,而不必定义large_model
的{{1}}实例。列出的三个模型的输入和输出形状不应更改,但是当然可以定义其他中间模型。
谢谢。
当前不能令人满意的解决方案(假设N
和small_model
已经存在,并且small_model
已定义):
large_model