У меня есть несколько выходных тензоров в моей нейронной сети, и я хочу собрать их в один список в конце функции прямого распространения. По этой причине я использовал for
l oop следующим образом:
output = []
append = output.append
for i in range(self.number):
append(self.out[i](input))
, где self.out
- это torch.nn.ModuleList
из nn.Sequential
слоев в качестве выходных данных модели, input
- это ввод модели и self.number
- количество выходов.
Я хочу оптимизировать это с помощью встроенного метода map
следующим образом:
append = output.append
output = map(lambda x: self.out[x](input)), range(0,self.number))
С обеими функциями выходы одинаковы и учебные работы. Но map
как-то не намного быстрее, чем for
l oop для self.number = 6. Иногда даже медленнее.
1-Могут ли быть сделаны какие-то неправильные шаги, которые я нанесу, что вредит процессу (как повреждение графов) и избегает оптимизации?
2-Или мы не можем ожидать идеальных результатов от map
для маленьких циклов?
3-Есть ли лучший способ оптимизировать for
l oop без повреждения torch
данные?
Заранее спасибо!