Я создал класс с nn.Module в качестве подкласса.
В моем классе я должен создать N чисел линейного преобразования, где N задано в качестве параметров класса.
Поэтому я действую следующим образом:
self.list_1 = []
for i in range(N):
self.list_1.append(nn.Linear(self.x, 1, bias=mlp_bias))
В методе forward я вызываю эти матрицы (с list_1 [i]) и конкататирую результаты.
Две вещи:
1)
Несмотря на то, что я использую model.cuda (), эти линейные преобразования используются в процессоре, и я получаю следующую ошибку:
RuntimeError: Ожидаемый объект типа Variable [torch.cuda.FloatTensor] но обнаружил переменную типа [torch.FloatTensor] для аргумента # 1 'mat2'
Мне нужно сделать
self.list_1.append(nn.Linear(self.x, 1, bias=mlp_bias).cuda())
Это не требуется, если вместо этого, я делаю:
self.nn = nn.Linear(self.x, 1, bias=mlp_bias)
, а затем непосредственно использую self.nn.
2)
По более очевидной причине, когда я печатаю (модель) в моем основном,Линейные матрицы в моем списке не напечатаны.
Есть ли другой способ.может быть, используя bmm?Я нахожу это менее простым, и я действительно хочу, чтобы мои результаты N были отдельно.
Заранее спасибо,
M