首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >所有隐藏状态的重复keras LSTM输出

所有隐藏状态的重复keras LSTM输出
EN

Stack Overflow用户
提问于 2020-07-24 08:21:56
回答 1查看 188关注 0票数 0

数据:

具有形状= (T,M) #的宏观时间序列对所有企业都是相同的

形状= (T,N,K) #特定数据的微观时间序列

其中T是月份的时间维数,M是宏观特征的个数,N是企业的数目,K是P/E比等微观特征的个数。

任务:使用LSTM输出,重复N次并与微数据连接。

我希望对所有公司使用LSTM的输出,即所有t中t的所有(此处H=4)隐藏状态,从而设置return_sequences=True,并重复它们N次,以便将它们与我的微数据连接起来,即用shape = (T, N, K+H)获取新数据。

然后,这些新的数据将被重塑为(T*N, K+H),并被输入一个具有自定义损失函数的前馈神经网络,该函数适用于两个神经网络,通过构造只能在时间T上计算,从而具有批处理大小=1!

我尝试过以下方法,但由于dims的原因,它无法工作:

代码语言:javascript
运行
复制
from keras.layers import concatenate, Input, LSTM, RepeatVector
from keras.utils.vis_utils import plot_model
from keras.models        import Model

in_macro        = Input(shape = (T, M),         name = 'macro_input')
in_micro        = Input(shape = (T, N, K),      name = 'micro_input')

lstm            = LSTM(4, return_sequences=True)(in_macro)
rep             = RepeatVector(N)(lstm)
conc            = concatenate([in_micro, rep])
model           = Model(inputs=[in_micro,in_macro], outputs=conc)

plot_model(model, show_shapes=True)

ValueError: Input 0 is incompatible with layer repeat_vector_1: expected ndim=2, found ndim=3

是否有一种有效的方法来达到这一目标,甚至不需要重复?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-24 11:32:07

使用Lambda层和堆栈找到解决方案:

代码语言:javascript
运行
复制
from keras.layers import concatenate, Input, LSTM
from keras.utils.vis_utils import plot_model
from keras.models import Model
import keras.backend as k

in_macro = Input(shape=(T, M), name='macro_input')
in_micro = Input(shape=(T, N, K), name='micro_input')

lstm = LSTM(4, return_sequences=True)(in_macro)
stack = Lambda(lambda x: k.stack(N*[x], axis=2))(lstm)
conc = concatenate([in_micro, stack])
model = Model(inputs=[in_micro,in_macro], outputs=conc)

plot_model(model, show_shapes=True)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63069702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档