Time series Seq2Seq中的解码器输入-时间序列分析

Time series Seq2Seq中的解码器输入-时间序列分析,time-series,prediction,mxnet,decoder,seq2seq,Time Series,Prediction,Mxnet,Decoder,Seq2seq,我正在与MxNet合作,我正在研究Seq2Seq模型。假设每个批处理32个序列,每个序列的长度为20(timesteps)。为了创建使用seq2seq模型的架构,我们将把每个序列分成两部分。分裂的方法是非常随意的,但是我们假设我们把序列分成一半。第一部分将被命名为“编码器输入”,实际上是编码器的输入,它将以10(时间步)的顺序组成,很明显,该输入包含N个长度为10的变量。因此,我们将每个编码输入序列的x1,…,x10乘以特征数,这将导致编码输入Xt的特征向量。既然解码器的输出是序列的后半部分,那

我正在与MxNet合作,我正在研究Seq2Seq模型。假设每个批处理32个序列,每个序列的长度为20(timesteps)。为了创建使用seq2seq模型的架构,我们将把每个序列分成两部分。分裂的方法是非常随意的,但是我们假设我们把序列分成一半。第一部分将被命名为“编码器输入”,实际上是编码器的输入,它将以10(时间步)的顺序组成,很明显,该输入包含N个长度为10的变量。因此,我们将每个编码输入序列的x1,…,x10乘以特征数,这将导致编码输入Xt的特征向量。既然解码器的输出是序列的后半部分,那么解码器的输入应该是什么呢?我将解码器输入设置为编码器输入,tha模型工作得相当好。这就是转发功能:

def forward(self, encoder_input, *args):

    state= self.encoder.begin_state(batch_size=encoder_input.shape[0], ctx=mx.cpu())
    encoder_output, encoder_state= self.encoder(encoder_input, state)
    decoder_output, decoder_state= self.decoder(encoder_input, encoder_state)
    output= self.dense(decoder_output)

    return output

使用编码器输入作为解码器输入是否有错误?我在Keras中看到过一些例子,其中他们将解码器输入初始化为一个np.array,具有解码器输出的形状。我曾尝试将解码器输入设置为一组零,但结果(就精度而言)衰减得非常糟糕

我在“动手机器学习”中发现:

换句话说,, 译码器的输入是它应该在指定时间输出的字 上一步(不管它实际输出什么)。第一次 换句话说,它被赋予序列开始(SOS)标记。解码器是 应使用序列结束(EOS)标记结束句子

因此,我假设,如果编码器输入将由z特征的第一个n观察序列组成,无论编码器输出是什么,我们应该向解码器提供编码器状态和解码器输入,这是编码器的预期输出,或者换句话说,是标签的前n个观察序列。尽管如此,在我用python进行的分析中,没有证据表明有更好的结果。也许,当我们有很多特性时,只给解码器提供编码器标签会更好