Я пытаюсь создать авто-кодировщик, но продолжаю сталкиваться с проблемой индексации при попытке отсоединиться.
Это мой код для кодировки:
from torch.autograd import Variable
test_in = Variable(torch.rand(1, 73, 480))
layer1 = nn.Conv1d(73, 256, kernel_size=3, stride=1, padding=2, bias=True)
layer2 = nn.ReLU()
layer3 = nn.AdaptiveMaxPool1d(240, return_indices=True)
drop_out = nn.Dropout(0.25)
out = drop_out(test_in)
out = layer1(out)
out = layer2(out)
out, indices = layer3(out)
Это код для моего декодирования:
layer1_d = nn.Conv1d(256, 73, kernel_size=2, stride=1, padding=2, bias=True)
drop_out_d = nn.Dropout(0.25)
unpool_d = nn.MaxUnpool1d(3,1)
out_d = unpool_d(out, indices, output_size= (1, 256, 480))
out_d = drop_out_d(out_d)
out_d = layer1_d(out_d)
Но я получаю эту ошибку на unpool
step
RuntimeError: Обнаружен недопустимый максимальный индекс: 480 (выходные тома имеют размер 480x1
Результирующий вывод (out
) и indices
изэтап кодирования имеет следующую форму соответственно torch.Size([1, 256, 240])
и torch.Size([1, 256, 240])
.