I need to use the make_fx interface to output aten ops and convert them into corresponding torch diaclects. But I found that make_fx will replace some ops. How does this happen and how should I solve it?
import torch
import os
from torch.fx.experimental.proxy_tensor import make_fx
print("os:pid:", os.getpid())
class Aten_Adaptive_avg_pool1d(torch.nn.Module):
def __init__(self, output_size):
super().__init__()
self.output_size=output_size
def forward(self, self_):
return torch.ops.aten.adaptive_avg_pool1d(self_, output_size=self.output_size)
if __name__ == "__main__":
model = Aten_Adaptive_avg_pool1d(3)
model.train(False)
model = model.eval()
#"adaptive_avg_pool1d": {"inputs": 1, "outputs": 1, "attrs": {"output_size": [3]}, "input_shapes": ["1,32,128"]},
input = torch.randn(1,32,128)
traced_model = make_fx(model)(input)
print(traced_model.graph)
pass
and It print out:
graph():
%arg0_1 : [num_users=1] = placeholder[target=arg0_1]
%unsqueeze : [num_users=1] = call_function[target=torch.ops.aten.unsqueeze.default](args = (%arg0_1, -2), kwargs = {})
%_adaptive_avg_pool2d : [num_users=1] = call_function[target=torch.ops.aten._adaptive_avg_pool2d.default](args = (%unsqueeze, [1, 3]), kwargs = {})
%squeeze : [num_users=1] = call_function[target=torch.ops.aten.squeeze.dim](args = (%_adaptive_avg_pool2d, -2), kwargs = {})
return squeeze
I need some help, thanks~