I noticed some annoying differences between nn.Module and ScriptModule
torch.__version__ = 1.4.0
Example:
class DataClass(nn.Module):
my_data: List[int]
def __init__(self):
super(DataClass, self).__init__()
self.my_data = []
def forward(self, new: int):
self.my_data.append(new)
return self.my_data
nn.Module:
dat = DataClass()
dat(0)
dat.my_data.append(1)
print(dat.my_data)
>>> [0, 1]
ScriptModule
dat = DataClass()
script_dat = torch.jit.script(dat)
script_dat(0)
script_dat.my_data.append(1)
print(script_dat.my_data)
>>> [0]