-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed
Labels
Description
Hi, I'm trying to script and save the models, but get different errors depending on arch and encoder. Example:
torch.jit.script(smp.Unet())
results in:
Click me
Traceback (most recent call last):
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3427, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-4-a16aa1320739>", line 1, in <module>
scripted_model = torch.jit.script(smp.Unet())
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/torch/jit/__init__.py", line 1516, in script
return torch.jit._recursive.create_script_module(obj, torch.jit._recursive.infer_methods_to_compile)
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/torch/jit/_recursive.py", line 318, in create_script_module
return create_script_module_impl(nn_module, concrete_type, stubs_fn)
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/torch/jit/_recursive.py", line 372, in create_script_module_impl
script_module = torch.jit.RecursiveScriptModule._construct(cpp_module, init_fn)
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/torch/jit/__init__.py", line 1900, in _construct
init_fn(script_module)
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/torch/jit/_recursive.py", line 353, in init_fn
scripted = create_script_module_impl(orig_value, sub_concrete_type, infer_methods_to_compile)
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/torch/jit/_recursive.py", line 376, in create_script_module_impl
create_methods_from_stubs(concrete_type, stubs)
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/torch/jit/_recursive.py", line 292, in create_methods_from_stubs
concrete_type._create_methods(defs, rcbs, defaults)
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/torch/jit/_recursive.py", line 602, in compile_unbound_method
create_methods_from_stubs(concrete_type, (stub,))
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/torch/jit/_recursive.py", line 292, in create_methods_from_stubs
concrete_type._create_methods(defs, rcbs, defaults)
RuntimeError:
Class Identity does not have an __init__ function defined:
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/segmentation_models_pytorch/encoders/resnet.py", line 49
def get_stages(self):
return [
nn.Identity(),
~~~~~~~~~~~ <--- HERE
nn.Sequential(self.conv1, self.bn1, self.relu),
nn.Sequential(self.maxpool, self.layer1),
'ResNetEncoder.get_stages' is being compiled since it was called from 'ResNetEncoder.forward'
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/segmentation_models_pytorch/encoders/resnet.py", line 58
def forward(self, x):
stages = self.get_stages()
~~~~~~~~~~~~~~~~~~~~~~~~ <--- HERE
features = []
smp version 0.1.3
pytorch version 1.6.0
pytorch 1.7 fails like this:
Click me
RuntimeError:
tuple slice indices must be integer constants:
File "/home/max/programs/anaconda3/envs/dr/lib/python3.7/site-packages/segmentation_models_pytorch/encoders/_base.py", line 18
def out_channels(self):
"""Return channels dimensions for each tensor of forward output of encoder"""
return self._out_channels[: self._depth + 1]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <--- HERE
EDIT: Working with torch.jit.trace(...)
works as a replacement to circumvent loading the code before loading the weights - therefore closing.
Vozf, ryanvolpi, da2r-20 and brendanartley