Search code examples
pythondeep-learningpytorchtorchyolo

Torch in python unable to get some layers like add from model structure


I have this simple code to write down structure of network.

model = torch.jit.load('best5.torchscript')

file_object = open('sample.txt', 'a')
for name, module in model.named_modules():
    file_object.write(str(module))

Problem is that some layers like "add" is not present

for example this is part from output

(2): RecursiveScriptModule(
      original_name=C3
      (cv1): RecursiveScriptModule(
        original_name=Conv
        (conv): RecursiveScriptModule(original_name=Conv2d)
        (act): RecursiveScriptModule(original_name=SiLU)
      )
      (cv2): RecursiveScriptModule(
        original_name=Conv
        (conv): RecursiveScriptModule(original_name=Conv2d)
        (act): RecursiveScriptModule(original_name=SiLU)
      )
      (cv3): RecursiveScriptModule(
        original_name=Conv
        (conv): RecursiveScriptModule(original_name=Conv2d)
        (act): RecursiveScriptModule(original_name=SiLU)
      )
      (m): RecursiveScriptModule(
        original_name=Sequential
        (0): RecursiveScriptModule(
          original_name=Bottleneck
          (cv1): RecursiveScriptModule(
            original_name=Conv
            (conv): RecursiveScriptModule(original_name=Conv2d)
            (act): RecursiveScriptModule(original_name=SiLU)
          )
          (cv2): RecursiveScriptModule(
            original_name=Conv
            (conv): RecursiveScriptModule(original_name=Conv2d)
            (act): RecursiveScriptModule(original_name=SiLU)
          )
        )
        (1): RecursiveScriptModule(
          original_name=Bottleneck
          (cv1): RecursiveScriptModule(
            original_name=Conv
            (conv): RecursiveScriptModule(original_name=Conv2d)
            (act): RecursiveScriptModule(original_name=SiLU)
          )
          (cv2): RecursiveScriptModule(
            original_name=Conv
            (conv): RecursiveScriptModule(original_name=Conv2d)
            (act): RecursiveScriptModule(original_name=SiLU)
          )
        )
      )
    )

And this is that part in netron enter image description here

as you can clearly see there is no add layer. Where are that data? Thanks for any help.


Solution

  • There is no "add" layer because this operation is performed in the forward function directly. The package used to display the computation graph doesn't rely on the model's definition to construct its layout, it does so from an inference step.