【发布时间】:2020-07-24 08:21:56
【问题描述】:
数据:
形状 = (T, M) #所有公司都相同的宏观时间序列
形状 = (T, N, K) #公司特定数据的微观时间序列
其中 T 是以月为单位的时间维度,M 是宏观特征的数量,N 是公司的数量,K 是市盈率等微观特征的数量。
任务:使用 LSTM 输出,重复 N 次并与微数据连接
我想使用 LSTM 的输出,即所有公司的 T 中所有 t 的所有(这里 H=4)隐藏状态,因此设置 return_sequences=True,并重复它们 N 次以便将它们与我的微数据,即用shape = (T, N, K+H)获取新数据
然后,这些新数据将被重新整形为(T*N, K+H),并馈送到具有自定义损失函数的前馈神经网络中,该损失函数适用于两个神经网络,并且只能在时间 T 时通过构造计算,因此具有批处理-大小=1!。
我已经尝试过以下方法,但由于暗淡它不起作用:
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
有没有一种有效的方法可以达到这个目标,甚至不需要重复?
【问题讨论】:
标签: python tensorflow keras keras-layer