我想实现一个时间序列预测模型,该模型有一个非图像矩阵窗口作为输入,每个矩阵由第一层的Conv2d
层处理,然后将该conv层的输出合并为时间维度,传递到像LSTM
这样的循环层
一种方法是使用时间分布技术,但TimeDistributed layer
将同一层应用于多个输入。每个输入产生一个输出,以在时间上得到结果,时间分布技术将在所有卷积头之间共享相同的权重,这不是我想要的,例如,如果你注入5个矩阵,权重不会调整5次,而只调整一次,并分布到当前时间分布层中定义的每个块。我怎样才能避免这种情况,并拥有独立的卷积头,输出合并为下一层的时间维度
我试着实现它如下
Matrix_Dimention=20;
Input_Window=4;
Input_Matrixes=[]
ConvLayers=[]
for i in range(0 , Input_Window):
Inp_Matrix=layers.Input(shape=(Matrix_Dimention,Matrix_Dimention,1));
Input_Matrixes.append(Inp_Matrix);
conv=layers.Conv2D(64, 5, activation='relu', input_shape=(Matrix_Dimention,Matrix_Dimention,1))(Inp_Matrix)
ConvLayers.append(conv);
#Temporal Concatenation
Spatial_Layers_Concate = layers.Concatenate(ConvLayers); # this causes error : Inputs to a layer should be tensors
#Temporal Component
LSTM_Layer=layers.LSTM(activation='relu',return_sequences=False)(Spatial_Layers_Concate )
Model = keras.Model(Input_Matrixes, LSTM_Layer)
Model.compile(optimizer='adam', loss=keras.losses.MeanSquaredError)
如果您通过更正我的实现来提供您的答案,或者提供您自己的答案,如果有更好的方法来形成这个想法,那就太好了,tnx
目前没有回答
相关问题 更多 >
编程相关推荐