If I use scripting to convert my model, how can I call other methods in C++?

If I want to call other methods in my model(not forward), what should I do? I try to use torch.jit.script_method to decorate it but I can’t call it in C++.

class Net(torch.jit.ScriptModule):
    def __init__(self):
        super(Net, self).__init__()
        self.conv = nn.Conv2d(1, 1, 3)

    @torch.jit.script_method
    def forward(self, x):
        return self.conv(x)

    @torch.jit.script_method
    def weighted_kernel_sum(self, weight):
        return weight * self.conv.weigh

n = Net()
n.save("model.pt")

What I want to say is that if I use this way to convert my model, can I call the weighted_kernel_sum method in the C++ code?

Does run_method work for you?

Best regards

Thomas

Thank you for your reply. I don’t quite understand that, could you please give me an example in detail?

Best regards
Kevin

You follow the tutorial and at step 4 you replace

at::Tensor output = module->forward(inputs).toTensor();

with

torch::Tensor output = module->run_method("weighted_kernel_sum", input).toTensor();

where input is your input tensor.

Best regards

Thomas

2 Likes

It works. Thank you for your help!

Best regards

Kevin