0

私はPytorch seq2seq チュートリアルに従っており、以下はエンコーダー関数の定義方法です。

class EncoderRNN(nn.Module):
    def __init__(self, input_size, hidden_size):
        super(EncoderRNN, self).__init__()
        self.hidden_size = hidden_size

        self.embedding = nn.Embedding(input_size, hidden_size)
        self.gru = nn.GRU(hidden_size, hidden_size)

    def forward(self, input, hidden):
        embedded = self.embedding(input).view(1, 1, -1)
        output = embedded
        output, hidden = self.gru(output, hidden)
        return output, hidden

    def initHidden(self):
        return torch.zeros(1, 1, self.hidden_size, device=device)

forwardただし、トレーニング中にメソッドが実際に呼び出されることはないようです。

チュートリアルでエンコーダーの forward メソッドがどのように使用されているかを次に示します。

    for ei in range(input_length):
        encoder_output, encoder_hidden = encoder(input_tensor[ei], encoder_hidden)
        encoder_outputs[ei] = encoder_output[0, 0]

encoder.forwardただの代わりになるはずではありませんencoderか?私が認識していない Pytorch の自動「転送」メカニズムはありますか?

4

1 に答える 1