Keras中的多步多元时间序列分类

Keras中的多步多元时间序列分类,keras,time,deep-learning,classification,series,Keras,Time,Deep Learning,Classification,Series,我想知道你是否能帮助我,我有一个三级时间序列分类问题,我需要预测未来的两级。 我用一个热编码器对输出进行了编码,所以我有3列 我对输出层的尺寸有疑问。当我朝着未来迈出一步时,我可以用 model.add(密集(3,activation='softmax')) 我已经完成的代码还可以,但是我不确定当我有两个步骤时,应该使用哪一个输出层 我的培训数据的维度如下: 氧化钇2 (100861, 2, 3) xtrain2 (100861,6,9) 嗨,我找到了答案,通过使用Keras function

我想知道你是否能帮助我,我有一个三级时间序列分类问题,我需要预测未来的两级。 我用一个热编码器对输出进行了编码,所以我有3列 我对输出层的尺寸有疑问。当我朝着未来迈出一步时,我可以用

model.add(密集(3,activation='softmax'))

我已经完成的代码还可以,但是我不确定当我有两个步骤时,应该使用哪一个输出层

我的培训数据的维度如下:

氧化钇2 (100861, 2, 3) xtrain2 (100861,6,9)



嗨,我找到了答案,通过使用Keras functional API和多输出神经网络解决了问题,代码摘录如下:

 y1 = ytrain2[:, 0].reshape((ytrain2.shape[0], ytrain2.shape[1]))
 y2 = ytrain2[:, 1].reshape((ytrain2.shape[0], ytrain2.shape[1]))
 y3 = ytrain2[:, 2].reshape((ytrain2.shape[0],ytrain2.shape[1]))
 
 Input_1= Input(shape=(n_input,))

 x = Dense(120, activation='relu')(Input_1)
 x=  Dropout(0.15)(x)
 x = Dense(120, activation='relu')(x)
 x=  Dropout(0.15)(x)
 x = Dense(120, activation='relu')(x)
 x=  Dropout(0.15)(x)

 out1 = Dense(3,activation='softmax')(x)
 out2 = Dense(3,activation='softmax')(x)
 out3 = Dense(3,activation='softmax')(x)
 model = Model(inputs=Input_1, outputs=[out1, out2, out3])
 model.compile(optimizer=optimizer, loss='categorical_crossentropy',metrics=rec)
 model.fit(X, [y1,y2,y3],epochs=1054,batch_size=1024,shuffle=True,validation_split=0.12,callbacks=[reduce_lr,callbackEarlyStop], verbose=2  

 y1 = ytrain2[:, 0].reshape((ytrain2.shape[0], ytrain2.shape[1]))
 y2 = ytrain2[:, 1].reshape((ytrain2.shape[0], ytrain2.shape[1]))
 y3 = ytrain2[:, 2].reshape((ytrain2.shape[0],ytrain2.shape[1]))
 
 Input_1= Input(shape=(n_input,))

 x = Dense(120, activation='relu')(Input_1)
 x=  Dropout(0.15)(x)
 x = Dense(120, activation='relu')(x)
 x=  Dropout(0.15)(x)
 x = Dense(120, activation='relu')(x)
 x=  Dropout(0.15)(x)

 out1 = Dense(3,activation='softmax')(x)
 out2 = Dense(3,activation='softmax')(x)
 out3 = Dense(3,activation='softmax')(x)
 model = Model(inputs=Input_1, outputs=[out1, out2, out3])
 model.compile(optimizer=optimizer, loss='categorical_crossentropy',metrics=rec)
 model.fit(X, [y1,y2,y3],epochs=1054,batch_size=1024,shuffle=True,validation_split=0.12,callbacks=[reduce_lr,callbackEarlyStop], verbose=2