Я хочу изменить некоторые функции в "torch.nn.functional", а затем я использую "importlib.reload" для перезагрузки нового "torch.nn.functional". Но я сталкиваюсь с ошибкой во время выполнения: функция 'avg_pool2d' уже имеет строку документации.
Я пытаюсь выполнить некоторую работу над excitationbp (https://github.com/greydanus/excitationbp),), и существует операция с именем "eb.use_eb ()" для изменения "torch.nn.functional". Функция eb.use_eb () имеет вид для изменения «torch.nn.linear», «torch.nn.functional.conv1d» и т. д. Я пытаюсь изменить код, в том числе многие eb.use_eb () в utils.py. Когда я хочу запустить оригинал "torch.nn.linear", я должен запустить eb.use_eb (False). Но модуль загружен в начало файла (импорт torch.nn.funtional). Поэтому я хочу перезагрузить модуль "torch.nn .funtional».
Когда я использую «importlib.reload», я сталкиваюсь с ошибкой.
eb.use_eb(False,True)
importlib.reload(torch)
importlib.reload(torch.nn)
importlib.reload(torch.nn.functional)
print("gradient_evidence:"+str(gradient_evidence))
return torch.autograd.grad(contr_h_, target_h_, grad_outputs=gradient_evidence)[0]
RuntimeError Traceback (most recent call last)
ipython-input-15-29d0fca29882 in module()
----> 1 prob_inputs_one = eb.excitation_backprop(model, inputs, prob_outputs_one, contrastive=2)
2 #pdb.set_trace()
3 prob_inputs_true = eb.excitation_backprop(model, inputs, prob_outputs_true, contrastive=2)
~/code/excitationbp/excitationbp-master/excitationbp/utils.py in excitation_backprop(model, inputs, prob_outputs, contrastive, target_layer)
75 importlib.reload(torch)
76 importlib.reload(torch.nn)
---> 77 importlib.reload(torch.nn.functional)
78
79 gradient_evidence = torch.autograd.grad(top_h_, contr_h_, grad_outputs=prob_outputs.clone())[0]
~/anaconda3/envs/pytorch0.3/lib/python3.6/importlib/__init__.py in reload(module)
164 target = module
165 spec = module.__spec__ = _bootstrap._find_spec(name, pkgpath, target)
--> 166 _bootstrap._exec(spec, module)
167 # The module may have replaced itself in sys.modules!
168 return sys.modules[name]
~/anaconda3/envs/pytorch0.3/lib/python3.6/importlib/_bootstrap.py in _exec(spec, module)
~/anaconda3/envs/pytorch0.3/lib/python3.6/importlib/_bootstrap_external.py in exec_module(self, module)
~/anaconda3/envs/pytorch0.3/lib/python3.6/importlib/_bootstrap.py in _call_with_frames_removed(f, *args, **kwds)
~/anaconda3/envs/pytorch0.3/lib/python3.6/site-packages/torch/nn/functional.py in <module>()
286 count_include_pad: when True, will include the zero-padding in th
287 averaging calculation. Default: ``True``
--> 288 """)
289
290 avg_pool3d = _add_docstr(torch._C._nn.avg_pool3d, r"""
RuntimeError: function 'avg_pool2d' already has a docstring