W PyTorch możemy definiować architektury na wiele sposobów. Tutaj chciałbym stworzyć prostą sieć LSTM przy użyciu modułu Sequential
.Proste LSTM w PyTorch z modułem sekwencyjnym
W palniku Lua ja zwykle iść z:
model = nn.Sequential()
model:add(nn.SplitTable(1,2))
model:add(nn.Sequencer(nn.LSTM(inputSize, hiddenSize)))
model:add(nn.SelectTable(-1)) -- last step of output sequence
model:add(nn.Linear(hiddenSize, classes_n))
Jednak w PyTorch, nie znaleźliśmy równowartość SelectTable
dostać ostatnią wyjście.
nn.Sequential(
nn.LSTM(inputSize, hiddenSize, 1, batch_first=True),
# what to put here to retrieve last output of LSTM ?,
nn.Linear(hiddenSize, classe_n))
Wcześniej dokładnie zakodowałem LSTM. Ale moje pytanie brzmi: jak zrobiłbyś to w ramach modułu sekwencyjnego 'nn.Sequential'? LSTM zwraca dwie wartości, 'output' i' hn' w twoim kodzie, jak odzyskać wyjście [-1] w stylu 'Sequential'? – BiBi
Nie sądzę, że to uczciwe, aby ująć moją odpowiedź, ale zaktualizowałem ją, dodając więcej dowodów na to, że używanie pojemników, tak jak w Lua Torch, jest przestarzałe. –
Zgodnie z [tym wpisem] (https://discuss.pytorch.org/t/accessing-intermediate-data-in-nn-sequential/637), chcieli pozbyć się modułu 'Sequential' w PyTorch, ale zachował ją dla wygody jako pojemnik. Domyślam się, że nie jest możliwy dostęp do pośredniego wyjścia w kontenerze 'Sequential'. – BiBi