I am trying to serialize my model to run in C++, but even before C++ I’m testing in python both the original and the trace model outputs on the same input and get different results, here is my python code:
import torch
from torchvision import models
import torch.nn as nn

model_file = r'D:\workspace\....\model.pt'
model_ft = models.resnet50()
num_ftrs = model_ft.fc.in_features
model_ft.fc = nn.Linear(num_ftrs, 6)
model_ft.load_state_dict(torch.load(model_file))

# An example input you would normally provide to your model's forward() method.
example = torch.rand(1, 3, 224, 224)

# Use torch.jit.trace to generate a torch.jit.ScriptModule via tracing.
traced_script_module = torch.jit.trace(model_ft, example)

# Test both outputs of original and traced model to compare
model_ft.eval()
with torch.no_grad():
    output_model = model_ft(torch.zeros(1, 3, 224, 224))

output_traced_model = traced_script_module(torch.zeros(1, 3, 224, 224))

print('output_model = ' + str(output_model))
print('output_traced_model = ' + str(output_traced_model))
# save traced model
traced_script_module.save("traced_resnet_model.pt")

and variables 'output_model ’ and 'output_traced_model ’ are completely different:
output_model = tensor([[-0.0805,  0.2096,  0.0873, -0.0468, -0.1598, -0.0375]])
output_traced_model = tensor([[-0.4763,  1.5731,  0.2112,  0.3496, -1.6906,  0.0191]],
       grad_fn=<DifferentiableGraphBackward>)