RNN Seq2Seq 질문입니다.

안녕하세요. LSTM으로 진행했던 Many-to-One Regression 문제를
Seq2Seq로 진행해보려고 합니다.

코드를 구현해보면서 궁금한점이 있습니다.

제가 사용한 encoder, decoder code는 아래와 같습니다.

class lstm_encoder(nn.Module):
def init(self, input_size, hidden_size, num_layers = 1):
super(lstm_encoder, self).init()
self.input_size = input_size
self.hidden_size = hidden_size
self.num_layers = num_layers

    self.lstm = nn.LSTM(input_size = input_size, hidden_size = hidden_size, num_layers = num_layers, batch_first=True)

def forward(self, x_input):
    # x_input = [ batch_size x timeSteps x n_features ]
    lstm_out, hidden = self.lstm(x_input)
    # lstm_out = [ batch_size x timeSteps x hidden_size ]
    # hidden = (hx, cx)= ([ n_layers x batch_size x timeSteps ], [ n_layers x batch_size x timeSteps ])
    return lstm_out, hidden

class lstm_decoder(nn.Module):
def init(self, ouput_size, hidden_size, num_layers = 1):
super(lstm_decoder, self).init()
self.ouput_size = ouput_size
self.hidden_size = hidden_size
self.num_layers = num_layers

    self.lstm = nn.LSTM(ouput_size , hidden_size = hidden_size, num_layers = num_layers, batch_first=True)
    self.linear = nn.Linear(hidden_size, ouput_size)           

def forward(self, x_input, encoder_hidden):
    # x_input = [ batch_size x target_size ]
    lstm_out, hidden = self.lstm(x_input.unsqueeze(1), encoder_hidden) # encoder_hidden_states = context vector
    # lstm_out = [ batch_size x timeSteps x hidden_size ]
    # hidden = (hx, cx)= ([ n_layers x batch_size x timeSteps ], [ n_layers x batch_size x timeSteps ])

    output = self.linear(lstm_out)
    output = output.squeeze(1)
    return output, hidden

질문입니다.

기존의 NLP문제나 제가 봤던 다른 예제 code는 대부분
A도메인의 n개의 feature로 ---------> B도메인의 n개의 feature를 예측하는 문제를 신경망으로 구현했더라구요.

seq2seq 학습을 진행할때, encoder에 들어가는 데이터의 feature 개수와 decoder에 넣어주는(?),예측하고 싶은(?) 데이터의 feature 개수가 동일해야 학습을 진행할 수 있나요?

저는 A도메인의 feature 14개로 --------> B도메인의 feature 7개를 예측하는 신경망을 seq2seq로 구현해보는 시도를 하고 있는데, many-to-one 형태의 예측 신경망을 구현하는게 seq2seq로 되는 문제일까요?

이 글은 마지막 댓글이 달린지 오래(30일)되어 자동으로 닫혔습니다. 댓글 대신 새로운 글을 작성해주세요! :slight_smile: