Lutz Roeder před 11 měsíci
rodič
revize
5f466cc7e3
14 změnil soubory, kde provedl 1199 přidání a 1159 odebrání
  1. 36 31
      package.py
  2. 2 2
      pyproject.toml
  3. 17 15
      source/__init__.py
  4. 81 78
      source/onnx.py
  5. 136 131
      source/pytorch.py
  6. 79 73
      source/server.py
  7. 29 29
      test/backend.py
  8. 11 10
      test/measures.py
  9. 76 75
      tools/keras_script.py
  10. 97 88
      tools/nnabla_script.py
  11. 130 127
      tools/onnx_script.py
  12. 302 300
      tools/pytorch_script.py
  13. 55 53
      tools/sklearn_script.py
  14. 148 147
      tools/tf_script.py

+ 36 - 31
package.py

@@ -1,4 +1,4 @@
-''' Python Server publish script '''
+""" Python Server publish script """
 
 import json
 import os
@@ -8,17 +8,17 @@ import subprocess
 import sys
 
 root_dir = os.path.dirname(os.path.abspath(__file__))
-dist_dir = os.path.join(root_dir, 'dist')
-dist_pypi_dir = os.path.join(dist_dir, 'pypi')
-source_dir = os.path.join(root_dir, 'source')
-publish_dir = os.path.join(root_dir, 'publish')
+dist_dir = os.path.join(root_dir, "dist")
+dist_pypi_dir = os.path.join(dist_dir, "pypi")
+source_dir = os.path.join(root_dir, "source")
+publish_dir = os.path.join(root_dir, "publish")
 
 def _read(path):
-    with open(path, encoding='utf-8') as file:
+    with open(path, encoding="utf-8") as file:
         return file.read()
 
 def _write(path, content):
-    with open(path, 'w', encoding='utf-8') as file:
+    with open(path, "w", encoding="utf-8") as file:
         file.write(content)
 
 def _update(path, regex, value):
@@ -29,54 +29,59 @@ def _update(path, regex, value):
     _write(path, content)
 
 def _build():
-    ''' Build dist/pypi '''
-    shutil.rmtree(os.path.join(source_dir, '__pycache__'), ignore_errors=True)
+    """ Build dist/pypi """
+    shutil.rmtree(os.path.join(source_dir, "__pycache__"), ignore_errors=True)
     shutil.rmtree(dist_pypi_dir, ignore_errors=True)
-    shutil.copytree(source_dir, os.path.join(dist_pypi_dir, 'netron'))
+    shutil.copytree(source_dir, os.path.join(dist_pypi_dir, "netron"))
     shutil.copyfile(
-        os.path.join(root_dir, 'pyproject.toml'),
-        os.path.join(dist_pypi_dir, 'pyproject.toml'))
-    os.remove(os.path.join(dist_pypi_dir, 'netron', 'electron.mjs'))
-    os.remove(os.path.join(dist_pypi_dir, 'netron', 'app.js'))
+        os.path.join(root_dir, "pyproject.toml"),
+        os.path.join(dist_pypi_dir, "pyproject.toml"))
+    os.remove(os.path.join(dist_pypi_dir, "netron", "electron.mjs"))
+    os.remove(os.path.join(dist_pypi_dir, "netron", "app.js"))
 
 def _install():
-    ''' Install dist/pypi '''
-    args = [ 'python', '-m', 'pip', 'install', dist_pypi_dir ]
+    """ Install dist/pypi """
+    args = [ "python", "-m", "pip", "install", dist_pypi_dir ]
     try:
         subprocess.run(args, check=False)
     except (KeyboardInterrupt, SystemExit):
         pass
 
 def _version():
-    ''' Update version '''
-    package = json.loads(_read('./package.json'))
-    _update('./dist/pypi/pyproject.toml',
+    """ Update version """
+    package = json.loads(_read("./package.json"))
+    _update("./dist/pypi/pyproject.toml",
         '(version\\s*=\\s*")(.*)(")',
-        package['version'])
-    _update('./dist/pypi/netron/server.py',
+        package["version"])
+    _update("./dist/pypi/netron/server.py",
         "(__version__ = ')(.*)(')",
-        package['version'])
-    _update('./dist/pypi/netron/index.html',
+        package["version"])
+    _update("./dist/pypi/netron/index.html",
         '(<meta name="version" content=")(.*)(">)',
-        package['version'])
-    _update('./dist/pypi/netron/index.html',
+        package["version"])
+    _update("./dist/pypi/netron/index.html",
         '(<meta name="date" content=")(.*)(">)',
-        package['date'])
+        package["date"])
 
 def _start():
-    ''' Start server '''
-    sys.path.insert(0, os.path.join(root_dir, 'dist', 'pypi'))
-    __import__('netron').main()
+    """ Start server """
+    sys.path.insert(0, os.path.join(root_dir, "dist", "pypi"))
+    __import__("netron").main()
     sys.args = []
     del sys.argv[1:]
 
 def main():
-    table = { 'build': _build, 'install': _install, 'version': _version, 'start': _start }
+    table = {
+        "build": _build,
+        "install": _install,
+        "version": _version,
+        "start": _start
+    }
     sys.args = sys.argv[1:]
     while len(sys.args) > 0:
         command = sys.args.pop(0)
         del sys.argv[1]
         table[command]()
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     main()

+ 2 - 2
pyproject.toml

@@ -63,6 +63,6 @@ netron = ["*.*"]
 netron = ["app.js", "electron.*"]
 
 [tool.ruff]
-lint.select = ["E", "F", "I", "UP", "B"]
-lint.ignore = ["E501"]
+lint.select = ["B", "E", "F", "I", "UP", "W", "Q"]
+
 cache-dir = "./dist/lint/.ruff_cache"

+ 17 - 15
source/__init__.py

@@ -1,4 +1,4 @@
-''' Python Server entry point '''
+""" Python Server entry point """
 
 import argparse
 import os
@@ -6,21 +6,23 @@ import sys
 
 from .server import __version__, serve, start, status, stop, wait, widget
 
-__all__ = ['start', 'stop', 'status', 'wait', 'serve', 'widget', '__version__']
+__all__ = ["start", "stop", "status", "wait", "serve", "widget", "__version__"]
 
 def main():
-    ''' main entry point '''
-    parser = argparse.ArgumentParser(
-        description='Viewer for neural network, deep learning and machine learning models.')
-    parser.add_argument('file',
-        metavar='MODEL_FILE', help='model file to serve', nargs='?', default=None)
-    parser.add_argument('-b', '--browse', help='launch web browser', action='store_true')
-    parser.add_argument('-p', '--port', help='port to serve', type=int)
-    parser.add_argument('--host', metavar='ADDR', help='host to serve', default='localhost')
-    parser.add_argument('--verbosity',
-        metavar='LEVEL', help='output verbosity (quiet, default, debug)',
-        choices=[ 'quiet', 'default', 'debug', '0', '1', '2' ], default='default')
-    parser.add_argument('--version', help="print version", action='store_true')
+    """ main entry point """
+    parser = argparse.ArgumentParser(description=
+        "Viewer for neural network, deep learning and machine learning models.")
+    parser.add_argument("file",
+        metavar="MODEL_FILE", help="model file to serve", nargs="?", default=None)
+    parser.add_argument("-b", "--browse",
+        help="launch web browser", action="store_true")
+    parser.add_argument("-p", "--port", help="port to serve", type=int)
+    parser.add_argument("--host",
+        metavar="ADDR", help="host to serve", default="localhost")
+    parser.add_argument("--verbosity",
+        metavar="LEVEL", help="output verbosity (quiet, default, debug)",
+        choices=[ "quiet", "default", "debug", "0", "1", "2" ], default="default")
+    parser.add_argument("--version", help="print version", action="store_true")
     args = parser.parse_args()
     if args.file and not os.path.exists(args.file):
         print("Model file '" + args.file + "' does not exist.")
@@ -33,5 +35,5 @@ def main():
     wait()
     sys.exit(0)
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     main()

+ 81 - 78
source/onnx.py

@@ -1,4 +1,4 @@
-''' ONNX backend '''
+""" ONNX backend """
 
 import collections
 import enum
@@ -7,13 +7,13 @@ import os
 
 
 class ModelFactory:
-    ''' ONNX backend model factory '''
+    """ ONNX backend model factory """
     def open(self, model):
         return _Model(model)
 
 class _Model:
     def __init__(self, model):
-        ''' Serialize ONNX model to JSON message '''
+        """ Serialize ONNX model to JSON message """
         # import onnx.shape_inference
         # model = onnx.shape_inference.infer_shapes(model)
         self.value = model
@@ -21,56 +21,58 @@ class _Model:
         self.graph = _Graph(model.graph, self.metadata)
 
     def to_json(self):
-        ''' Serialize model to JSON message '''
+        """ Serialize model to JSON message """
         model = self.value
         json_model = {}
-        json_model['signature'] = 'netron:onnx'
-        json_model['format'] = 'ONNX' + (' v' + str(model.ir_version) if model.ir_version else '')
+        json_model["signature"] = "netron:onnx"
+        ir_version = model.ir_version
+        json_model["format"] = "ONNX" + (f" v{ir_version}" if ir_version else "")
         if model.producer_name and len(model.producer_name) > 0:
-            producer_version = ' v' + model.producer_version if model.producer_version else ''
-            json_model['producer'] = model.producer_name + producer_version
+            producer_version = model.producer_version
+            producer_version = f" v{producer_version}" if producer_version else ""
+            json_model["producer"] = model.producer_name + producer_version
         if model.model_version and model.model_version != 0:
-            json_model['version'] = str(model.model_version)
+            json_model["version"] = str(model.model_version)
         if model.doc_string and len(model.doc_string):
-            json_model['description'] = str(model.doc_string)
+            json_model["description"] = str(model.doc_string)
         json_metadata = self._metadata_props(model.metadata_props)
         if len(json_metadata) > 0:
-            json_model['metadata'] = json_metadata
-        json_model['graphs'] = []
-        json_model['graphs'].append(self.graph.to_json())
+            json_model["metadata"] = json_metadata
+        json_model["graphs"] = []
+        json_model["graphs"].append(self.graph.to_json())
         return json_model
 
     def _metadata_props(self, metadata_props):
         json_metadata = []
         metadata_props = [ [ entry.key, entry.value ] for entry in metadata_props ]
         metadata = collections.OrderedDict(metadata_props)
-        value = metadata.get('converted_from')
+        value = metadata.get("converted_from")
         if value:
-            json_metadata.append({ 'name': 'source', 'value': value })
-        value = metadata.get('author')
+            json_metadata.append({ "name": "source", "value": value })
+        value = metadata.get("author")
         if value:
-            json_metadata.append({ 'name': 'author', 'value': value })
-        value = metadata.get('company')
+            json_metadata.append({ "name": "author", "value": value })
+        value = metadata.get("company")
         if value:
-            json_metadata.append({ 'name': 'company', 'value': value })
-        value = metadata.get('license')
-        license_url = metadata.get('license_url')
+            json_metadata.append({ "name": "company", "value": value })
+        value = metadata.get("license")
+        license_url = metadata.get("license_url")
         if license_url:
-            value = '<a href=\'' + license_url + '\'>' + (value if value else license_url) + '</a>'
+            value = f"<a href='{license_url}'>{value if value else license_url}</a>"
         if value:
-            json_metadata.append({ 'name': 'license', 'value': value })
-        if 'author' in metadata:
-            metadata.pop('author')
-        if 'company' in metadata:
-            metadata.pop('company')
-        if 'converted_from' in metadata:
-            metadata.pop('converted_from')
-        if 'license' in metadata:
-            metadata.pop('license')
-        if 'license_url' in metadata:
-            metadata.pop('license_url')
+            json_metadata.append({ "name": "license", "value": value })
+        if "author" in metadata:
+            metadata.pop("author")
+        if "company" in metadata:
+            metadata.pop("company")
+        if "converted_from" in metadata:
+            metadata.pop("converted_from")
+        if "license" in metadata:
+            metadata.pop("license")
+        if "license_url" in metadata:
+            metadata.pop("license_url")
         for name, value in metadata.items():
-            json_metadata.append({ 'name': name, 'value': value })
+            json_metadata.append({ "name": name, "value": value })
         return json_metadata
 
 class _Graph:
@@ -97,54 +99,55 @@ class _Graph:
             attribute_type = None
             value = None
         elif _.type == _AttributeType.FLOAT:
-            attribute_type = 'float32'
+            attribute_type = "float32"
             value = _.f
         elif _.type == _AttributeType.INT:
-            attribute_type = 'int64'
+            attribute_type = "int64"
             value = _.i
         elif _.type == _AttributeType.STRING:
-            attribute_type = 'string'
-            value = _.s.decode('latin1' if op_type == 'Int8GivenTensorFill' else 'utf-8')
+            attribute_type = "string"
+            encoding = "latin1" if op_type == "Int8GivenTensorFill" else "utf-8"
+            value = _.s.decode(encoding)
         elif _.type == _AttributeType.TENSOR:
-            attribute_type = 'tensor'
+            attribute_type = "tensor"
             value = self._tensor(_.t)
         elif _.type == _AttributeType.GRAPH:
-            attribute_type = 'tensor'
-            raise Exception('Unsupported graph attribute type')
+            attribute_type = "tensor"
+            raise Exception("Unsupported graph attribute type")
         elif _.type == _AttributeType.FLOATS:
-            attribute_type = 'float32[]'
+            attribute_type = "float32[]"
             value = list(_.floats)
         elif _.type == _AttributeType.INTS:
-            attribute_type = 'int64[]'
+            attribute_type = "int64[]"
             value = list(_.ints)
         elif _.type == _AttributeType.STRINGS:
-            attribute_type = 'string[]'
-            value = [ item.decode('utf-8') for item in _.strings ]
+            attribute_type = "string[]"
+            value = [ item.decode("utf-8") for item in _.strings ]
         elif _.type == _AttributeType.TENSORS:
-            attribute_type = 'tensor[]'
-            raise Exception('Unsupported tensors attribute type')
+            attribute_type = "tensor[]"
+            raise Exception("Unsupported tensors attribute type")
         elif _.type == _AttributeType.GRAPHS:
-            attribute_type = 'graph[]'
-            raise Exception('Unsupported graphs attribute type')
+            attribute_type = "graph[]"
+            raise Exception("Unsupported graphs attribute type")
         elif _.type == _AttributeType.SPARSE_TENSOR:
-            attribute_type = 'tensor'
+            attribute_type = "tensor"
             value = self._tensor(_.sparse_tensor)
         else:
             raise Exception("Unsupported attribute type '" + str(_.type) + "'.")
         json_attribute = {}
-        json_attribute['name'] = _.name
+        json_attribute["name"] = _.name
         if attribute_type:
-            json_attribute['type'] = attribute_type
-        json_attribute['value'] = value
+            json_attribute["type"] = attribute_type
+        json_attribute["value"] = value
         return json_attribute
 
     def to_json(self):
         graph = self.graph
         json_graph = {
-            'nodes': [],
-            'inputs': [],
-            'outputs': [],
-            'values': []
+            "nodes": [],
+            "inputs": [],
+            "outputs": [],
+            "values": []
         }
         for value_info in graph.value_info:
             self.value(value_info.name)
@@ -154,32 +157,32 @@ class _Graph:
             op_type = node.op_type
             json_node = {}
             json_node_type = {}
-            json_node_type['name'] = op_type
+            json_node_type["name"] = op_type
             type_metadata = self.metadata.type(op_type)
-            if type and 'category' in type_metadata:
-                json_node_type['category'] = type_metadata['category']
-            json_node['type'] = json_node_type
+            if type and "category" in type_metadata:
+                json_node_type["category"] = type_metadata["category"]
+            json_node["type"] = json_node_type
             if node.name:
-                json_node['name'] = node.name
-            json_node['inputs'] = []
+                json_node["name"] = node.name
+            json_node["inputs"] = []
             for value in node.input:
-                json_node['inputs'].append({
-                        'name': 'X',
-                        'value': [ self.value(value) ]
+                json_node["inputs"].append({
+                        "name": "X",
+                        "value": [ self.value(value) ]
                     })
-            json_node['outputs'] = []
+            json_node["outputs"] = []
             for value in node.output:
-                json_node['outputs'].append({
-                        'name': 'X',
-                        'value': [ self.value(value) ]
+                json_node["outputs"].append({
+                        "name": "X",
+                        "value": [ self.value(value) ]
                     })
-            json_node['attributes'] = []
+            json_node["attributes"] = []
             for _ in node.attribute:
                 json_attribute = self.attribute(_, op_type)
-                json_node['attributes'].append(json_attribute)
-            json_graph['nodes'].append(json_node)
+                json_node["attributes"].append(json_attribute)
+            json_graph["nodes"].append(json_node)
         for _ in self.values:
-            json_graph['values'].append(_.to_json())
+            json_graph["values"].append(_.to_json())
         return json_graph
 
 class _Value:
@@ -190,7 +193,7 @@ class _Value:
 
     def to_json(self):
         target = {}
-        target['name'] = self.name
+        target["name"] = self.name
         # if self.initializer:
         #     target['initializer'] = {}
         return target
@@ -199,10 +202,10 @@ class _Metadata:
     metadata = {}
 
     def __init__(self):
-        metadata_file = os.path.join(os.path.dirname(__file__), 'onnx-metadata.json')
-        with open(metadata_file, encoding='utf-8') as file:
+        metadata_file = os.path.join(os.path.dirname(__file__), "onnx-metadata.json")
+        with open(metadata_file, encoding="utf-8") as file:
             for item in json.load(file):
-                name = item['name']
+                name = item["name"]
                 self.metadata[name] = item
 
     def type(self, name):

+ 136 - 131
source/pytorch.py

@@ -1,23 +1,23 @@
-''' PyTorch backend '''
+""" PyTorch backend """
 
 import json
 import os
 
 
 class ModelFactory:
-    ''' PyTorch backend model factory '''
+    """ PyTorch backend model factory """
     def open(self, model):
         metadata = {}
         metadata_files = [
-            ('pytorch-metadata.json', ''),
-            ('onnx-metadata.json', 'onnx::')
+            ("pytorch-metadata.json", ""),
+            ("onnx-metadata.json", "onnx::")
         ]
         path = os.path.dirname(__file__)
         for entry in metadata_files:
             file = os.path.join(path, entry[0])
-            with open(file, encoding='utf-8') as handle:
+            with open(file, encoding="utf-8") as handle:
                 for item in json.load(handle):
-                    name = entry[1] + item['name'].split('(', 1)[0]
+                    name = entry[1] + item["name"].split("(", 1)[0]
                     metadata[name] = item
         metadata = Metadata(metadata)
         return _Model(metadata, model)
@@ -27,12 +27,12 @@ class _Model:
         self.graph = _Graph(metadata, model)
 
     def to_json(self):
-        ''' Serialize model to JSON message '''
+        """ Serialize model to JSON message """
         import torch
         json_model = {
-            'signature': 'netron:pytorch',
-            'format': 'TorchScript v' + torch.__version__,
-            'graphs': [ self.graph.to_json() ]
+            "signature": "netron:pytorch",
+            "format": "TorchScript v" + torch.__version__,
+            "graphs": [ self.graph.to_json() ]
         }
         return json_model
 
@@ -45,99 +45,101 @@ class _Graph:
         self.nodes = []
 
     def _getattr(self, node):
-        if node.kind() == 'prim::Param':
-            return (self.param, '')
-        if node.kind() == 'prim::GetAttr':
-            name = node.s('name')
+        if node.kind() == "prim::Param":
+            return (self.param, "")
+        if node.kind() == "prim::GetAttr":
+            name = node.s("name")
             obj, parent = self._getattr(node.input().node())
-            return (getattr(obj, name), parent + '.' + name if len(parent) > 0 else name)
+            value = getattr(obj, name)
+            path = parent + "." + name if len(parent) > 0 else name
+            return (value, path)
         raise NotImplementedError()
 
     def to_json(self):
         import torch
         graph = self.value
         json_graph = {
-            'values': [],
-            'nodes': [],
-            'inputs': [],
-            'outputs': []
+            "values": [],
+            "nodes": [],
+            "inputs": [],
+            "outputs": []
         }
         data_type_map = dict([
-            [ torch.float16, 'float16'],
-            [ torch.float32, 'float32'],
-            [ torch.float64, 'float64'],
-            [ torch.int32, 'int32'],
-            [ torch.int64, 'int64'],
+            [ torch.float16, "float16"],
+            [ torch.float32, "float32"],
+            [ torch.float64, "float64"],
+            [ torch.int32, "int32"],
+            [ torch.int64, "int64"],
         ])
         def constant_value(node):
-            if node.hasAttribute('value'):
-                selector = node.kindOf('value')
-                return getattr(node, selector)('value')
+            if node.hasAttribute("value"):
+                selector = node.kindOf("value")
+                return getattr(node, selector)("value")
             return None
         values_index = {}
         def argument(value):
             if value not in values_index:
                 json_value = {}
-                json_value['name'] = str(value.unique())
+                json_value["name"] = str(value.unique())
                 node = value.node()
                 if node.kind() == "prim::GetAttr":
                     tensor, name = self._getattr(node)
                     if tensor is not None and len(name) > 0 and \
                         isinstance(tensor, torch.Tensor):
                         json_tensor_shape = {
-                            'dimensions': list(tensor.shape)
+                            "dimensions": list(tensor.shape)
                         }
                         tensor_type = {
-                            'dataType': data_type_map[tensor.dtype],
-                            'shape': json_tensor_shape
+                            "dataType": data_type_map[tensor.dtype],
+                            "shape": json_tensor_shape
                         }
-                        json_value['name'] = name
-                        json_value['type'] = tensor_type
-                        json_value['initializer'] = { 'type': tensor_type }
+                        json_value["name"] = name
+                        json_value["type"] = tensor_type
+                        json_value["initializer"] = { "type": tensor_type }
                 elif node.kind() == "prim::Constant":
                     tensor = constant_value(node)
                     if tensor and isinstance(tensor, torch.Tensor):
                         json_tensor_shape = {
-                            'dimensions': list(tensor.shape)
+                            "dimensions": list(tensor.shape)
                         }
                         tensor_type = {
-                            'dataType': data_type_map[tensor.dtype],
-                            'shape': json_tensor_shape
+                            "dataType": data_type_map[tensor.dtype],
+                            "shape": json_tensor_shape
                         }
-                        json_value['type'] = tensor_type
-                        json_value['initializer'] = { 'type': tensor_type }
+                        json_value["type"] = tensor_type
+                        json_value["initializer"] = { "type": tensor_type }
                 elif value.isCompleteTensor():
                     json_tensor_shape = {
-                        'dimensions': value.type().sizes()
+                        "dimensions": value.type().sizes()
                     }
-                    json_value['type'] = {
-                        'dataType': data_type_map[value.type().dtype()],
-                        'shape': json_tensor_shape
+                    json_value["type"] = {
+                        "dataType": data_type_map[value.type().dtype()],
+                        "shape": json_tensor_shape
                     }
-                values = json_graph['values']
+                values = json_graph["values"]
                 values_index[value] = len(values)
                 values.append(json_value)
             return values_index[value]
 
         for value in graph.inputs():
-            if len(value.uses()) != 0 and value.type().kind() != 'ClassType':
-                json_graph['inputs'].append({
-                    'name': value.debugName(),
-                    'value': [ argument(value) ]
+            if len(value.uses()) != 0 and value.type().kind() != "ClassType":
+                json_graph["inputs"].append({
+                    "name": value.debugName(),
+                    "value": [ argument(value) ]
                 })
         for value in graph.outputs():
-            json_graph['outputs'].append({
-                'name': value.debugName(),
-                'value': [ argument(value) ]
+            json_graph["outputs"].append({
+                "name": value.debugName(),
+                "value": [ argument(value) ]
             })
         constants = {}
         for node in graph.nodes():
-            if node.kind() == 'prim::Constant':
+            if node.kind() == "prim::Constant":
                 constants[node] = 0
 
         lists = {}
         for node in graph.nodes():
-            if node.kind() == 'prim::ListConstruct':
+            if node.kind() == "prim::ListConstruct":
                 if all(_.node() in constants for _ in node.inputs()):
                     for _ in node.inputs():
                         constants[_.node()] += 1
@@ -147,75 +149,78 @@ class _Graph:
             identifier = node.schema()
             schema, category = self.metadata.type(identifier)
             json_node = {
-                'type': {
-                    'name': node.kind(),
-                    'category': category
+                "type": {
+                    "name": node.kind(),
+                    "category": category
                 },
-                'inputs': [],
-                'outputs': [],
-                'attributes': []
+                "inputs": [],
+                "outputs": [],
+                "attributes": []
             }
-            json_graph['nodes'].append(json_node)
+            json_graph["nodes"].append(json_node)
             for name in node.attributeNames():
                 selector = node.kindOf(name)
                 value = getattr(node, selector)(name)
                 json_attribute = {
-                    'name': name,
-                    'value': value
+                    "name": name,
+                    "value": value
                 }
                 if torch.is_tensor(value):
-                    json_node['inputs'].append({
-                        'name': name,
-                        'value': []
+                    json_node["inputs"].append({
+                        "name": name,
+                        "value": []
                     })
                 else:
-                    json_node['attributes'].append(json_attribute)
+                    json_node["attributes"].append(json_attribute)
 
             for i, value in enumerate(node.inputs()):
-                arg = schema.arguments[i] if schema and i < len(schema.arguments) else None
-                parameter_name = arg.name if arg else 'input'
+                arg = None
+                if schema and i < len(schema.arguments):
+                    arg = schema.arguments[i]
+                parameter_name = arg.name if arg else "input"
                 real_type = arg.real_type if arg else None
                 input_node = value.node()
                 if input_node in constants:
-                    if (real_type and real_type.kind() == 'TensorType') or \
-                        value.type().kind() == 'TensorType':
-                        json_node['inputs'].append({
-                            'name': parameter_name,
-                            'value': [ argument(value) ]
+                    if (real_type and real_type.kind() == "TensorType") or \
+                        value.type().kind() == "TensorType":
+                        json_node["inputs"].append({
+                            "name": parameter_name,
+                            "value": [ argument(value) ]
                         })
                     else:
                         json_attribute = {
-                            'name': parameter_name,
-                            'value': constant_value(input_node)
+                            "name": parameter_name,
+                            "value": constant_value(input_node)
                         }
                         if real_type:
-                            json_attribute['type'] = self._argument_type(real_type)
-                        json_node['attributes'].append(json_attribute)
+                            json_attribute["type"] = self._argument_type(real_type)
+                        json_node["attributes"].append(json_attribute)
                     constants[input_node] = constants[input_node] + 1
                     continue
                 if input_node in lists:
+                    value = [ constant_value(_.node()) for _ in input_node.inputs() ]
                     json_attribute = {
-                        'name': parameter_name,
-                        'value': [ constant_value(_.node()) for _ in input_node.inputs() ]
+                        "name": parameter_name,
+                        "value": value
                     }
-                    json_node['attributes'].append(json_attribute)
+                    json_node["attributes"].append(json_attribute)
                     lists[input_node] += 1
                     continue
-                if input_node.kind() == 'prim::TupleUnpack':
+                if input_node.kind() == "prim::TupleUnpack":
                     continue
-                if input_node.kind() == 'prim::TupleConstruct':
+                if input_node.kind() == "prim::TupleConstruct":
                     continue
-                json_node['inputs'].append({
-                    'name': parameter_name,
-                    'value': [ argument(value) ]
+                json_node["inputs"].append({
+                    "name": parameter_name,
+                    "value": [ argument(value) ]
                 })
 
             for i, value in enumerate(node.outputs()):
                 ret = schema.returns[i] if schema and i < len(schema.returns) else None
-                name = ret.name if ret else 'output'
-                json_node['outputs'].append({
-                    'name': name,
-                    'value': [ argument(value) ]
+                name = ret.name if ret else "output"
+                json_node["outputs"].append({
+                    "name": name,
+                    "value": [ argument(value) ]
                 })
 
         for node in graph.nodes():
@@ -223,62 +228,62 @@ class _Graph:
                 continue
             if node in constants:
                 continue
-            if node.kind() == 'prim::GetAttr':
+            if node.kind() == "prim::GetAttr":
                 continue
             create_node(node)
 
         for node in graph.nodes():
-            if node.kind() == 'prim::Constant' and \
+            if node.kind() == "prim::Constant" and \
                 node in constants and constants[node] != len(node.output().uses()):
                 create_node(node)
-            if node.kind() == 'prim::ListConstruct' and \
+            if node.kind() == "prim::ListConstruct" and \
                 node in lists and lists[node] != len(node.output().uses()):
                 create_node(node)
 
         return json_graph
 
     def _argument_type(self, value):
-        if value.kind() == 'TensorType':
-            return 'Tensor'
-        if value.kind() == 'OptionalType':
+        if value.kind() == "TensorType":
+            return "Tensor"
+        if value.kind() == "OptionalType":
             element_type = self._argument_type(value.getElementType())
-            return f'{element_type}?'
-        if value.kind() == 'ListType':
+            return f"{element_type}?"
+        if value.kind() == "ListType":
             element_type = self._argument_type(value.getElementType())
-            size = str(value.size) if hasattr(value, 'size') else ''
-            return f'{element_type}[{size}]'
-        if value.kind() == 'DictType':
+            size = str(value.size) if hasattr(value, "size") else ""
+            return f"{element_type}[{size}]"
+        if value.kind() == "DictType":
             key_type = self._argument_type(value.getKeyType())
             value_type = self._argument_type(value.getValueType())
-            return f'Dict({key_type}, {value_type})'
-        if value.kind() == 'TupleType':
+            return f"Dict({key_type}, {value_type})"
+        if value.kind() == "TupleType":
             elements = []
             for element in value.elements():
                 elements.append(self._argument_type(element))
-            return f'({', '.join(elements)})'
-        if value.kind() == 'IntType':
-            return 'int64'
-        if value.kind() == 'SymIntType':
-            return 'SymInt'
-        if value.kind() == 'FloatType':
-            return 'float32'
-        if value.kind() == 'BoolType':
-            return 'boolean'
-        if value.kind() == 'StringType':
-            return 'string'
-        if value.kind() == 'NumberType':
-            return 'Scalar'
-        if value.kind() == 'ScalarTypeType':
-            return 'ScalarType'
-        if value.kind() == 'LayoutType':
-            return 'Layout'
-        if value.kind() == 'MemoryFormatType':
-            return 'MemoryFormat'
-        if value.kind() == 'DeviceObjType':
-            return 'Device'
-        if value.kind() == 'GeneratorType':
-            return 'Generator'
-        if value.kind() == 'VarType':
+            return f"({', '.join(elements)})"
+        if value.kind() == "IntType":
+            return "int64"
+        if value.kind() == "SymIntType":
+            return "SymInt"
+        if value.kind() == "FloatType":
+            return "float32"
+        if value.kind() == "BoolType":
+            return "boolean"
+        if value.kind() == "StringType":
+            return "string"
+        if value.kind() == "NumberType":
+            return "Scalar"
+        if value.kind() == "ScalarTypeType":
+            return "ScalarType"
+        if value.kind() == "LayoutType":
+            return "Layout"
+        if value.kind() == "MemoryFormatType":
+            return "MemoryFormat"
+        if value.kind() == "DeviceObjType":
+            return "Device"
+        if value.kind() == "GeneratorType":
+            return "Generator"
+        if value.kind() == "VarType":
             return value.annotation_str
         raise NotImplementedError()
 
@@ -288,12 +293,12 @@ class Metadata:
         self.types = metadata
 
     def type(self, identifier):
-        if identifier == '(no schema)':
-            return (None, '')
-        key = identifier.split('(', 1)[0]
+        if identifier == "(no schema)":
+            return (None, "")
+        key = identifier.split("(", 1)[0]
         value = self.types.get(key)
-        category = value['category'] if value and 'category' in value else ''
-        name, overload_name = key.split('.', 1) if key.find('.') > 0 else (key, '')
+        category = value["category"] if value and "category" in value else ""
+        name, overload_name = key.split(".", 1) if key.find(".") > 0 else (key, "")
         import torch
         schema = torch._C._get_schema(name, overload_name)
         return (schema, category)

+ 79 - 73
source/server.py

@@ -1,4 +1,4 @@
-''' Python Server implementation '''
+""" Python Server implementation """
 
 import errno
 import http.server
@@ -15,29 +15,29 @@ import time
 import urllib.parse
 import webbrowser
 
-__version__ = '0.0.0'
+__version__ = "0.0.0"
 
 class _ContentProvider:
     data = bytearray()
-    base_dir = ''
-    base = ''
-    identifier = ''
+    base_dir = ""
+    base = ""
+    identifier = ""
     def __init__(self, data, path, file, name):
         self.data = data if data else bytearray()
-        self.identifier = os.path.basename(file) if file else ''
+        self.identifier = os.path.basename(file) if file else ""
         self.name = name
         if path:
-            self.dir = os.path.dirname(path) if os.path.dirname(path) else '.'
+            self.dir = os.path.dirname(path) if os.path.dirname(path) else "."
             self.base = os.path.basename(path)
     def read(self, path):
-        ''' Read content '''
+        """ Read content """
         if path == self.base and self.data:
             return self.data
         base_dir = os.path.realpath(self.dir)
-        filename = os.path.normpath(os.path.realpath(base_dir + '/' + path))
+        filename = os.path.normpath(os.path.realpath(base_dir + "/" + path))
         if os.path.commonprefix([ base_dir, filename ]) == base_dir:
             if os.path.exists(filename) and not os.path.isdir(filename):
-                with open(filename, 'rb') as file:
+                with open(filename, "rb") as file:
                     return file.read()
         return None
 
@@ -45,37 +45,37 @@ class _HTTPRequestHandler(http.server.BaseHTTPRequestHandler):
     content = None
     verbosity = 1
     mime_types = {
-        '.html': 'text/html',
-        '.js':   'text/javascript',
-        '.css':  'text/css',
-        '.png':  'image/png',
-        '.gif':  'image/gif',
-        '.jpg':  'image/jpeg',
-        '.ico':  'image/x-icon',
-        '.json': 'application/json',
-        '.pb': 'application/octet-stream',
-        '.ttf': 'font/truetype',
-        '.otf': 'font/opentype',
-        '.eot': 'application/vnd.ms-fontobject',
-        '.woff': 'font/woff',
-        '.woff2': 'application/font-woff2',
-        '.svg': 'image/svg+xml'
+        ".html": "text/html",
+        ".js":   "text/javascript",
+        ".css":  "text/css",
+        ".png":  "image/png",
+        ".gif":  "image/gif",
+        ".jpg":  "image/jpeg",
+        ".ico":  "image/x-icon",
+        ".json": "application/json",
+        ".pb": "application/octet-stream",
+        ".ttf": "font/truetype",
+        ".otf": "font/opentype",
+        ".eot": "application/vnd.ms-fontobject",
+        ".woff": "font/woff",
+        ".woff2": "application/font-woff2",
+        ".svg": "image/svg+xml"
     }
     def do_HEAD(self):
-        ''' Serve a HEAD request '''
+        """ Serve a HEAD request """
         self.do_GET()
     def do_GET(self):
-        ''' Serve a GET request '''
+        """ Serve a GET request """
         path = urllib.parse.urlparse(self.path).path
-        path = '/index.html' if path == '/' else path
+        path = "/index.html" if path == "/" else path
         status_code = 404
         content = None
         content_type = None
-        if path.startswith('/data/'):
-            path = urllib.parse.unquote(path[len('/data/'):])
+        if path.startswith("/data/"):
+            path = urllib.parse.unquote(path[len("/data/"):])
             content = self.content.read(path)
             if content:
-                content_type = 'application/octet-stream'
+                content_type = "application/octet-stream"
                 status_code = 200
         else:
             base_dir = os.path.dirname(os.path.realpath(__file__))
@@ -85,10 +85,10 @@ class _HTTPRequestHandler(http.server.BaseHTTPRequestHandler):
                 os.path.exists(filename) and not os.path.isdir(filename) and \
                 extension in self.mime_types:
                 content_type = self.mime_types[extension]
-                with open(filename, 'rb') as file:
+                with open(filename, "rb") as file:
                     content = file.read()
-                if path == '/index.html':
-                    content = content.decode('utf-8')
+                if path == "/index.html":
+                    content = content.decode("utf-8")
                     meta = [
                         '<meta name="type" content="Python">',
                         '<meta name="version" content="' + __version__ + '">'
@@ -101,24 +101,25 @@ class _HTTPRequestHandler(http.server.BaseHTTPRequestHandler):
                         meta.append('<meta name="name" content="' + name + '">')
                     identifier = self.content.identifier
                     if identifier:
-                        meta.append('<meta name="identifier" content="' + identifier + '">')
-                    meta = '\n'.join(meta)
-                    content = re.sub(r'<meta name="version" content=".*">', meta, content)
-                    content = content.encode('utf-8')
+                        meta.append(f'<meta name="identifier" content="{identifier}">')
+                    meta = "\n".join(meta)
+                    regex = r'<meta name="version" content=".*">'
+                    content = re.sub(regex, meta, content)
+                    content = content.encode("utf-8")
                 status_code = 200
-        _log(self.verbosity > 1, str(status_code) + ' ' + self.command + ' ' + self.path + '\n')
+        _log(self.verbosity > 1, f"{str(status_code)} {self.command} {self.path}\n")
         self._write(status_code, content_type, content)
     def log_message(self, format, *args):
         return
     def _write(self, status_code, content_type, content):
         self.send_response(status_code)
         if content:
-            self.send_header('Content-Type', content_type)
-            self.send_header('Content-Length', len(content))
+            self.send_header("Content-Type", content_type)
+            self.send_header("Content-Length", len(content))
         self.end_headers()
-        if self.command != 'HEAD':
+        if self.command != "HEAD":
             if status_code == 404 and content is None:
-                self.wfile.write(str(status_code).encode('utf-8'))
+                self.wfile.write(str(status_code).encode("utf-8"))
             elif (status_code in (200, 404)) and content is not None:
                 self.wfile.write(content)
 
@@ -130,7 +131,7 @@ class _HTTPServerThread(threading.Thread):
         threading.Thread.__init__(self)
         self.verbosity = verbosity
         self.address = address
-        self.url = 'http://' + address[0] + ':' + str(address[1])
+        self.url = "http://" + address[0] + ":" + str(address[1])
         self.server = _ThreadedHTTPServer(address, _HTTPRequestHandler)
         self.server.timeout = 0.25
         self.server.block_on_close = False
@@ -152,7 +153,7 @@ class _HTTPServerThread(threading.Thread):
         self.stop_event.clear()
 
     def stop(self):
-        ''' Stop server '''
+        """ Stop server """
         if self.alive():
             _log(self.verbosity > 0, "Stopping " + self.url + "\n")
             self.stop_event.set()
@@ -160,23 +161,23 @@ class _HTTPServerThread(threading.Thread):
             self.terminate_event.wait(1000)
 
     def alive(self):
-        ''' Check server status '''
+        """ Check server status """
         value = not self.terminate_event.is_set()
         return value
 
 def _open(data):
     registry = dict([
-        ('onnx.onnx_ml_pb2.ModelProto', '.onnx'),
-        ('torch.jit._script.ScriptModule', '.pytorch'),
-        ('torch.Graph', '.pytorch'),
-        ('torch._C.Graph', '.pytorch'),
-        ('torch.nn.modules.module.Module', '.pytorch')
+        ("onnx.onnx_ml_pb2.ModelProto", ".onnx"),
+        ("torch.jit._script.ScriptModule", ".pytorch"),
+        ("torch.Graph", ".pytorch"),
+        ("torch._C.Graph", ".pytorch"),
+        ("torch.nn.modules.module.Module", ".pytorch")
     ])
     queue = [ data.__class__ ]
     while len(queue) > 0:
         current = queue.pop(0)
         if current.__module__ and current.__name__:
-            name = current.__module__ + '.' + current.__name__
+            name = current.__module__ + "." + current.__name__
             if name in registry:
                 module_name = registry[name]
                 module = importlib.import_module(module_name, package=__package__)
@@ -186,7 +187,10 @@ def _open(data):
     return None
 
 def _threads(address=None):
-    threads = [ _ for _ in threading.enumerate() if isinstance(_, _HTTPServerThread) and _.alive() ]
+    threads = []
+    for thread in threading.enumerate():
+        if isinstance(thread, _HTTPServerThread) and thread.alive():
+            threads.append(thread)
     if address is not None:
         address = _make_address(address)
         threads = [ _ for _ in threads if address[0] == _.address[0] ]
@@ -202,13 +206,13 @@ def _log(condition, message):
 def _make_address(address):
     if address is None or isinstance(address, int):
         port = address
-        address = ('localhost', port)
+        address = ("localhost", port)
     if isinstance(address, tuple) and len(address) == 2:
         host = address[0]
         port = address[1]
         if isinstance(host, str) and (port is None or isinstance(port, int)):
             return address
-    raise ValueError('Invalid address.')
+    raise ValueError("Invalid address.")
 
 def _make_port(address):
     if address[1] is None or address[1] == 0:
@@ -237,38 +241,38 @@ def _make_port(address):
                 temp_socket.close()
     if isinstance(address[1], int):
         return address
-    raise ValueError('Failed to allocate port.')
+    raise ValueError("Failed to allocate port.")
 
 def stop(address=None):
-    '''Stop serving model at address.
+    """Stop serving model at address.
 
     Args:
         address (tuple, optional): A (host, port) tuple, or a port number.
-    '''
+    """
     threads = _threads(address)
     for thread in threads:
         thread.stop()
 
 def status(adrress=None):
-    '''Is model served at address.
+    """Is model served at address.
 
     Args:
         address (tuple, optional): A (host, port) tuple, or a port number.
-    '''
+    """
     threads = _threads(adrress)
     return len(threads) > 0
 
 def wait():
-    '''Wait for console exit and stop all model servers.'''
+    """Wait for console exit and stop all model servers."""
     try:
         while len(_threads()) > 0:
             time.sleep(0.1)
     except (KeyboardInterrupt, SystemExit):
-        _log(True, '\n')
+        _log(True, "\n")
         stop()
 
 def serve(file, data=None, address=None, browse=False, verbosity=1):
-    '''Start serving model from file or data buffer at address and open in web browser.
+    """Start serving model from file or data buffer at address and open in web browser.
 
     Args:
         file (string): Model file to serve. Required to detect format.
@@ -279,8 +283,9 @@ def serve(file, data=None, address=None, browse=False, verbosity=1):
 
     Returns:
         A (host, port) address tuple.
-    '''
-    verbosity = { '0': 0, 'quiet': 0, '1': 1, 'default': 1, '2': 2, 'debug': 2 }[str(verbosity)]
+    """
+    verbosities = { "0": 0, "quiet": 0, "1": 1, "default": 1, "2": 2, "debug": 2 }
+    verbosity = verbosities[str(verbosity)]
 
     if not data and file and not os.path.exists(file):
         raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), file)
@@ -288,11 +293,11 @@ def serve(file, data=None, address=None, browse=False, verbosity=1):
     content = _ContentProvider(data, file, file, file)
 
     if data and not isinstance(data, bytearray) and isinstance(data.__class__, type):
-        _log(verbosity > 1, 'Experimental\n')
+        _log(verbosity > 1, "Experimental\n")
         model = _open(data)
         if model:
             text = json.dumps(model.to_json(), indent=2, ensure_ascii=False)
-            content = _ContentProvider(text.encode('utf-8'), 'model.netron', None, file)
+            content = _ContentProvider(text.encode("utf-8"), "model.netron", None, file)
 
     address = _make_address(address)
     if isinstance(address[1], int) and address[1] != 0:
@@ -304,7 +309,8 @@ def serve(file, data=None, address=None, browse=False, verbosity=1):
     thread.start()
     while not thread.alive():
         time.sleep(0.01)
-    message = (("Serving '" + file + "'") if file else "Serving") + " at " + thread.url + "\n"
+    state = ("Serving '" + file + "'") if file else "Serving"
+    message = f"{state} at {thread.url}\n"
     _log(verbosity > 0, message)
     if browse:
         webbrowser.open(thread.url)
@@ -312,7 +318,7 @@ def serve(file, data=None, address=None, browse=False, verbosity=1):
     return address
 
 def start(file=None, address=None, browse=True, verbosity=1):
-    '''Start serving model file at address and open in web browser.
+    """Start serving model file at address and open in web browser.
 
     Args:
         file (string): Model file to serve.
@@ -322,11 +328,11 @@ def start(file=None, address=None, browse=True, verbosity=1):
 
     Returns:
         A (host, port) address tuple.
-    '''
+    """
     return serve(file, None, browse=browse, address=address, verbosity=verbosity)
 
 def widget(address, height=800):
-    ''' Open address as Jupyter Notebook IFrame.
+    """ Open address as Jupyter Notebook IFrame.
 
     Args:
         address (tuple, optional): A (host, port) tuple, or a port number.
@@ -334,8 +340,8 @@ def widget(address, height=800):
 
     Returns:
         A Jupyter Notebook IFrame.
-    '''
+    """
     address = _make_address(address)
     url = f"http://{address[0]}:{address[1]}"
-    IPython = __import__('IPython')
+    IPython = __import__("IPython")
     return IPython.display.IFrame(url, width="100%", height=height)

+ 29 - 29
test/backend.py

@@ -1,76 +1,76 @@
 #!/usr/bin/env python
 
-''' Expermiental Python Server backend test '''
+""" Expermiental Python Server backend test """
 
 import os
 import sys
 
 root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 sys.path.append(root_dir)
-sys.pycache_prefix = os.path.join(root_dir, 'dist', 'pycache', 'test', 'backend')
-netron = __import__('source')
+sys.pycache_prefix = os.path.join(root_dir, "dist", "pycache", "test", "backend")
+netron = __import__("source")
 
-third_party_dir = os.path.join(root_dir, 'third_party')
-test_data_dir = os.path.join(third_party_dir, 'test')
+third_party_dir = os.path.join(root_dir, "third_party")
+test_data_dir = os.path.join(third_party_dir, "test")
 
 def _test_onnx():
-    file = os.path.join(test_data_dir, 'onnx', 'candy.onnx')
-    onnx = __import__('onnx')
+    file = os.path.join(test_data_dir, "onnx", "candy.onnx")
+    onnx = __import__("onnx")
     model = onnx.load(file)
     netron.serve(None, model)
 
 def _test_onnx_iterate():
-    folder = os.path.join(test_data_dir, 'onnx')
+    folder = os.path.join(test_data_dir, "onnx")
     for item in os.listdir(folder):
         file = os.path.join(folder, item)
-        if file.endswith('.onnx') and \
-            item != 'super_resolution.onnx' and \
-            item != 'arcface-resnet100.onnx':
+        if file.endswith(".onnx") and \
+            item != "super_resolution.onnx" and \
+            item != "arcface-resnet100.onnx":
             print(item)
-            onnx = __import__('onnx')
+            onnx = __import__("onnx")
             model = onnx.load(file)
-            address = netron.serve(file, model, verbosity='quiet')
+            address = netron.serve(file, model, verbosity="quiet")
             netron.stop(address)
 
 def _test_torchscript(file):
-    torch = __import__('torch')
-    model = torch.load(os.path.join(test_data_dir, 'pytorch', file))
+    torch = __import__("torch")
+    path = os.path.join(test_data_dir, "pytorch", file)
+    model = torch.load(path, weights_only=False)
     torch._C._jit_pass_inline(model.graph)
     netron.serve(file, model)
 
 def _test_torchscript_transformer():
-    torch = __import__('torch')
+    torch = __import__("torch")
     model = torch.nn.Transformer(nhead=16, num_encoder_layers=12)
     module = torch.jit.trace(model, (torch.rand(10, 32, 512), torch.rand(20, 32, 512)))
     # module = torch.jit.script(model)
     torch._C._jit_pass_inline(module.graph)
-    netron.serve('transformer', module)
+    netron.serve("transformer", module)
 
 def _test_torchscript_resnet34():
-    torch = __import__('torch')
-    torchvision = __import__('torchvision')
+    torch = __import__("torch")
+    torchvision = __import__("torchvision")
     model = torchvision.models.resnet34()
-    # model = torchvision.models.alexnet(weights=torchvision.models.AlexNet_Weights.DEFAULT)
-    # model = torchvision.models.resnet34(weights=torchvision.models.ResNet34_Weights.DEFAULT)
-    state_dict = torch.load(os.path.join(test_data_dir, 'pytorch', 'resnet34-333f7ec4.pth'))
+    file = os.path.join(test_data_dir, "pytorch", "resnet34-333f7ec4.pth")
+    state_dict = torch.load(file)
     model.load_state_dict(state_dict)
     trace = torch.jit.trace(model, torch.zeros([1, 3, 224, 224]), strict=True)
     torch._C._jit_pass_inline(trace.graph)
-    netron.serve('resnet34', trace)
+    netron.serve("resnet34", trace)
 
 def _test_torchscript_quantized():
-    torch = __import__('torch')
-    __import__('torchvision')
-    torch.backends.quantized.engine = 'qnnpack'
-    trace = torch.jit.load(os.path.join(test_data_dir, 'pytorch', 'd2go.pt'))
+    torch = __import__("torch")
+    __import__("torchvision")
+    torch.backends.quantized.engine = "qnnpack"
+    trace = torch.jit.load(os.path.join(test_data_dir, "pytorch", "d2go.pt"))
     torch._C._jit_pass_inline(trace.graph)
-    netron.serve('d2go', trace)
+    netron.serve("d2go", trace)
 
 # _test_onnx()
 # _test_onnx_iterate()
 
 # _test_torchscript('alexnet.pt')
-_test_torchscript('gpt2.pt')
+_test_torchscript("gpt2.pt")
 # _test_torchscript('inception_v3_traced.pt')
 # _test_torchscript('netron_issue_920.pt') # scalar
 # _test_torchscript('fasterrcnn_resnet50_fpn.pt') # tuple

+ 11 - 10
test/measures.py

@@ -1,27 +1,28 @@
 #!/usr/bin/env python
 
-''' Test Measures Script '''
+""" Test Measures Script """
 
 import pandas
 
-pandas.set_option('display.max_rows', None)
+pandas.set_option("display.max_rows", None)
 
 def _summarize(summary_df, measures_df, column, threshold):
     measures_df = measures_df.sort_values(column, ascending=False)
     total = measures_df[column].sum()
     column_df = measures_df[measures_df[column] > threshold]
     top = column_df[column].sum()
-    summary_df.loc[len(summary_df)] = [ column, total, top, len(column_df), 100 * (top / total) ]
-    return column_df.to_string(index=False) + '\n'
+    percent = 100 * (top / total)
+    summary_df.loc[len(summary_df)] = [ column, total, top, len(column_df), percent ]
+    return column_df.to_string(index=False) + "\n"
 
 def main():
-    measures_df = pandas.read_csv('dist/test/measures.csv')
+    measures_df = pandas.read_csv("dist/test/measures.csv")
     measures_df.fillna(0, inplace=True)
-    summary_df = pandas.DataFrame(columns=[ 'Name', 'Total', 'Top', 'Count', 'Ratio' ])
-    print(_summarize(summary_df, measures_df, 'load', 1))
-    print(_summarize(summary_df, measures_df, 'validate', 1))
-    print(_summarize(summary_df, measures_df, 'render', 1))
+    summary_df = pandas.DataFrame(columns=[ "Name", "Total", "Top", "Count", "Ratio" ])
+    print(_summarize(summary_df, measures_df, "load", 1))
+    print(_summarize(summary_df, measures_df, "validate", 1))
+    print(_summarize(summary_df, measures_df, "render", 1))
     print(summary_df.to_string(index=False))
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     main()

+ 76 - 75
tools/keras_script.py

@@ -1,14 +1,14 @@
-''' Keras metadata script '''
+""" Keras metadata script """
 
 import json
 import os
 import pydoc
 import re
 
-os.environ['KERAS_BACKEND'] = 'jax'
+os.environ["KERAS_BACKEND"] = "jax"
 
 def _read(path):
-    with open(path, encoding='utf-8') as file:
+    with open(path, encoding="utf-8") as file:
         return file.read()
 
 def _parse_docstring(docstring):
@@ -17,25 +17,25 @@ def _parse_docstring(docstring):
     indents = filter(lambda s: len(s) > 0, lines[1:])
     indentation = min(map(lambda s: len(s) - len(s.lstrip()), indents))
     lines = list((s[indentation:] if len(s) > len(s.lstrip()) else s) for s in lines)
-    docstring = '\n'.join(lines)
+    docstring = "\n".join(lines)
     labels = [
-        'Args', 'Arguments', 'Variables', 'Fields', 'Yields', 'Call arguments', 'Raises',
-        'Examples', 'Example', 'Usage', 'Input shape', 'Output shape', 'Returns',
-        'Reference', 'References'
+        "Args", "Arguments", "Variables", "Fields", "Yields", "Call arguments",
+        "Raises", "Examples", "Example", "Usage", "Input shape", "Output shape",
+        "Returns", "Reference", "References"
     ]
-    tag_re = re.compile('(?<=\n)(' + '|'.join(labels) + '):\n', re.MULTILINE)
+    tag_re = re.compile("(?<=\n)(" + "|".join(labels) + "):\n", re.MULTILINE)
     parts = tag_re.split(docstring)
-    headers.append(('', parts.pop(0)))
+    headers.append(("", parts.pop(0)))
     while len(parts) > 0:
         headers.append((parts.pop(0), parts.pop(0)))
     return headers
 
 def _parse_arguments(arguments):
     result = []
-    item_re = re.compile(r'^\s{0,4}(\*?\*?\w[\w.]*?\s*):\s', re.MULTILINE)
+    item_re = re.compile(r"^\s{0,4}(\*?\*?\w[\w.]*?\s*):\s", re.MULTILINE)
     content = item_re.split(arguments)
-    if content.pop(0) != '':
-        raise Exception('')
+    if content.pop(0) != "":
+        raise Exception("")
     while len(content) > 0:
         result.append((content.pop(0), content.pop(0)))
     return result
@@ -45,56 +45,57 @@ def _convert_code_blocks(description):
     output = []
     while len(lines) > 0:
         line = lines.pop(0)
-        if line.startswith('>>>') and len(lines) > 0 and \
-            (lines[0].startswith('>>>') or lines[0].startswith('...')):
-            output.append('```')
+        if line.startswith(">>>") and len(lines) > 0 and \
+            (lines[0].startswith(">>>") or lines[0].startswith("...")):
+            output.append("```")
             output.append(line)
-            while len(lines) > 0 and lines[0] != '':
+            while len(lines) > 0 and lines[0] != "":
                 output.append(lines.pop(0))
-            output.append('```')
+            output.append("```")
         else:
             output.append(line)
-    return '\n'.join(output)
+    return "\n".join(output)
 
 def _remove_indentation(value):
     lines = value.splitlines()
     indentation = min(map(lambda s: len(s) - len(s.lstrip()), \
         filter(lambda s: len(s) > 0, lines)))
     lines = list((s[indentation:] if len(s) > 0 else s) for s in lines)
-    return '\n'.join(lines).strip()
+    return "\n".join(lines).strip()
 
 def _update_argument(schema, name, description):
-    if 'attributes' not in schema:
-        schema['attributes'] = []
-    attribute = next((_ for _ in schema['attributes'] if _['name'] == name), None)
+    if "attributes" not in schema:
+        schema["attributes"] = []
+    attribute = next((_ for _ in schema["attributes"] if _["name"] == name), None)
     if not attribute:
         attribute = {}
-        attribute['name'] = name
-        schema['attributes'].append(attribute)
-    attribute['description'] = _remove_indentation(description)
+        attribute["name"] = name
+        schema["attributes"].append(attribute)
+    attribute["description"] = _remove_indentation(description)
 
 def _update_input(schema, description):
-    if 'inputs' not in schema:
-        schema['inputs'] = [ { 'name': 'input' } ]
-    parameter = next((_ for _ in schema['inputs'] \
-        if (_['name'] == 'input' or _['name'] == 'inputs')), None)
+    if "inputs" not in schema:
+        schema["inputs"] = [ { "name": "input" } ]
+    parameter = next((_ for _ in schema["inputs"] \
+        if (_["name"] == "input" or _["name"] == "inputs")), None)
     if parameter:
-        parameter['description'] = _remove_indentation(description)
+        parameter["description"] = _remove_indentation(description)
     else:
-        raise Exception('')
+        raise Exception("")
 
 def _update_output(schema, description):
-    if 'outputs' not in schema:
-        schema['outputs'] = [ { 'name': 'output' } ]
-    parameter = next((param for param in schema['outputs'] if param['name'] == 'output'), None)
+    if "outputs" not in schema:
+        schema["outputs"] = [ { "name": "output" } ]
+    outputs = schema["outputs"]
+    parameter = next((param for param in outputs if param["name"] == "output"), None)
     if parameter:
-        parameter['description'] = _remove_indentation(description)
+        parameter["description"] = _remove_indentation(description)
     else:
-        raise Exception('')
+        raise Exception("")
 
 def _update_examples(schema, value):
-    if 'examples' in schema:
-        del schema['examples']
+    if "examples" in schema:
+        del schema["examples"]
     value = _convert_code_blocks(value)
     lines = value.splitlines()
     code = []
@@ -102,10 +103,10 @@ def _update_examples(schema, value):
     while len(lines) > 0:
         line = lines.pop(0)
         if len(line) > 0:
-            if line.startswith('```'):
+            if line.startswith("```"):
                 while len(lines) > 0:
                     line = lines.pop(0)
-                    if line == '```':
+                    if line == "```":
                         break
                     code.append(line)
             else:
@@ -113,92 +114,92 @@ def _update_examples(schema, value):
         if len(code) > 0:
             example = {}
             if len(summary) > 0:
-                example['summary'] = '\n'.join(summary)
-            example['code'] = '\n'.join(code)
-            if 'examples' not in schema:
-                schema['examples'] = []
-            schema['examples'].append(example)
+                example["summary"] = "\n".join(summary)
+            example["code"] = "\n".join(code)
+            if "examples" not in schema:
+                schema["examples"] = []
+            schema["examples"].append(example)
             code = []
             summary = []
 
 def _update_references(schema, value):
-    if 'references' in schema:
-        del schema['references']
+    if "references" in schema:
+        del schema["references"]
     references = []
-    reference = ''
+    reference = ""
     lines = value.splitlines()
     for line in lines:
-        if line.lstrip().startswith('- '):
+        if line.lstrip().startswith("- "):
             if len(reference) > 0:
                 references.append(reference)
-            reference = line.lstrip().lstrip('- ')
+            reference = line.lstrip().lstrip("- ")
         else:
-            if line.startswith('  '):
+            if line.startswith("  "):
                 line = line[2:]
-            reference = ' '.join([ reference, line.strip() ])
+            reference = " ".join([ reference, line.strip() ])
     if len(reference) > 0:
         references.append(reference)
     for reference in references:
-        if 'references' not in schema:
-            schema['references'] = []
+        if "references" not in schema:
+            schema["references"] = []
         if len(reference.strip()) > 0:
-            schema['references'].append({ 'description': reference })
+            schema["references"].append({ "description": reference })
 
 def _update_headers(schema, docstring):
     headers = _parse_docstring(docstring)
     for header in headers:
         key, value = header
-        if key == '':
+        if key == "":
             description = _convert_code_blocks(value)
-            schema['description'] = _remove_indentation(description)
-        elif key in ('Args', 'Arguments'):
+            schema["description"] = _remove_indentation(description)
+        elif key in ("Args", "Arguments"):
             arguments = _parse_arguments(value)
             for argument in arguments:
                 _update_argument(schema, argument[0], argument[1])
-        elif key == 'Input shape':
+        elif key == "Input shape":
             _update_input(schema, value)
-        elif key == 'Output shape':
+        elif key == "Output shape":
             _update_output(schema, value)
-        elif key in ('Example', 'Examples', 'Usage'):
+        elif key in ("Example", "Examples", "Usage"):
             _update_examples(schema, value)
-        elif key in ('Reference', 'References'):
+        elif key in ("Reference", "References"):
             _update_references(schema, value)
-        elif key in ('Call arguments', 'Returns', 'Variables', 'Raises'):
+        elif key in ("Call arguments", "Returns", "Variables", "Raises"):
             pass
         else:
-            raise Exception('')
+            raise Exception("")
 
 
 def _metadata():
     root = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
-    json_path = os.path.join(root, 'source', 'keras-metadata.json')
+    json_path = os.path.join(root, "source", "keras-metadata.json")
     json_root = json.loads(_read(json_path))
     skip_names = set([
-        'keras.layers.InputLayer',
-        'keras.layers.ThresholdedReLU',
-        'keras.layers.LocallyConnected1D',
-        'keras.layers.LocallyConnected2D'
+        "keras.layers.InputLayer",
+        "keras.layers.ThresholdedReLU",
+        "keras.layers.LocallyConnected1D",
+        "keras.layers.LocallyConnected2D"
     ])
     for metadata in json_root:
-        if 'module' in metadata:
-            name = metadata['module'] + '.' + metadata['name']
+        if "module" in metadata:
+            name = metadata["module"] + "." + metadata["name"]
             if name not in skip_names:
                 cls = pydoc.locate(name)
                 if not cls:
                     raise KeyError(f"'{name}' not found.")
                 if not cls.__doc__:
                     raise AttributeError(f"'{name}' missing __doc__.")
-                if cls.__doc__ == 'DEPRECATED.':
+                if cls.__doc__ == "DEPRECATED.":
                     raise DeprecationWarning(f"'{name}.__doc__' is deprecated.'")
                 _update_headers(metadata, cls.__doc__)
 
-    with open(json_path, 'w', encoding='utf-8') as file:
+    with open(json_path, "w", encoding="utf-8") as file:
         content = json.dumps(json_root, sort_keys=False, indent=2)
         for line in content.splitlines():
-            file.write(line.rstrip() + '\n')
+            file.write(line.rstrip() + "\n")
 
 def main():
     _metadata()
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     main()

+ 97 - 88
tools/nnabla_script.py

@@ -1,4 +1,4 @@
-''' NNabla metadata script '''
+""" NNabla metadata script """
 
 import json
 import os
@@ -9,11 +9,11 @@ import yaml
 
 
 def _write(path, content):
-    with open(path, 'w', encoding='utf-8') as file:
+    with open(path, "w", encoding="utf-8") as file:
         file.write(content)
 
 def _read_yaml(path):
-    with open(path, encoding='utf-8') as file:
+    with open(path, encoding="utf-8") as file:
         return yaml.safe_load(file)
 
 def _metadata():
@@ -22,126 +22,135 @@ def _metadata():
         for category_name, category in function_info.items():
             for function_name, function_value in category.items():
                 function = {
-                    'name': function_name,
-                    'description': function_value['doc'].strip()
+                    "name": function_name,
+                    "description": function_value["doc"].strip()
                 }
-                for input_name, input_value in function_value.get('inputs', {}).items():
-                    function.setdefault('inputs', []).append({
-                        'name': input_name,
-                        'type': 'nnabla.Variable',
-                        'option': 'optional' if input_value.get('optional', False) else None,
-                        'list': input_value.get('variadic', False),
-                        'description': input_value['doc'].strip()
+                for input_name, input_value in function_value.get("inputs", {}).items():
+                    option = "optional" if input_value.get("optional", False) else None
+                    variadic = input_value.get("variadic", False)
+                    function.setdefault("inputs", []).append({
+                        "name": input_name,
+                        "type": "nnabla.Variable",
+                        "option": option,
+                        "list": variadic,
+                        "description": input_value["doc"].strip()
                     })
-                for arg_name, arg_value in function_value.get('arguments', {}).items():
+                for arg_name, arg_value in function_value.get("arguments", {}).items():
                     attribute = _attribute(arg_name, arg_value)
-                    function.setdefault('attributes', []).append(attribute)
-                for output_name, output_value in function_value.get('outputs', {}).items():
-                    function.setdefault('outputs', []).append({
-                        'name': output_name,
-                        'type': 'nnabla.Variable',
-                        'list': output_value.get('variadic', False),
-                        'description': output_value['doc'].strip()
+                    function.setdefault("attributes", []).append(attribute)
+                outputs = function_value.get("outputs", {})
+                for output_name, output_value in outputs.items():
+                    function.setdefault("outputs", []).append({
+                        "name": output_name,
+                        "type": "nnabla.Variable",
+                        "list": output_value.get("variadic", False),
+                        "description": output_value["doc"].strip()
                     })
-                if 'Pooling' in function_name:
-                    function['category'] = 'Pool'
-                elif category_name == 'Neural Network Layer':
-                    function['category'] = 'Layer'
-                elif category_name == 'Neural Network Activation Functions':
-                    function['category'] = 'Activation'
-                elif category_name == 'Normalization':
-                    function['category'] = 'Normalization'
-                elif category_name == 'Logical':
-                    function['category'] = 'Logic'
-                elif category_name == 'Array Manipulation':
-                    function['category'] = 'Shape'
+                if "Pooling" in function_name:
+                    function["category"] = "Pool"
+                elif category_name == "Neural Network Layer":
+                    function["category"] = "Layer"
+                elif category_name == "Neural Network Activation Functions":
+                    function["category"] = "Activation"
+                elif category_name == "Normalization":
+                    function["category"] = "Normalization"
+                elif category_name == "Logical":
+                    function["category"] = "Logic"
+                elif category_name == "Array Manipulation":
+                    function["category"] = "Shape"
                 functions.append(function)
         return functions
     def cleanup_functions(functions):
         for function in functions:
-            for inp in function.get('inputs', []):
-                if inp['option'] is None:
-                    inp.pop('option', None)
-                if not inp['list']:
-                    inp.pop('list', None)
-            for output in function.get('outputs', []):
-                if not output['list']:
-                    output.pop('list', None)
+            for inp in function.get("inputs", []):
+                if inp["option"] is None:
+                    inp.pop("option", None)
+                if not inp["list"]:
+                    inp.pop("list", None)
+            for output in function.get("outputs", []):
+                if not output["list"]:
+                    output.pop("list", None)
     root = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
-    functions_yaml_path = os.path.join(root, \
-        'third_party', 'source', 'nnabla', 'build-tools', 'code_generator', 'functions.yaml')
+    nnabla_dir = os.path.join(root, "third_party", "source", "nnabla")
+    code_generator_dir = os.path.join(nnabla_dir, "build-tools", "code_generator")
+    functions_yaml_path = os.path.join(code_generator_dir, "functions.yaml")
     function_info = _read_yaml(functions_yaml_path)
     functions = parse_functions(function_info)
     cleanup_functions(functions)
-    _write(os.path.join(root, 'source', 'nnabla-metadata.json'), json.dumps(functions, indent=2))
+    metadata_file = os.path.join(root, "source", "nnabla-metadata.json")
+    metadata = json.dumps(functions, indent=2)
+    _write(metadata_file, metadata)
 
 def _schema():
     root = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
-    third_party_dir = os.path.join(root, 'third_party', 'source', 'nnabla')
-    tmpl_file = os.path.join(third_party_dir, 'src/nbla/proto/nnabla.proto.tmpl')
-    yaml_functions_path = os.path.join(third_party_dir, 'build-tools/code_generator/functions.yaml')
-    yaml_solvers_path = os.path.join(third_party_dir, 'build-tools/code_generator/solvers.yaml')
+    nnabla_dir = os.path.join(root, "third_party", "source", "nnabla")
+    tmpl_file = os.path.join(nnabla_dir, "src/nbla/proto/nnabla.proto.tmpl")
+    code_generator_dir = os.path.join(nnabla_dir, "build-tools", "code_generator")
+    yaml_functions_path = os.path.join(code_generator_dir, "functions.yaml")
+    yaml_solvers_path = os.path.join(code_generator_dir, "solvers.yaml")
     functions = _read_yaml(yaml_functions_path)
-    function_info = {k: v for _, category in functions.items() for k, v in category.items()}
+    function_info = {}
+    for _, category in functions.items():
+        function_info.update(category)
     solver_info = _read_yaml(yaml_solvers_path)
-    path = tmpl_file.replace('.tmpl', '')
+    path = tmpl_file.replace(".tmpl", "")
     template = mako.template.Template(text=None, filename=tmpl_file, preprocessor=None)
     content = template.render(function_info=function_info, solver_info=solver_info)
-    content = content.replace('\r\n', '\n').replace('\r', '\n')
+    content = content.replace("\r\n", "\n").replace("\r", "\n")
     _write(path, content)
 
 def _attribute(name, value):
     attribute = {}
-    attribute['name'] = name
-    default = 'default' in value
+    attribute["name"] = name
+    default = "default" in value
     if not default:
-        attribute['required'] = True
-    if value['type'] == 'float':
-        attribute['type'] = 'float32'
+        attribute["required"] = True
+    if value["type"] == "float":
+        attribute["type"] = "float32"
         if default:
-            attribute['default'] = float(value['default'])
-    elif value['type'] == 'double':
-        attribute['type'] = 'float64'
+            attribute["default"] = float(value["default"])
+    elif value["type"] == "double":
+        attribute["type"] = "float64"
         if default:
-            attribute['default'] = float(value['default'])
-    elif value['type'] == 'bool':
-        attribute['type'] = 'boolean'
+            attribute["default"] = float(value["default"])
+    elif value["type"] == "bool":
+        attribute["type"] = "boolean"
         if default:
-            _ = value['default']
+            _ = value["default"]
             if isinstance(_, bool):
-                attribute['default'] = _
-            elif _ == 'True':
-                attribute['default'] = True
-            elif _ == 'False':
-                attribute['default'] = False
-    elif value['type'] == 'string':
-        attribute['type'] = 'string'
+                attribute["default"] = _
+            elif _ == "True":
+                attribute["default"] = True
+            elif _ == "False":
+                attribute["default"] = False
+    elif value["type"] == "string":
+        attribute["type"] = "string"
         if default:
-            _ = value['default']
-            attribute['default'] = _.strip("'")
-    elif value['type'] == 'int64':
-        attribute['type'] = 'int64'
+            _ = value["default"]
+            attribute["default"] = _.strip("'")
+    elif value["type"] == "int64":
+        attribute["type"] = "int64"
         if default:
-            _ = value['default']
-            if isinstance(_, str) and not _.startswith('len') and _ != 'None':
-                attribute['default'] = int(_)
+            _ = value["default"]
+            if isinstance(_, str) and not _.startswith("len") and _ != "None":
+                attribute["default"] = int(_)
             else:
-                attribute['default'] = _
-    elif value['type'] == 'repeated int64':
-        attribute['type'] = 'int64[]'
-    elif value['type'] == 'repeated float':
-        attribute['type'] = 'float32[]'
-    elif value['type'] == 'Shape':
-        attribute['type'] = 'shape'
-    if default and 'default' not in attribute:
-        attribute['default'] = value['default']
-    attribute['description'] = value['doc'].strip()
+                attribute["default"] = _
+    elif value["type"] == "repeated int64":
+        attribute["type"] = "int64[]"
+    elif value["type"] == "repeated float":
+        attribute["type"] = "float32[]"
+    elif value["type"] == "Shape":
+        attribute["type"] = "shape"
+    if default and "default" not in attribute:
+        attribute["default"] = value["default"]
+    attribute["description"] = value["doc"].strip()
     return attribute
 
 def main():
-    table = { 'metadata': _metadata, 'schema': _schema }
+    table = { "metadata": _metadata, "schema": _schema }
     for command in sys.argv[1:]:
         table[command]()
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     main()

+ 130 - 127
tools/onnx_script.py

@@ -1,4 +1,4 @@
-''' ONNX metadata script '''
+""" ONNX metadata script """
 
 import collections
 import json
@@ -11,21 +11,21 @@ import onnx.onnx_ml_pb2
 import onnxruntime
 
 attribute_type_table = [
-    'undefined',
-    'float32',
-    'int64',
-    'string',
-    'tensor',
-    'graph',
-    'float32[]',
-    'int64[]',
-    'string[]',
-    'tensor[]',
-    'graph[]',
-    'sparse_tensor',
-    'sparse_tensor[]',
-    'type_proto',
-    'type_proto[]'
+    "undefined",
+    "float32",
+    "int64",
+    "string",
+    "tensor",
+    "graph",
+    "float32[]",
+    "int64[]",
+    "string[]",
+    "tensor[]",
+    "graph[]",
+    "sparse_tensor",
+    "sparse_tensor[]",
+    "type_proto",
+    "type_proto[]"
 ]
 
 
@@ -36,96 +36,96 @@ def _format_description(description):
         if not url.startswith("http://") and not url.startswith("https://"):
             url = "https://github.com/onnx/onnx/blob/master/docs/" + url
         return "[" + link + "](" + url + ")"
-    return re.sub("\\[(.+)\\]\\(([^ ]+?)( \"(.+)\")?\\)", replace_line, description)
+    return re.sub('\\[(.+)\\]\\(([^ ]+?)( "(.+)")?\\)', replace_line, description)
 
 def _format_range(value):
-    return '&#8734;' if value == 2147483647 else str(value)
+    return "&#8734;" if value == 2147483647 else str(value)
 
 class OnnxSchema:
-    ''' ONNX schema '''
+    """ ONNX schema """
 
     def __init__(self, schema, snippets):
         self.schema = schema
         self.snippets = snippets
         self.name = self.schema.name
-        self.module = self.schema.domain if self.schema.domain else 'ai.onnx'
+        self.module = self.schema.domain if self.schema.domain else "ai.onnx"
         self.version = self.schema.since_version
-        self.key = self.name + ':' + self.module + ':' + str(self.version).zfill(4)
+        self.key = self.name + ":" + self.module + ":" + str(self.version).zfill(4)
 
     def _get_attr_type(self, attribute_type, attribute_name, op_type, op_domain):
-        key = op_domain + ':' + op_type + ':' + attribute_name
-        if key in (':Cast:to', ':EyeLike:dtype', ':RandomNormal:dtype'):
-            return 'DataType'
+        key = op_domain + ":" + op_type + ":" + attribute_name
+        if key in (":Cast:to", ":EyeLike:dtype", ":RandomNormal:dtype"):
+            return "DataType"
         return attribute_type_table[attribute_type]
 
     def _get_attr_default_value(self, attr_value):
-        if attr_value.HasField('i'):
+        if attr_value.HasField("i"):
             return attr_value.i
-        if attr_value.HasField('s'):
-            return attr_value.s.decode('utf8')
-        if attr_value.HasField('f'):
+        if attr_value.HasField("s"):
+            return attr_value.s.decode("utf8")
+        if attr_value.HasField("f"):
             return attr_value.f
         return None
 
     def _update_attributes(self, value, schema):
-        target = value['attributes'] = []
+        target = value["attributes"] = []
         attributes = sorted(schema.attributes.items())
         for _ in collections.OrderedDict(attributes).values():
             value = {}
-            value['name'] = _.name
-            attribute_type = self._get_attr_type(_.type, _.name, schema.name, schema.domain)
-            if attribute_type:
-                value['type'] = attribute_type
-            value['required'] = _.required
+            value["name"] = _.name
+            attr_type = self._get_attr_type(_.type, _.name, schema.name, schema.domain)
+            if attr_type:
+                value["type"] = attr_type
+            value["required"] = _.required
             default_value = self._get_attr_default_value(_.default_value)
             if default_value:
-                value['default'] = default_value
+                value["default"] = default_value
             description = _format_description(_.description)
             if len(description) > 0:
-                value['description'] = description
+                value["description"] = description
             target.append(value)
 
     def _update_inputs(self, value, inputs):
-        target = value['inputs'] = []
+        target = value["inputs"] = []
         for _ in inputs:
             value = {}
-            value['name'] = _.name
-            value['type'] = _.type_str
+            value["name"] = _.name
+            value["type"] = _.type_str
             if _.option == onnx.defs.OpSchema.FormalParameterOption.Optional:
-                value['option'] = 'optional'
+                value["option"] = "optional"
             elif _.option == onnx.defs.OpSchema.FormalParameterOption.Variadic:
-                value['list'] = True
+                value["list"] = True
             description = _format_description(_.description)
             if len(description) > 0:
-                value['description'] = description
+                value["description"] = description
             target.append(value)
 
     def _update_outputs(self, value, outputs):
-        target = value['outputs'] = []
+        target = value["outputs"] = []
         for _ in outputs:
             value = {}
-            value['name'] = _.name
-            value['type'] = _.type_str
+            value["name"] = _.name
+            value["type"] = _.type_str
             if _.option == onnx.defs.OpSchema.FormalParameterOption.Optional:
-                value['option'] = 'optional'
+                value["option"] = "optional"
             elif _.option == onnx.defs.OpSchema.FormalParameterOption.Variadic:
-                value['list'] = True
+                value["list"] = True
             description = _format_description(_.description)
             if len(description) > 0:
-                value['description'] = description
+                value["description"] = description
             target.append(value)
 
     def _update_type_constraints(self, value, type_constraints):
-        value['type_constraints'] = []
+        value["type_constraints"] = []
         for _ in type_constraints:
-            value['type_constraints'].append({
-                'description': _.description,
-                'type_param_str': _.type_param_str,
-                'allowed_type_strs': _.allowed_type_strs
+            value["type_constraints"].append({
+                "description": _.description,
+                "type_param_str": _.type_param_str,
+                "allowed_type_strs": _.allowed_type_strs
             })
 
     def _update_snippets(self, value, snippets):
-        target = value['examples'] = []
+        target = value["examples"] = []
         for summary, code in sorted(snippets):
             lines = code.splitlines()
             while len(lines) > 0 and re.search("\\s*#", lines[-1]):
@@ -133,36 +133,36 @@ class OnnxSchema:
                 if len(lines) > 0 and len(lines[-1]) == 0:
                     lines.pop()
             target.append({
-                'summary': summary,
-                'code': '\n'.join(lines)
+                "summary": summary,
+                "code": "\n".join(lines)
             })
 
     def to_dict(self):
-        ''' Serialize model to JSON message '''
+        """ Serialize model to JSON message """
         value = {}
-        value['name'] = self.name
-        value['module'] = self.module
-        value['version'] = self.version
+        value["name"] = self.name
+        value["module"] = self.module
+        value["version"] = self.version
         if self.schema.support_level != onnx.defs.OpSchema.SupportType.COMMON:
-            value['status'] = self.schema.support_level.name.lower()
+            value["status"] = self.schema.support_level.name.lower()
         description = _format_description(self.schema.doc.lstrip())
         if len(description) > 0:
-            value['description'] = description
+            value["description"] = description
         if self.schema.attributes:
             self._update_attributes(value, self.schema)
         if self.schema.inputs:
             self._update_inputs(value, self.schema.inputs)
-        value['min_input'] = self.schema.min_input
-        value['max_input'] = self.schema.max_input
+        value["min_input"] = self.schema.min_input
+        value["max_input"] = self.schema.max_input
         if self.schema.outputs:
             self._update_outputs(value, self.schema.outputs)
-        value['min_output'] = self.schema.min_output
-        value['max_output'] = self.schema.max_output
+        value["min_output"] = self.schema.min_output
+        value["max_output"] = self.schema.max_output
         if self.schema.min_input != self.schema.max_input:
-            value['inputs_range'] = _format_range(self.schema.min_input) + ' - ' \
+            value["inputs_range"] = _format_range(self.schema.min_input) + " - " \
                 + _format_range(self.schema.max_input)
         if self.schema.min_output != self.schema.max_output:
-            value['outputs_range'] = _format_range(self.schema.min_output) + ' - ' \
+            value["outputs_range"] = _format_range(self.schema.min_output) + " - " \
                 + _format_range(self.schema.max_output)
         if self.schema.type_constraints:
             self._update_type_constraints(value, self.schema.type_constraints)
@@ -171,113 +171,116 @@ class OnnxSchema:
         return value
 
 class OnnxRuntimeSchema:
-    ''' ONNX Runtime schema '''
+    """ ONNX Runtime schema """
 
     def __init__(self, schema):
         self.schema = schema
         self.name = self.schema.name
-        self.module = self.schema.domain if self.schema.domain else 'ai.onnx'
+        self.module = self.schema.domain if self.schema.domain else "ai.onnx"
         self.version = self.schema.since_version
-        self.key = self.name + ':' + self.module + ':' + str(self.version).zfill(4)
+        self.key = self.name + ":" + self.module + ":" + str(self.version).zfill(4)
 
     def _get_attr_type(self, attribute_type):
         return attribute_type_table[attribute_type]
 
     def _get_attr_default_value(self, attr_value):
-        if attr_value.HasField('i'):
+        if attr_value.HasField("i"):
             return attr_value.i
-        if attr_value.HasField('s'):
-            return attr_value.s.decode('utf8')
-        if attr_value.HasField('f'):
+        if attr_value.HasField("s"):
+            return attr_value.s.decode("utf8")
+        if attr_value.HasField("f"):
             return attr_value.f
         return None
 
     def _update_attributes(self, value, schema):
-        target = value['attributes'] = []
+        target = value["attributes"] = []
         attributes = sorted(schema.attributes.items())
         for _ in collections.OrderedDict(attributes).values():
             value = {}
-            value['name'] = _.name
+            value["name"] = _.name
             attribute_type = self._get_attr_type(_.type)
             if attribute_type:
-                value['type'] = attribute_type
-            value['required'] = _.required
+                value["type"] = attribute_type
+            value["required"] = _.required
             default_value = onnx.onnx_ml_pb2.AttributeProto()
             default_value.ParseFromString(_._default_value)
             default_value = self._get_attr_default_value(default_value)
             if default_value:
-                value['default'] = default_value
+                value["default"] = default_value
             description = _format_description(_.description)
             if len(description) > 0:
-                value['description'] = description
+                value["description"] = description
             target.append(value)
 
     def _update_inputs(self, value, inputs):
-        target = value['inputs'] = []
+        target = value["inputs"] = []
         for _ in inputs:
             value = {}
-            value['name'] = _.name
-            value['type'] = _.typeStr
-            if _.option == onnxruntime.capi.onnxruntime_pybind11_state.schemadef.OpSchema.FormalParameterOption.Optional:
-                value['option'] = 'optional'
-            elif _.option == onnxruntime.capi.onnxruntime_pybind11_state.schemadef.OpSchema.FormalParameterOption.Variadic:
-                value['list'] = True
+            value["name"] = _.name
+            value["type"] = _.typeStr
+            schemadef = onnxruntime.capi.onnxruntime_pybind11_state.schemadef
+            if _.option == schemadef.OpSchema.FormalParameterOption.Optional:
+                value["option"] = "optional"
+            elif _.option == schemadef.OpSchema.FormalParameterOption.Variadic:
+                value["list"] = True
             description = _format_description(_.description)
             if len(description) > 0:
-                value['description'] = description
+                value["description"] = description
             target.append(value)
 
     def _update_outputs(self, value, outputs):
-        target = value['outputs'] = []
+        target = value["outputs"] = []
         for _ in outputs:
             value = {}
-            value['name'] = _.name
-            value['type'] = _.typeStr
-            if _.option == onnxruntime.capi.onnxruntime_pybind11_state.schemadef.OpSchema.FormalParameterOption.Optional:
-                value['option'] = 'optional'
-            elif _.option == onnxruntime.capi.onnxruntime_pybind11_state.schemadef.OpSchema.FormalParameterOption.Variadic:
-                value['list'] = True
+            value["name"] = _.name
+            value["type"] = _.typeStr
+            schemadef = onnxruntime.capi.onnxruntime_pybind11_state.schemadef
+            if _.option == schemadef.OpSchema.FormalParameterOption.Optional:
+                value["option"] = "optional"
+            elif _.option == schemadef.OpSchema.FormalParameterOption.Variadic:
+                value["list"] = True
             description = _format_description(_.description)
             if len(description) > 0:
-                value['description'] = description
+                value["description"] = description
             target.append(value)
 
     def _update_type_constraints(self, value, type_constraints):
-        value['type_constraints'] = []
+        value["type_constraints"] = []
         for _ in type_constraints:
-            value['type_constraints'].append({
-                'description': _.description,
-                'type_param_str': _.type_param_str,
-                'allowed_type_strs': _.allowed_type_strs
+            value["type_constraints"].append({
+                "description": _.description,
+                "type_param_str": _.type_param_str,
+                "allowed_type_strs": _.allowed_type_strs
             })
 
     def to_dict(self):
-        ''' Serialize model to JSON message '''
+        """ Serialize model to JSON message """
         value = {}
-        value['name'] = self.name
-        value['module'] = self.module
-        value['version'] = self.version
-        if self.schema.support_level != onnxruntime.capi.onnxruntime_pybind11_state.schemadef.OpSchema.SupportType.COMMON:
-            value['status'] = self.schema.support_level.name.lower()
+        value["name"] = self.name
+        value["module"] = self.module
+        value["version"] = self.version
+        schemadef = onnxruntime.capi.onnxruntime_pybind11_state.schemadef
+        if self.schema.support_level != schemadef.OpSchema.SupportType.COMMON:
+            value["status"] = self.schema.support_level.name.lower()
         if self.schema.doc:
             description = _format_description(self.schema.doc.lstrip())
             if len(description) > 0:
-                value['description'] = description
+                value["description"] = description
         if self.schema.attributes:
             self._update_attributes(value, self.schema)
         if self.schema.inputs:
             self._update_inputs(value, self.schema.inputs)
-        value['min_input'] = self.schema.min_input
-        value['max_input'] = self.schema.max_input
+        value["min_input"] = self.schema.min_input
+        value["max_input"] = self.schema.max_input
         if self.schema.outputs:
             self._update_outputs(value, self.schema.outputs)
-        value['min_output'] = self.schema.min_output
-        value['max_output'] = self.schema.max_output
+        value["min_output"] = self.schema.min_output
+        value["max_output"] = self.schema.max_output
         if self.schema.min_input != self.schema.max_input:
-            value['inputs_range'] = _format_range(self.schema.min_input) + ' - ' \
+            value["inputs_range"] = _format_range(self.schema.min_input) + " - " \
                 + _format_range(self.schema.max_input)
         if self.schema.min_output != self.schema.max_output:
-            value['outputs_range'] = _format_range(self.schema.min_output) + ' - ' \
+            value["outputs_range"] = _format_range(self.schema.min_output) + " - " \
                 + _format_range(self.schema.max_output)
         if self.schema.type_constraints:
             self._update_type_constraints(value, self.schema.type_constraints)
@@ -285,18 +288,18 @@ class OnnxRuntimeSchema:
 
 def _metadata():
     root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
-    file = os.path.join(root_dir, 'source', 'onnx-metadata.json')
-    with open(file, encoding='utf-8') as handle:
+    file = os.path.join(root_dir, "source", "onnx-metadata.json")
+    with open(file, encoding="utf-8") as handle:
         content = handle.read()
     categories = {}
     content = json.loads(content)
     for schema in content:
-        if 'category' in schema:
-            name = schema['name']
-            categories[name] = schema['category']
+        if "category" in schema:
+            name = schema["name"]
+            categories[name] = schema["category"]
     types = collections.OrderedDict()
-    numpy = __import__('numpy')
-    with numpy.errstate(all='ignore'):
+    numpy = __import__("numpy")
+    with numpy.errstate(all="ignore"):
         snippets = onnx.backend.test.case.collect_snippets()
     for schema in onnx.defs.get_all_schemas_with_history():
         schema = OnnxSchema(schema, snippets)
@@ -307,27 +310,27 @@ def _metadata():
         if schema.key not in types:
             types[schema.key] = schema.to_dict()
     for schema in content:
-        key = schema['name'] + ':' + schema['module'] + ':' + str(schema['version']).zfill(4)
+        key = f"{schema['name']}:{schema['module']}:{str(schema['version']).zfill(4)}"
         if key not in types:
             types[key] = schema
     types = [types[key] for key in sorted(types)]
     for schema in types:
-        name = schema['name']
+        name = schema["name"]
         # copy = schema.copy()
         # schema.clear()
         # schema['name'] = name
         # schema['module'] = copy['module']
         if name in categories:
-            schema['category'] = categories[name]
+            schema["category"] = categories[name]
         # for key, value in copy.items():
         #     if key not in schema:
         #         schema[key] = value
     content = json.dumps(types, indent=2)
-    with open(file, 'w', encoding='utf-8') as handle:
+    with open(file, "w", encoding="utf-8") as handle:
         handle.write(content)
 
 def main():
     _metadata()
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     main()

+ 302 - 300
tools/pytorch_script.py

@@ -1,4 +1,4 @@
-''' TorchScript metadata script '''
+""" TorchScript metadata script """
 
 import collections
 import json
@@ -8,25 +8,25 @@ import sys
 
 root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 sys.path.append(root_dir)
-sys.pycache_prefix = os.path.join(root_dir, 'dist', 'pycache', 'pytorch_script')
+sys.pycache_prefix = os.path.join(root_dir, "dist", "pycache", "pytorch_script")
 
-source_dir = os.path.join(root_dir, 'source')
-third_party_dir = os.path.join(root_dir, 'third_party')
-metadata_file = os.path.join(source_dir, 'pytorch-metadata.json')
-pytorch_source_dir = os.path.join(third_party_dir, 'source', 'pytorch')
+source_dir = os.path.join(root_dir, "source")
+third_party_dir = os.path.join(root_dir, "third_party")
+metadata_file = os.path.join(source_dir, "pytorch-metadata.json")
+pytorch_source_dir = os.path.join(third_party_dir, "source", "pytorch")
 
 def _read(path):
-    with open(path, encoding='utf-8') as file:
+    with open(path, encoding="utf-8") as file:
         return file.read()
 
 def _write(path, content):
-    with open(path, 'w', encoding='utf-8') as file:
+    with open(path, "w", encoding="utf-8") as file:
         file.write(content)
 
 def _read_metadata():
     metadata = {}
     for value in json.loads(_read(metadata_file)):
-        key = value['name']
+        key = value["name"]
         key = key.split("(")[0]
         if key in metadata:
             raise ValueError(f"Duplicate key '{key}'")
@@ -35,294 +35,296 @@ def _read_metadata():
 
 def _write_metadata(metadata):
     content = json.dumps(metadata, indent=2, ensure_ascii=False)
-    content = re.sub(r'\s {8}', ' ', content)
-    content = re.sub(r',\s {8}', ', ', content)
-    content = re.sub(r'\s {6}}', ' }', content)
+    content = re.sub(r"\s {8}", " ", content)
+    content = re.sub(r",\s {8}", ", ", content)
+    content = re.sub(r"\s {6}}", " }", content)
     _write(metadata_file, content)
 
+
 known_legacy_schema_definitions = [
-    '_caffe2::BBoxTransform(Tensor rois, Tensor deltas, Tensor im_info, float[] weights, bool apply_scale, bool rotated, bool angle_bound_on, int angle_bound_lo, int angle_bound_hi, float clip_angle_thresh, bool legacy_plus_one, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor output_0, Tensor output_1)',
-    '_caffe2::BatchPermutation(Tensor X, Tensor indices, Tensor[]? _caffe2_preallocated_outputs=None) -> Tensor',
-    '_caffe2::BoxWithNMSLimit(Tensor scores, Tensor boxes, Tensor batch_splits, float score_thresh, float nms, int detections_per_im, bool soft_nms_enabled, str soft_nms_method, float soft_nms_sigma, float soft_nms_min_score_thres, bool rotated, bool cls_agnostic_bbox_reg, bool input_boxes_include_bg_cls, bool output_classes_include_bg_cls, bool legacy_plus_one, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor scores, Tensor boxes, Tensor classes, Tensor batch_splits, Tensor keeps, Tensor keeps_size)',
-    '_caffe2::CollectAndDistributeFpnRpnProposals(Tensor[] input_list, int roi_canonical_scale, int roi_canonical_level, int roi_max_level, int roi_min_level, int rpn_max_level, int rpn_min_level, int rpn_post_nms_topN, bool legacy_plus_one, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor rois, Tensor rois_fpn2, Tensor rois_fpn3, Tensor rois_fpn4, Tensor rois_fpn5, Tensor rois_idx_restore_int32)',
-    '_caffe2::CollectRpnProposals(Tensor[] input_list, int rpn_max_level, int rpn_min_level, int rpn_post_nms_topN, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor rois)',
-    '_caffe2::CopyCPUToGPU(Tensor input, Tensor[]? _caffe2_preallocated_outputs=None) -> Tensor',
-    '_caffe2::CopyGPUToCPU(Tensor input, Tensor[]? _caffe2_preallocated_outputs=None) -> Tensor',
-    '_caffe2::DistributeFpnProposals(Tensor rois, int roi_canonical_scale, int roi_canonical_level, int roi_max_level, int roi_min_level, bool legacy_plus_one, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor rois_fpn2, Tensor rois_fpn3, Tensor rois_fpn4, Tensor rois_fpn5, Tensor rois_idx_restore_int32)',
-    '_caffe2::GenerateProposals(Tensor scores, Tensor bbox_deltas, Tensor im_info, Tensor anchors, float spatial_scale, int pre_nms_topN, int post_nms_topN, float nms_thresh, float min_size, bool angle_bound_on, int angle_bound_lo, int angle_bound_hi, float clip_angle_thresh, bool legacy_plus_one, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor output_0, Tensor output_1)',
-    '_caffe2::RoIAlign(Tensor features, Tensor rois, str order, float spatial_scale, int pooled_h, int pooled_w, int sampling_ratio, bool aligned, Tensor[]? _caffe2_preallocated_outputs=None) -> Tensor',
-    'aten::_cat.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!)',
-    'aten::_cat(Tensor[] tensors, int dim=0) -> Tensor',
-    'aten::arange.start_out_(Scalar start, Scalar end) -> Tensor',
-    'aten::fft(Tensor self, int signal_ndim, bool normalized=False) -> Tensor',
-    'aten::grid_sampler.legacy(Tensor input, Tensor grid, int interpolation_mode, int padding_mode) -> Tensor',
-    'aten::rand_like.generator(Tensor self, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor',
-    'aten::rand_like.generator_out(Tensor self, *, Generator? generator, MemoryFormat? memory_format=None, Tensor(a!) out) -> Tensor(a!)',
-    'aten::randn_like.generator(Tensor self, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor',
-    'aten::randn_like.generator_out(Tensor self, *, Generator? generator, MemoryFormat? memory_format=None, Tensor(a!) out) -> Tensor(a!)',
-    'aten::randint_like.generator(Tensor self, SymInt high, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor',
-    'aten::randint_like.generator_out(Tensor self, SymInt high, *, Generator? generator, MemoryFormat? memory_format=None, Tensor(a!) out) -> Tensor(a!)',
-    'aten::randint_like.generator_with_low_dtype(Tensor self, SymInt low, SymInt high, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor',
-    'aten::randint_like.generator_with_low_dtype_out(Tensor self, SymInt low, SymInt high, *, Generator? generator, MemoryFormat? memory_format=None, Tensor(a!) out) -> Tensor(a!)',
-    'detectron2::nms_rotated(Tensor boxes, Tensor scores, float iou_threshold) -> Tensor',
-    'detectron2::roi_align_rotated_forward(Tensor input, Tensor rois, float spatial_scale, int pooled_height, int pooled_width, int sampling_ratio) -> Tensor',
-    'dim_order_ops::_empty_dim_order.out(int[] size, *, int[]? dim_order=None, Tensor(a!) out) -> Tensor(a!)',
-    'dim_order_ops::_to_dim_order_copy.out(Tensor self, *, bool non_blocking=False, int[]? dim_order=None, Tensor(a!) out) -> Tensor(a!)',
-    'executorch_prim::et_view.default(Tensor self, int[] size) -> (Tensor out)',
-    'executorch_prim::add.Scalar(Scalar a, Scalar b) -> Scalar',
-    'executorch_prim::sub.Scalar(Scalar a, Scalar b) -> Scalar',
-    'executorch_prim::mul.Scalar(Scalar a, Scalar b) -> Scalar',
-    'executorch_prim::floordiv.Scalar(Scalar a, Scalar b) -> Scalar',
-    'neuron::_execute_neuron(__torch__.torch.classes.neuron.Model _0, Tensor[] _1) -> Tensor[] _0',
-    'neuron::_from_neuron(Tensor _0) -> Tensor _0',
-    'neuron::_init_neuron() -> ()',
-    'neuron::_load_collectives_neuron(__torch__.torch.classes.neuron.Model _0, int _1, int _2, int _3, int _4) -> ()',
-    'neuron::_load_neuron(__torch__.torch.classes.neuron.Model _0) -> ()',
-    'neuron::_parallel_executor_run(__torch__.torch.classes.neuron.ParallelExecutor _0, Tensor[] _1, int _2) -> Tensor[] _0',
-    'neuron::_parallel_from_neuron(Tensor _0) -> Tensor[] _0',
-    'neuron::_parallel_load(Dict(str, Tensor)[] _0) -> Dict(str, Tensor)[] _0',
-    'neuron::_parallel_profile_start_neuron(__torch__.torch.classes.neuron.ParallelModel _0, str _1, int _2) -> str[] _0',
-    'neuron::_parallel_profile_stop_neuron(str[] _0) -> ()',
-    'neuron::_parallel_run_neuron(__torch__.torch.classes.neuron.ParallelModel _0, __torch__.torch.classes.neuron.ParallelTensorSet _1, __torch__.torch.classes.neuron.ParallelTensorSet _2) -> ()',
-    'neuron::_parallel_slice_neuron(Tensor _0, int _1, int _2, int _3, int _4) -> Tensor _0',
-    'neuron::_parallel_to_neuron(Tensor[] _0) -> Tensor _0',
-    'neuron::_parallel_write_neuron(Tensor _0, Tensor[] _1) -> ()',
-    'neuron::_profile_start_neuron(__torch__.torch.classes.neuron.Model _0, str _1) -> ()',
-    'neuron::_profile_stop_neuron(str _0) -> ()',
-    'neuron::_slice_neuron(Tensor _0, int _1, int _2, int _3, int _4) -> Tensor _0',
-    'neuron::_to_neuron(Tensor _0, int _1) -> Tensor _0',
-    'neuron::create_module_from_graph(str _0, str _1) -> str _0',
-    'neuron::forward_1(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> Tensor _0',
-    'neuron::forward_10(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9)',
-    'neuron::forward_11(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10)',
-    'neuron::forward_12(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11)',
-    'neuron::forward_13(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12)',
-    'neuron::forward_14(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13)',
-    'neuron::forward_15(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14)',
-    'neuron::forward_16(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15)',
-    'neuron::forward_17(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16)',
-    'neuron::forward_18(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17)',
-    'neuron::forward_19(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18)',
-    'neuron::forward_2(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1)',
-    'neuron::forward_20(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19)',
-    'neuron::forward_21(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20)',
-    'neuron::forward_22(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21)',
-    'neuron::forward_23(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22)',
-    'neuron::forward_24(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23)',
-    'neuron::forward_25(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24)',
-    'neuron::forward_26(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25)',
-    'neuron::forward_27(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26)',
-    'neuron::forward_28(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27)',
-    'neuron::forward_29(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28)',
-    'neuron::forward_3(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2)',
-    'neuron::forward_30(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29)',
-    'neuron::forward_31(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30)',
-    'neuron::forward_32(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31)',
-    'neuron::forward_33(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32)',
-    'neuron::forward_34(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33)',
-    'neuron::forward_35(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34)',
-    'neuron::forward_36(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35)',
-    'neuron::forward_37(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36)',
-    'neuron::forward_38(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37)',
-    'neuron::forward_39(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38)',
-    'neuron::forward_4(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3)',
-    'neuron::forward_40(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39)',
-    'neuron::forward_41(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40)',
-    'neuron::forward_42(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41)',
-    'neuron::forward_43(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42)',
-    'neuron::forward_44(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43)',
-    'neuron::forward_45(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44)',
-    'neuron::forward_46(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45)',
-    'neuron::forward_47(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46)',
-    'neuron::forward_48(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47)',
-    'neuron::forward_49(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48)',
-    'neuron::forward_5(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4)',
-    'neuron::forward_50(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49)',
-    'neuron::forward_51(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50)',
-    'neuron::forward_52(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51)',
-    'neuron::forward_53(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52)',
-    'neuron::forward_54(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53)',
-    'neuron::forward_55(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54)',
-    'neuron::forward_56(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55)',
-    'neuron::forward_57(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56)',
-    'neuron::forward_58(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57)',
-    'neuron::forward_59(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58)',
-    'neuron::forward_6(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5)',
-    'neuron::forward_60(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59)',
-    'neuron::forward_61(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60)',
-    'neuron::forward_62(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61)',
-    'neuron::forward_63(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61, Tensor _62)',
-    'neuron::forward_64(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61, Tensor _62, Tensor _63)',
-    'neuron::forward_7(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6)',
-    'neuron::forward_8(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7)',
-    'neuron::forward_9(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8)',
-    'neuron::forward_v2(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> Tensor[] _0',
-    'neuron::forward_v2_1(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> Tensor _0',
-    'neuron::forward_v2_10(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9)',
-    'neuron::forward_v2_11(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10)',
-    'neuron::forward_v2_12(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11)',
-    'neuron::forward_v2_13(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12)',
-    'neuron::forward_v2_14(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13)',
-    'neuron::forward_v2_15(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14)',
-    'neuron::forward_v2_16(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15)',
-    'neuron::forward_v2_17(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16)',
-    'neuron::forward_v2_18(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17)',
-    'neuron::forward_v2_19(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18)',
-    'neuron::forward_v2_2(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1)',
-    'neuron::forward_v2_20(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19)',
-    'neuron::forward_v2_21(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20)',
-    'neuron::forward_v2_22(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21)',
-    'neuron::forward_v2_23(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22)',
-    'neuron::forward_v2_24(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23)',
-    'neuron::forward_v2_25(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24)',
-    'neuron::forward_v2_26(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25)',
-    'neuron::forward_v2_27(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26)',
-    'neuron::forward_v2_28(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27)',
-    'neuron::forward_v2_29(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28)',
-    'neuron::forward_v2_3(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2)',
-    'neuron::forward_v2_30(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29)',
-    'neuron::forward_v2_31(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30)',
-    'neuron::forward_v2_32(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31)',
-    'neuron::forward_v2_33(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32)',
-    'neuron::forward_v2_35(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34)',
-    'neuron::forward_v2_36(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35)',
-    'neuron::forward_v2_37(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36)',
-    'neuron::forward_v2_38(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37)',
-    'neuron::forward_v2_39(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38)',
-    'neuron::forward_v2_4(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3)',
-    'neuron::forward_v2_40(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39)',
-    'neuron::forward_v2_41(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40)',
-    'neuron::forward_v2_42(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41)',
-    'neuron::forward_v2_43(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42)',
-    'neuron::forward_v2_44(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43)',
-    'neuron::forward_v2_45(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44)',
-    'neuron::forward_v2_46(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45)',
-    'neuron::forward_v2_47(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46)',
-    'neuron::forward_v2_48(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47)',
-    'neuron::forward_v2_49(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48)',
-    'neuron::forward_v2_5(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4)',
-    'neuron::forward_v2_50(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49)',
-    'neuron::forward_v2_51(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50)',
-    'neuron::forward_v2_52(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51)',
-    'neuron::forward_v2_53(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52)',
-    'neuron::forward_v2_54(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53)',
-    'neuron::forward_v2_55(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54)',
-    'neuron::forward_v2_56(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55)',
-    'neuron::forward_v2_57(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56)',
-    'neuron::forward_v2_58(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57)',
-    'neuron::forward_v2_59(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58)',
-    'neuron::forward_v2_6(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5)',
-    'neuron::forward_v2_60(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59)',
-    'neuron::forward_v2_61(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60)',
-    'neuron::forward_v2_62(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61)',
-    'neuron::forward_v2_63(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61, Tensor _62)',
-    'neuron::forward_v2_64(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61, Tensor _62, Tensor _63)',
-    'neuron::forward_v2_7(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6)',
-    'neuron::forward_v2_8(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7)',
-    'neuron::forward_v2_9(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8)',
-    'neuron::rnn(Tensor _0, Tensor[] _1, __torch__.torch.classes.neuron.RnnBinding _2, int _3) -> (Tensor _0, Tensor[] _1)',
-    'neuron::rnn_v2(Tensor _0, Tensor _1, Tensor _2, int _3, __torch__.torch.classes.neuron.RnnBinding_v2[] _4) -> (Tensor _0, Tensor _1, Tensor _2)',
-    'horizon::scale_quanti(Tensor x, Tensor scale, Tensor zero_point, int d, int min, int max, bool flag1, bool flat2, str str1, str str2) -> Tensor',
-    'prim::isinstance(Any to_check) -> bool',
-    'prim::shape(Tensor self) -> int[]',
-    'llama::custom_sdpa.out(Tensor query, Tensor key, Tensor value, SymInt start_pos, Tensor? attn_mask=None, float drpout_p=0.0, bool is_causal=False, float? scale=None, *, Tensor(a!) out) -> Tensor(a!)',
-    'llama::custom_sdpa(Tensor query, Tensor key, Tensor value, SymInt start_pos, Tensor? attn_mask=None, float drpout_p=0.0, bool is_causal=False, float? scale=None) -> Tensor',
-    'llama::fast_hadamard_transform.out(Tensor mat, *, Tensor(a!) out) -> Tensor(a!)',
-    'llama::sdpa_with_kv_cache.out(Tensor query, Tensor key, Tensor value, Tensor(a!) key_cache, Tensor(b!) value_cache, SymInt start_pos, SymInt seq_len, Tensor? attn_mask=None, float drpout_p=0.0, bool is_causal=False, float? scale=None, *, Tensor(c!) out) -> Tensor(c!)',
-    'llama::sdpa_with_kv_cache(Tensor query, Tensor key, Tensor value, Tensor(a!) key_cache, Tensor(b!) value_cache, SymInt start_pos, SymInt seq_len, Tensor? attn_mask=None, float drpout_p=0.0, bool is_causal=False, float? scale=None) -> Tensor',
-    'llama::sdpa.out(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, float drpout_p=0.0, bool is_causal=False, float? scale=None, *, Tensor(a!) out) -> Tensor(a!)',
-    'llama::update_cache.out(Tensor value, Tensor(a!) cache, SymInt start_pos, *, Tensor(b!) out) -> Tensor(b!)',
-    'llama::update_cache(Tensor value, Tensor(a!) cache, SymInt start_pos) -> Tensor',
-    'quantized_decomposed::quantize_per_tensor.out(Tensor input, float scale, int zero_point, int quant_min, int quant_max, ScalarType dtype, *, Tensor(a!) out) -> Tensor(a!)',
-    'quantized_decomposed::dequantize_per_tensor.out(Tensor input, float scale, int zero_point, int quant_min, int quant_max, ScalarType dtype, *, ScalarType? out_dtype=None, Tensor(a!) out) -> Tensor(a!)',
-    'quantized_decomposed::dequantize_per_tensor.Tensor_out(Tensor input, Tensor scale, Tensor zero_point, int quant_min, int quant_max, ScalarType dtype, *, ScalarType? out_dtype=None, Tensor(a!) out) -> Tensor(a!)',
-    'quantized_decomposed::choose_qparams.tensor(Tensor input, int quant_min, int quant_max, float eps, ScalarType dtype) -> (Tensor, Tensor)',
-    'quantized_decomposed::embedding_4bit(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices) -> Tensor',
-    'quantized_decomposed::embedding_4bit.dtype(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, ScalarType? dtype=None) -> Tensor',
-    'quantized_decomposed::embedding_4bit.out(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, Tensor(a!) out) -> Tensor(a!)',
-    'quantized_decomposed::embedding_4bit.dtype_out(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)',
-    'quantized_decomposed::dequantize_per_tensor(Tensor input, float scale, int zero_point, int quant_min, int quant_max, ScalarType dtype, *, ScalarType? out_dtype=None) -> Tensor',
-    'quantized_decomposed::dequantize_per_tensor.tensor(Tensor input, Tensor scale, Tensor zero_point, int quant_min, int quant_max, ScalarType dtype, *, ScalarType? out_dtype=None) -> Tensor',
-    'quantized_decomposed::dequantize_per_tensor.tensor2(Tensor input, Tensor scale, Tensor zero_point, Tensor quant_min, Tensor quant_max, ScalarType dtype, *, ScalarType? out_dtype=None) -> Tensor',
-    'quantized_decomposed::add(Tensor a, float a_scale, int a_zero_point, int a_quant_min, int a_quant_max, Tensor b, float b_scale, int b_zero_point, int b_quant_min, int b_quant_max, float out_scale, int out_zero_point, int out_quant_min, int out_quant_max) -> Tensor qc',
-    'quantized_decomposed::add.scalar(Tensor qa, float a_scale, int a_zero_point, int a_quant_min, int a_quant_max, ScalarType a_dtype, Scalar b, float out_scale, int out_zero_point, int out_quant_min, int out_quant_max, ScalarType out_dtype) -> Tensor',
-    'quantized_decomposed::add_relu(Tensor a, float a_scale, int a_zero_point, int a_quant_min, int a_quant_max, Tensor b, float b_scale, int b_zero_point, int b_quant_min, int b_quant_max, float out_scale, int out_zero_point, int out_quant_min, int out_quant_max) -> Tensor qc',
-    'quantized_decomposed::dequantize_per_channel(Tensor input, Tensor scales, Tensor? zero_points, int axis, int quant_min, int quant_max, ScalarType dtype, *, ScalarType? out_dtype=None) -> Tensor',
-    'quantized_decomposed::fake_quant_per_channel(Tensor input, Tensor scales, Tensor zero_points, int axis, int quant_min, int quant_max) -> Tensor',
-    'quantized_decomposed::quantize_per_channel(Tensor input, Tensor scales, Tensor zero_points, int axis, int quant_min, int quant_max, ScalarType dtype) -> Tensor',
-    'quantized_decomposed::choose_qparams_symmetric.tensor(Tensor input, int quant_min, int quant_max, float eps, ScalarType dtype) -> (Tensor, Tensor)',
-    'quantized_decomposed::mixed_linear(Tensor input, Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, ScalarType? dtype=None) -> Tensor',
-    'quantized_decomposed::dequantize_per_token(Tensor input, Tensor scales, Tensor zero_points, int quant_min, int quant_max, ScalarType dtype, ScalarType output_dtype) -> Tensor',
-    'quantized_decomposed::quantize_per_tensor(Tensor input, float scale, int zero_point, int quant_min, int quant_max, ScalarType dtype) -> Tensor',
-    'quantized_decomposed::quantize_per_tensor.tensor(Tensor input, Tensor scale, Tensor zero_point, int quant_min, int quant_max, ScalarType dtype) -> Tensor',
-    'quantized_decomposed::quantize_per_tensor.tensor2(Tensor input, Tensor scale, Tensor zero_point, Tensor quant_min, Tensor quant_max, ScalarType dtype) -> Tensor',
-    'quantized_decomposed::choose_qparams_per_token_asymmetric(Tensor input, ScalarType dtype) -> (Tensor, Tensor)',
-    'quantized_decomposed::choose_qparams_per_token(Tensor input, ScalarType dtype) -> (Tensor, Tensor)',
-    'quantized_decomposed::quantize_per_channel_group(Tensor input, Tensor scales, Tensor zero_points, int quant_min, int quant_max, ScalarType dtype, int group_size) -> Tensor',
-    'quantized_decomposed::dequantize_per_channel_group(Tensor input, Tensor scales, Tensor? zero_points, int quant_min, int quant_max, ScalarType dtype, int group_size, ScalarType output_dtype) -> Tensor',
-    'quantized_decomposed::embedding_byte(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices) -> Tensor',
-    'quantized_decomposed::embedding_byte.dtype(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, ScalarType? dtype=None) -> Tensor',
-    'quantized_decomposed::embedding_byte.out(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, Tensor(a!) out) -> Tensor(a!)',
-    'quantized_decomposed::embedding_byte.dtype_out(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)',
-    'quantized_decomposed::mixed_mm(Tensor input, Tensor weight, Tensor weight_scales, Tensor? weight_zero_points) -> Tensor',
-    'quantized_decomposed::_choose_qparams_per_token_asymmetric_impl(Tensor input, ScalarType dtype) -> (Tensor, Tensor)',
-    'quantized_decomposed::quantize_per_token(Tensor input, Tensor scales, Tensor zero_points, int quant_min, int quant_max, ScalarType dtype) -> Tensor',
-    'tensorrt::execute_engine(Tensor[] inputs, __torch__.torch.classes.tensorrt.Engine engine) -> Tensor[]',
-    'torch_sparse::hgt_sample(Dict(str, Tensor) _0, Dict(str, Tensor) _1, Dict(str, Tensor) _2, Dict(str, int[]) _3, int _4) -> (Dict(str, Tensor) _0, Dict(str, Tensor) _1, Dict(str, Tensor) _2, Dict(str, Tensor) _3)',
-    'torch_sparse::cuda_version() -> int _0',
-    'torch_sparse::random_walk(Tensor _0, Tensor _1, Tensor _2, int _3) -> Tensor _0',
-    'torch_scatter::segment_min_csr(Tensor _0, Tensor _1, Tensor? _2) -> (Tensor _0, Tensor _1)',
-    'torch_sparse::partition2(Tensor _0, Tensor _1, Tensor? _2, Tensor? _3, int _4, bool _5) -> Tensor _0',
-    'torch_sparse::ego_k_hop_sample_adj(Tensor _0, Tensor _1, Tensor _2, int _3, int _4, bool _5) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5)',
-    'torch_scatter::segment_sum_csr(Tensor _0, Tensor _1, Tensor? _2) -> Tensor _0',
-    'torch_sparse::sample_adj(Tensor _0, Tensor _1, Tensor _2, int _3, bool _4) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3)',
-    'torch_scatter::segment_max_coo(Tensor _0, Tensor _1, Tensor? _2, int? _3) -> (Tensor _0, Tensor _1)',
-    'torch_scatter::gather_coo(Tensor _0, Tensor _1, Tensor? _2) -> Tensor _0',
-    'torch_sparse::neighbor_sample(Tensor _0, Tensor _1, Tensor _2, int[] _3, bool _4, bool _5) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3)',
-    'torch_sparse::hetero_temporal_neighbor_sample(str[] _0, (str, str, str)[] _1, Dict(str, Tensor) _2, Dict(str, Tensor) _3, Dict(str, Tensor) _4, Dict(str, int[]) _5, Dict(str, Tensor) _6, int _7, bool _8, bool _9) -> (Dict(str, Tensor) _0, Dict(str, Tensor) _1, Dict(str, Tensor) _2, Dict(str, Tensor) _3)',
-    'torch_sparse::partition(Tensor _0, Tensor _1, Tensor? _2, int _3, bool _4) -> Tensor _0',
-    'torch_scatter::segment_min_coo(Tensor _0, Tensor _1, Tensor? _2, int? _3) -> (Tensor _0, Tensor _1)',
-    'torch_sparse::hetero_neighbor_sample(str[] _0, (str, str, str)[] _1, Dict(str, Tensor) _2, Dict(str, Tensor) _3, Dict(str, Tensor) _4, Dict(str, int[]) _5, int _6, bool _7, bool _8) -> (Dict(str, Tensor) _0, Dict(str, Tensor) _1, Dict(str, Tensor) _2, Dict(str, Tensor) _3)',
-    'torch_sparse::spmm_mean(Tensor? _0, Tensor _1, Tensor _2, Tensor? _3, Tensor? _4, Tensor? _5, Tensor? _6, Tensor _7) -> Tensor _0',
-    'torch_sparse::spmm_max(Tensor _0, Tensor _1, Tensor? _2, Tensor _3) -> (Tensor _0, Tensor _1)',
-    'torch_sparse::relabel(Tensor _0, Tensor _1) -> (Tensor _0, Tensor _1)',
-    'torch_sparse::relabel_one_hop(Tensor _0, Tensor _1, Tensor? _2, Tensor _3, bool _4) -> (Tensor _0, Tensor _1, Tensor? _2, Tensor _3)',
-    'torch_scatter::scatter_mul(Tensor _0, Tensor _1, int _2, Tensor? _3, int? _4) -> Tensor _0',
-    'torch_sparse::ind2ptr(Tensor _0, int _1) -> Tensor _0',
-    'torch_scatter::cuda_version() -> int _0',
-    'torch_sparse::spmm_sum(Tensor? _0, Tensor _1, Tensor _2, Tensor? _3, Tensor? _4, Tensor? _5, Tensor _6) -> Tensor _0',
-    'torch_sparse::ptr2ind(Tensor _0, int _1) -> Tensor _0',
-    'torch_scatter::segment_mean_csr(Tensor _0, Tensor _1, Tensor? _2) -> Tensor _0',
-    'torch_sparse::spmm_min(Tensor _0, Tensor _1, Tensor? _2, Tensor _3) -> (Tensor _0, Tensor _1)',
-    'torch_scatter::segment_sum_coo(Tensor _0, Tensor _1, Tensor? _2, int? _3) -> Tensor _0',
-    'torch_scatter::scatter_mean(Tensor _0, Tensor _1, int _2, Tensor? _3, int? _4) -> Tensor _0',
-    'torch_scatter::scatter_max(Tensor _0, Tensor _1, int _2, Tensor? _3, int? _4) -> (Tensor _0, Tensor _1)',
-    'torch_scatter::segment_max_csr(Tensor _0, Tensor _1, Tensor? _2) -> (Tensor _0, Tensor _1)',
-    'torch_scatter::gather_csr(Tensor _0, Tensor _1, Tensor? _2) -> Tensor _0',
-    'torch_scatter::segment_mean_coo(Tensor _0, Tensor _1, Tensor? _2, int? _3) -> Tensor _0',
-    'torch_scatter::scatter_min(Tensor _0, Tensor _1, int _2, Tensor? _3, int? _4) -> (Tensor _0, Tensor _1)',
-    'torch_sparse::mt_partition(Tensor _0, Tensor _1, Tensor? _2, Tensor? _3, int _4, bool _5, int _6) -> Tensor _0',
-    'torch_sparse::saint_subgraph(Tensor _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2)',
-    'torch_scatter::scatter_sum(Tensor _0, Tensor _1, int _2, Tensor? _3, int? _4) -> Tensor _0',
-    'torch_sparse::non_diag_mask(Tensor _0, Tensor _1, int _2, int _3, int _4) -> Tensor _0',
-    'torchaudio::sox_effects_apply_effects_tensor(Tensor tensor, int sample_rate, str[][] effects, bool channels_first=True) -> (Tensor, int)',
-    'vai::fix_neuron(Tensor input, int valmin, int valmax, float valamp, int zero_point, int method, int device_id, int inplace) -> Tensor'
+    '_caffe2::BBoxTransform(Tensor rois, Tensor deltas, Tensor im_info, float[] weights, bool apply_scale, bool rotated, bool angle_bound_on, int angle_bound_lo, int angle_bound_hi, float clip_angle_thresh, bool legacy_plus_one, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor output_0, Tensor output_1)', # noqa E501
+    '_caffe2::BatchPermutation(Tensor X, Tensor indices, Tensor[]? _caffe2_preallocated_outputs=None) -> Tensor', # noqa E501
+    '_caffe2::BoxWithNMSLimit(Tensor scores, Tensor boxes, Tensor batch_splits, float score_thresh, float nms, int detections_per_im, bool soft_nms_enabled, str soft_nms_method, float soft_nms_sigma, float soft_nms_min_score_thres, bool rotated, bool cls_agnostic_bbox_reg, bool input_boxes_include_bg_cls, bool output_classes_include_bg_cls, bool legacy_plus_one, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor scores, Tensor boxes, Tensor classes, Tensor batch_splits, Tensor keeps, Tensor keeps_size)', # noqa E501
+    '_caffe2::CollectAndDistributeFpnRpnProposals(Tensor[] input_list, int roi_canonical_scale, int roi_canonical_level, int roi_max_level, int roi_min_level, int rpn_max_level, int rpn_min_level, int rpn_post_nms_topN, bool legacy_plus_one, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor rois, Tensor rois_fpn2, Tensor rois_fpn3, Tensor rois_fpn4, Tensor rois_fpn5, Tensor rois_idx_restore_int32)', # noqa E501
+    '_caffe2::CollectRpnProposals(Tensor[] input_list, int rpn_max_level, int rpn_min_level, int rpn_post_nms_topN, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor rois)', # noqa E501
+    '_caffe2::CopyCPUToGPU(Tensor input, Tensor[]? _caffe2_preallocated_outputs=None) -> Tensor', # noqa E501
+    '_caffe2::CopyGPUToCPU(Tensor input, Tensor[]? _caffe2_preallocated_outputs=None) -> Tensor', # noqa E501
+    '_caffe2::DistributeFpnProposals(Tensor rois, int roi_canonical_scale, int roi_canonical_level, int roi_max_level, int roi_min_level, bool legacy_plus_one, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor rois_fpn2, Tensor rois_fpn3, Tensor rois_fpn4, Tensor rois_fpn5, Tensor rois_idx_restore_int32)', # noqa E501
+    '_caffe2::GenerateProposals(Tensor scores, Tensor bbox_deltas, Tensor im_info, Tensor anchors, float spatial_scale, int pre_nms_topN, int post_nms_topN, float nms_thresh, float min_size, bool angle_bound_on, int angle_bound_lo, int angle_bound_hi, float clip_angle_thresh, bool legacy_plus_one, Tensor[]? _caffe2_preallocated_outputs=None) -> (Tensor output_0, Tensor output_1)', # noqa E501
+    '_caffe2::RoIAlign(Tensor features, Tensor rois, str order, float spatial_scale, int pooled_h, int pooled_w, int sampling_ratio, bool aligned, Tensor[]? _caffe2_preallocated_outputs=None) -> Tensor', # noqa E501
+    "aten::_cat.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!)",
+    "aten::_cat(Tensor[] tensors, int dim=0) -> Tensor",
+    "aten::arange.start_out_(Scalar start, Scalar end) -> Tensor",
+    "aten::fft(Tensor self, int signal_ndim, bool normalized=False) -> Tensor",
+    'aten::grid_sampler.legacy(Tensor input, Tensor grid, int interpolation_mode, int padding_mode) -> Tensor', # noqa E501
+    'aten::rand_like.generator(Tensor self, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor', # noqa E501
+    'aten::rand_like.generator_out(Tensor self, *, Generator? generator, MemoryFormat? memory_format=None, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'aten::randn_like.generator(Tensor self, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor', # noqa E501
+    'aten::randn_like.generator_out(Tensor self, *, Generator? generator, MemoryFormat? memory_format=None, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'aten::randint_like.generator(Tensor self, SymInt high, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor', # noqa E501
+    'aten::randint_like.generator_out(Tensor self, SymInt high, *, Generator? generator, MemoryFormat? memory_format=None, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'aten::randint_like.generator_with_low_dtype(Tensor self, SymInt low, SymInt high, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor', # noqa E501
+    'aten::randint_like.generator_with_low_dtype_out(Tensor self, SymInt low, SymInt high, *, Generator? generator, MemoryFormat? memory_format=None, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'detectron2::nms_rotated(Tensor boxes, Tensor scores, float iou_threshold) -> Tensor', # noqa E501
+    'detectron2::roi_align_rotated_forward(Tensor input, Tensor rois, float spatial_scale, int pooled_height, int pooled_width, int sampling_ratio) -> Tensor', # noqa E501
+    'dim_order_ops::_empty_dim_order.out(int[] size, *, int[]? dim_order=None, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'dim_order_ops::_to_dim_order_copy.out(Tensor self, *, bool non_blocking=False, int[]? dim_order=None, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    "executorch_prim::et_view.default(Tensor self, int[] size) -> (Tensor out)",
+    "executorch_prim::add.Scalar(Scalar a, Scalar b) -> Scalar",
+    "executorch_prim::sub.Scalar(Scalar a, Scalar b) -> Scalar",
+    "executorch_prim::mul.Scalar(Scalar a, Scalar b) -> Scalar",
+    "executorch_prim::floordiv.Scalar(Scalar a, Scalar b) -> Scalar",
+    'neuron::_execute_neuron(__torch__.torch.classes.neuron.Model _0, Tensor[] _1) -> Tensor[] _0', # noqa E501
+    "neuron::_from_neuron(Tensor _0) -> Tensor _0",
+    "neuron::_init_neuron() -> ()",
+    'neuron::_load_collectives_neuron(__torch__.torch.classes.neuron.Model _0, int _1, int _2, int _3, int _4) -> ()', # noqa E501
+    "neuron::_load_neuron(__torch__.torch.classes.neuron.Model _0) -> ()",
+    'neuron::_parallel_executor_run(__torch__.torch.classes.neuron.ParallelExecutor _0, Tensor[] _1, int _2) -> Tensor[] _0', # noqa E501
+    "neuron::_parallel_from_neuron(Tensor _0) -> Tensor[] _0",
+    "neuron::_parallel_load(Dict(str, Tensor)[] _0) -> Dict(str, Tensor)[] _0",
+    'neuron::_parallel_profile_start_neuron(__torch__.torch.classes.neuron.ParallelModel _0, str _1, int _2) -> str[] _0', # noqa E501
+    "neuron::_parallel_profile_stop_neuron(str[] _0) -> ()",
+    'neuron::_parallel_run_neuron(__torch__.torch.classes.neuron.ParallelModel _0, __torch__.torch.classes.neuron.ParallelTensorSet _1, __torch__.torch.classes.neuron.ParallelTensorSet _2) -> ()', # noqa E501
+    'neuron::_parallel_slice_neuron(Tensor _0, int _1, int _2, int _3, int _4) -> Tensor _0', # noqa E501
+    "neuron::_parallel_to_neuron(Tensor[] _0) -> Tensor _0",
+    "neuron::_parallel_write_neuron(Tensor _0, Tensor[] _1) -> ()",
+    'neuron::_profile_start_neuron(__torch__.torch.classes.neuron.Model _0, str _1) -> ()', # noqa E501
+    "neuron::_profile_stop_neuron(str _0) -> ()",
+    "neuron::_slice_neuron(Tensor _0, int _1, int _2, int _3, int _4) -> Tensor _0",
+    "neuron::_to_neuron(Tensor _0, int _1) -> Tensor _0",
+    "neuron::create_module_from_graph(str _0, str _1) -> str _0",
+    "neuron::forward_1(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> Tensor _0",
+    'neuron::forward_10(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9)', # noqa E501
+    'neuron::forward_11(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10)', # noqa E501
+    'neuron::forward_12(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11)', # noqa E501
+    'neuron::forward_13(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12)', # noqa E501
+    'neuron::forward_14(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13)', # noqa E501
+    'neuron::forward_15(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14)', # noqa E501
+    'neuron::forward_16(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15)', # noqa E501
+    'neuron::forward_17(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16)', # noqa E501
+    'neuron::forward_18(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17)', # noqa E501
+    'neuron::forward_19(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18)', # noqa E501
+    'neuron::forward_2(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1)', # noqa E501
+    'neuron::forward_20(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19)', # noqa E501
+    'neuron::forward_21(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20)', # noqa E501
+    'neuron::forward_22(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21)', # noqa E501
+    'neuron::forward_23(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22)', # noqa E501
+    'neuron::forward_24(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23)', # noqa E501
+    'neuron::forward_25(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24)', # noqa E501
+    'neuron::forward_26(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25)', # noqa E501
+    'neuron::forward_27(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26)', # noqa E501
+    'neuron::forward_28(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27)', # noqa E501
+    'neuron::forward_29(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28)', # noqa E501
+    'neuron::forward_3(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2)', # noqa E501
+    'neuron::forward_30(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29)', # noqa E501
+    'neuron::forward_31(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30)', # noqa E501
+    'neuron::forward_32(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31)', # noqa E501
+    'neuron::forward_33(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32)', # noqa E501
+    'neuron::forward_34(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33)', # noqa E501
+    'neuron::forward_35(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34)', # noqa E501
+    'neuron::forward_36(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35)', # noqa E501
+    'neuron::forward_37(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36)', # noqa E501
+    'neuron::forward_38(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37)', # noqa E501
+    'neuron::forward_39(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38)', # noqa E501
+    'neuron::forward_4(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3)', # noqa E501
+    'neuron::forward_40(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39)', # noqa E501
+    'neuron::forward_41(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40)', # noqa E501
+    'neuron::forward_42(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41)', # noqa E501
+    'neuron::forward_43(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42)', # noqa E501
+    'neuron::forward_44(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43)', # noqa E501
+    'neuron::forward_45(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44)', # noqa E501
+    'neuron::forward_46(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45)', # noqa E501
+    'neuron::forward_47(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46)', # noqa E501
+    'neuron::forward_48(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47)', # noqa E501
+    'neuron::forward_49(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48)', # noqa E501
+    'neuron::forward_5(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4)', # noqa E501
+    'neuron::forward_50(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49)', # noqa E501
+    'neuron::forward_51(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50)', # noqa E501
+    'neuron::forward_52(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51)', # noqa E501
+    'neuron::forward_53(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52)', # noqa E501
+    'neuron::forward_54(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53)', # noqa E501
+    'neuron::forward_55(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54)', # noqa E501
+    'neuron::forward_56(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55)', # noqa E501
+    'neuron::forward_57(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56)', # noqa E501
+    'neuron::forward_58(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57)', # noqa E501
+    'neuron::forward_59(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58)', # noqa E501
+    'neuron::forward_6(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5)', # noqa E501
+    'neuron::forward_60(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59)', # noqa E501
+    'neuron::forward_61(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60)', # noqa E501
+    'neuron::forward_62(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61)', # noqa E501
+    'neuron::forward_63(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61, Tensor _62)', # noqa E501
+    'neuron::forward_64(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61, Tensor _62, Tensor _63)', # noqa E501
+    'neuron::forward_7(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6)', # noqa E501
+    'neuron::forward_8(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7)', # noqa E501
+    'neuron::forward_9(Tensor[] _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8)', # noqa E501
+    'neuron::forward_v2(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> Tensor[] _0', # noqa E501
+    'neuron::forward_v2_1(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> Tensor _0', # noqa E501
+    'neuron::forward_v2_10(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9)', # noqa E501
+    'neuron::forward_v2_11(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10)', # noqa E501
+    'neuron::forward_v2_12(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11)', # noqa E501
+    'neuron::forward_v2_13(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12)', # noqa E501
+    'neuron::forward_v2_14(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13)', # noqa E501
+    'neuron::forward_v2_15(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14)', # noqa E501
+    'neuron::forward_v2_16(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15)', # noqa E501
+    'neuron::forward_v2_17(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16)', # noqa E501
+    'neuron::forward_v2_18(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17)', # noqa E501
+    'neuron::forward_v2_19(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18)', # noqa E501
+    'neuron::forward_v2_2(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1)', # noqa E501
+    'neuron::forward_v2_20(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19)', # noqa E501
+    'neuron::forward_v2_21(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20)', # noqa E501
+    'neuron::forward_v2_22(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21)', # noqa E501
+    'neuron::forward_v2_23(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22)', # noqa E501
+    'neuron::forward_v2_24(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23)', # noqa E501
+    'neuron::forward_v2_25(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24)', # noqa E501
+    'neuron::forward_v2_26(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25)', # noqa E501
+    'neuron::forward_v2_27(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26)', # noqa E501
+    'neuron::forward_v2_28(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27)', # noqa E501
+    'neuron::forward_v2_29(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28)', # noqa E501
+    'neuron::forward_v2_3(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2)', # noqa E501
+    'neuron::forward_v2_30(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29)', # noqa E501
+    'neuron::forward_v2_31(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30)', # noqa E501
+    'neuron::forward_v2_32(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31)', # noqa E501
+    'neuron::forward_v2_33(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32)', # noqa E501
+    'neuron::forward_v2_35(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34)', # noqa E501
+    'neuron::forward_v2_36(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35)', # noqa E501
+    'neuron::forward_v2_37(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36)', # noqa E501
+    'neuron::forward_v2_38(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37)', # noqa E501
+    'neuron::forward_v2_39(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38)', # noqa E501
+    'neuron::forward_v2_4(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3)', # noqa E501
+    'neuron::forward_v2_40(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39)', # noqa E501
+    'neuron::forward_v2_41(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40)', # noqa E501
+    'neuron::forward_v2_42(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41)', # noqa E501
+    'neuron::forward_v2_43(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42)', # noqa E501
+    'neuron::forward_v2_44(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43)', # noqa E501
+    'neuron::forward_v2_45(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44)', # noqa E501
+    'neuron::forward_v2_46(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45)', # noqa E501
+    'neuron::forward_v2_47(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46)', # noqa E501
+    'neuron::forward_v2_48(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47)', # noqa E501
+    'neuron::forward_v2_49(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48)', # noqa E501
+    'neuron::forward_v2_5(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4)', # noqa E501
+    'neuron::forward_v2_50(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49)', # noqa E501
+    'neuron::forward_v2_51(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50)', # noqa E501
+    'neuron::forward_v2_52(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51)', # noqa E501
+    'neuron::forward_v2_53(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52)', # noqa E501
+    'neuron::forward_v2_54(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53)', # noqa E501
+    'neuron::forward_v2_55(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54)', # noqa E501
+    'neuron::forward_v2_56(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55)', # noqa E501
+    'neuron::forward_v2_57(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56)', # noqa E501
+    'neuron::forward_v2_58(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57)', # noqa E501
+    'neuron::forward_v2_59(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58)', # noqa E501
+    'neuron::forward_v2_6(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5)', # noqa E501
+    'neuron::forward_v2_60(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59)', # noqa E501
+    'neuron::forward_v2_61(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60)', # noqa E501
+    'neuron::forward_v2_62(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61)', # noqa E501
+    'neuron::forward_v2_63(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61, Tensor _62)', # noqa E501
+    'neuron::forward_v2_64(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8, Tensor _9, Tensor _10, Tensor _11, Tensor _12, Tensor _13, Tensor _14, Tensor _15, Tensor _16, Tensor _17, Tensor _18, Tensor _19, Tensor _20, Tensor _21, Tensor _22, Tensor _23, Tensor _24, Tensor _25, Tensor _26, Tensor _27, Tensor _28, Tensor _29, Tensor _30, Tensor _31, Tensor _32, Tensor _33, Tensor _34, Tensor _35, Tensor _36, Tensor _37, Tensor _38, Tensor _39, Tensor _40, Tensor _41, Tensor _42, Tensor _43, Tensor _44, Tensor _45, Tensor _46, Tensor _47, Tensor _48, Tensor _49, Tensor _50, Tensor _51, Tensor _52, Tensor _53, Tensor _54, Tensor _55, Tensor _56, Tensor _57, Tensor _58, Tensor _59, Tensor _60, Tensor _61, Tensor _62, Tensor _63)', # noqa E501
+    'neuron::forward_v2_7(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6)', # noqa E501
+    'neuron::forward_v2_8(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7)', # noqa E501
+    'neuron::forward_v2_9(Tensor[] _0, __torch__.torch.classes.neuron.Model _1) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5, Tensor _6, Tensor _7, Tensor _8)', # noqa E501
+    'neuron::rnn(Tensor _0, Tensor[] _1, __torch__.torch.classes.neuron.RnnBinding _2, int _3) -> (Tensor _0, Tensor[] _1)', # noqa E501
+    'neuron::rnn_v2(Tensor _0, Tensor _1, Tensor _2, int _3, __torch__.torch.classes.neuron.RnnBinding_v2[] _4) -> (Tensor _0, Tensor _1, Tensor _2)', # noqa E501
+    'horizon::scale_quanti(Tensor x, Tensor scale, Tensor zero_point, int d, int min, int max, bool flag1, bool flat2, str str1, str str2) -> Tensor', # noqa E501
+    "prim::isinstance(Any to_check) -> bool",
+    "prim::shape(Tensor self) -> int[]",
+    'llama::custom_sdpa.out(Tensor query, Tensor key, Tensor value, SymInt start_pos, Tensor? attn_mask=None, float drpout_p=0.0, bool is_causal=False, float? scale=None, *, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'llama::custom_sdpa(Tensor query, Tensor key, Tensor value, SymInt start_pos, Tensor? attn_mask=None, float drpout_p=0.0, bool is_causal=False, float? scale=None) -> Tensor', # noqa E501
+    'llama::fast_hadamard_transform.out(Tensor mat, *, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'llama::sdpa_with_kv_cache.out(Tensor query, Tensor key, Tensor value, Tensor(a!) key_cache, Tensor(b!) value_cache, SymInt start_pos, SymInt seq_len, Tensor? attn_mask=None, float drpout_p=0.0, bool is_causal=False, float? scale=None, *, Tensor(c!) out) -> Tensor(c!)', # noqa E501
+    'llama::sdpa_with_kv_cache(Tensor query, Tensor key, Tensor value, Tensor(a!) key_cache, Tensor(b!) value_cache, SymInt start_pos, SymInt seq_len, Tensor? attn_mask=None, float drpout_p=0.0, bool is_causal=False, float? scale=None) -> Tensor', # noqa E501
+    'llama::sdpa.out(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, float drpout_p=0.0, bool is_causal=False, float? scale=None, *, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'llama::update_cache.out(Tensor value, Tensor(a!) cache, SymInt start_pos, *, Tensor(b!) out) -> Tensor(b!)', # noqa E501
+    "llama::update_cache(Tensor value, Tensor(a!) cache, SymInt start_pos) -> Tensor",
+    'quantized_decomposed::quantize_per_tensor.out(Tensor input, float scale, int zero_point, int quant_min, int quant_max, ScalarType dtype, *, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'quantized_decomposed::dequantize_per_tensor.out(Tensor input, float scale, int zero_point, int quant_min, int quant_max, ScalarType dtype, *, ScalarType? out_dtype=None, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'quantized_decomposed::dequantize_per_tensor.Tensor_out(Tensor input, Tensor scale, Tensor zero_point, int quant_min, int quant_max, ScalarType dtype, *, ScalarType? out_dtype=None, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'quantized_decomposed::choose_qparams.tensor(Tensor input, int quant_min, int quant_max, float eps, ScalarType dtype) -> (Tensor, Tensor)', # noqa E501
+    'quantized_decomposed::embedding_4bit(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices) -> Tensor', # noqa E501
+    'quantized_decomposed::embedding_4bit.dtype(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, ScalarType? dtype=None) -> Tensor', # noqa E501
+    'quantized_decomposed::embedding_4bit.out(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'quantized_decomposed::embedding_4bit.dtype_out(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'quantized_decomposed::dequantize_per_tensor(Tensor input, float scale, int zero_point, int quant_min, int quant_max, ScalarType dtype, *, ScalarType? out_dtype=None) -> Tensor', # noqa E501
+    'quantized_decomposed::dequantize_per_tensor.tensor(Tensor input, Tensor scale, Tensor zero_point, int quant_min, int quant_max, ScalarType dtype, *, ScalarType? out_dtype=None) -> Tensor', # noqa E501
+    'quantized_decomposed::dequantize_per_tensor.tensor2(Tensor input, Tensor scale, Tensor zero_point, Tensor quant_min, Tensor quant_max, ScalarType dtype, *, ScalarType? out_dtype=None) -> Tensor', # noqa E501
+    'quantized_decomposed::add(Tensor a, float a_scale, int a_zero_point, int a_quant_min, int a_quant_max, Tensor b, float b_scale, int b_zero_point, int b_quant_min, int b_quant_max, float out_scale, int out_zero_point, int out_quant_min, int out_quant_max) -> Tensor qc', # noqa E501
+    'quantized_decomposed::add.scalar(Tensor qa, float a_scale, int a_zero_point, int a_quant_min, int a_quant_max, ScalarType a_dtype, Scalar b, float out_scale, int out_zero_point, int out_quant_min, int out_quant_max, ScalarType out_dtype) -> Tensor', # noqa E501
+    'quantized_decomposed::add_relu(Tensor a, float a_scale, int a_zero_point, int a_quant_min, int a_quant_max, Tensor b, float b_scale, int b_zero_point, int b_quant_min, int b_quant_max, float out_scale, int out_zero_point, int out_quant_min, int out_quant_max) -> Tensor qc', # noqa E501
+    'quantized_decomposed::dequantize_per_channel(Tensor input, Tensor scales, Tensor? zero_points, int axis, int quant_min, int quant_max, ScalarType dtype, *, ScalarType? out_dtype=None) -> Tensor', # noqa E501
+    'quantized_decomposed::fake_quant_per_channel(Tensor input, Tensor scales, Tensor zero_points, int axis, int quant_min, int quant_max) -> Tensor', # noqa E501
+    'quantized_decomposed::quantize_per_channel(Tensor input, Tensor scales, Tensor zero_points, int axis, int quant_min, int quant_max, ScalarType dtype) -> Tensor', # noqa E501
+    'quantized_decomposed::choose_qparams_symmetric.tensor(Tensor input, int quant_min, int quant_max, float eps, ScalarType dtype) -> (Tensor, Tensor)', # noqa E501
+    'quantized_decomposed::mixed_linear(Tensor input, Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, ScalarType? dtype=None) -> Tensor', # noqa E501
+    'quantized_decomposed::dequantize_per_token(Tensor input, Tensor scales, Tensor zero_points, int quant_min, int quant_max, ScalarType dtype, ScalarType output_dtype) -> Tensor', # noqa E501
+    'quantized_decomposed::quantize_per_tensor(Tensor input, float scale, int zero_point, int quant_min, int quant_max, ScalarType dtype) -> Tensor', # noqa E501
+    'quantized_decomposed::quantize_per_tensor.tensor(Tensor input, Tensor scale, Tensor zero_point, int quant_min, int quant_max, ScalarType dtype) -> Tensor', # noqa E501
+    'quantized_decomposed::quantize_per_tensor.tensor2(Tensor input, Tensor scale, Tensor zero_point, Tensor quant_min, Tensor quant_max, ScalarType dtype) -> Tensor', # noqa E501
+    'quantized_decomposed::choose_qparams_per_token_asymmetric(Tensor input, ScalarType dtype) -> (Tensor, Tensor)', # noqa E501
+    'quantized_decomposed::choose_qparams_per_token(Tensor input, ScalarType dtype) -> (Tensor, Tensor)', # noqa E501
+    'quantized_decomposed::quantize_per_channel_group(Tensor input, Tensor scales, Tensor zero_points, int quant_min, int quant_max, ScalarType dtype, int group_size) -> Tensor', # noqa E501
+    'quantized_decomposed::dequantize_per_channel_group(Tensor input, Tensor scales, Tensor? zero_points, int quant_min, int quant_max, ScalarType dtype, int group_size, ScalarType output_dtype) -> Tensor', # noqa E501
+    'quantized_decomposed::embedding_byte(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices) -> Tensor', # noqa E501
+    'quantized_decomposed::embedding_byte.dtype(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, ScalarType? dtype=None) -> Tensor', # noqa E501
+    'quantized_decomposed::embedding_byte.out(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'quantized_decomposed::embedding_byte.dtype_out(Tensor weight, Tensor weight_scales, Tensor? weight_zero_points, int weight_quant_min, int weight_quant_max, Tensor indices, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)', # noqa E501
+    'quantized_decomposed::mixed_mm(Tensor input, Tensor weight, Tensor weight_scales, Tensor? weight_zero_points) -> Tensor', # noqa E501
+    'quantized_decomposed::_choose_qparams_per_token_asymmetric_impl(Tensor input, ScalarType dtype) -> (Tensor, Tensor)', # noqa E501
+    'quantized_decomposed::quantize_per_token(Tensor input, Tensor scales, Tensor zero_points, int quant_min, int quant_max, ScalarType dtype) -> Tensor', # noqa E501
+    'tensorrt::execute_engine(Tensor[] inputs, __torch__.torch.classes.tensorrt.Engine engine) -> Tensor[]', # noqa E501
+    'torch_sparse::hgt_sample(Dict(str, Tensor) _0, Dict(str, Tensor) _1, Dict(str, Tensor) _2, Dict(str, int[]) _3, int _4) -> (Dict(str, Tensor) _0, Dict(str, Tensor) _1, Dict(str, Tensor) _2, Dict(str, Tensor) _3)', # noqa E501
+    "torch_sparse::cuda_version() -> int _0",
+    "torch_sparse::random_walk(Tensor _0, Tensor _1, Tensor _2, int _3) -> Tensor _0",
+    'torch_scatter::segment_min_csr(Tensor _0, Tensor _1, Tensor? _2) -> (Tensor _0, Tensor _1)', # noqa E501
+    'torch_sparse::partition2(Tensor _0, Tensor _1, Tensor? _2, Tensor? _3, int _4, bool _5) -> Tensor _0', # noqa E501
+    'torch_sparse::ego_k_hop_sample_adj(Tensor _0, Tensor _1, Tensor _2, int _3, int _4, bool _5) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3, Tensor _4, Tensor _5)', # noqa E501
+    "torch_scatter::segment_sum_csr(Tensor _0, Tensor _1, Tensor? _2) -> Tensor _0",
+    'torch_sparse::sample_adj(Tensor _0, Tensor _1, Tensor _2, int _3, bool _4) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3)', # noqa E501
+    'torch_scatter::segment_max_coo(Tensor _0, Tensor _1, Tensor? _2, int? _3) -> (Tensor _0, Tensor _1)', # noqa E501
+    "torch_scatter::gather_coo(Tensor _0, Tensor _1, Tensor? _2) -> Tensor _0",
+    'torch_sparse::neighbor_sample(Tensor _0, Tensor _1, Tensor _2, int[] _3, bool _4, bool _5) -> (Tensor _0, Tensor _1, Tensor _2, Tensor _3)', # noqa E501
+    'torch_sparse::hetero_temporal_neighbor_sample(str[] _0, (str, str, str)[] _1, Dict(str, Tensor) _2, Dict(str, Tensor) _3, Dict(str, Tensor) _4, Dict(str, int[]) _5, Dict(str, Tensor) _6, int _7, bool _8, bool _9) -> (Dict(str, Tensor) _0, Dict(str, Tensor) _1, Dict(str, Tensor) _2, Dict(str, Tensor) _3)', # noqa E501
+    'torch_sparse::partition(Tensor _0, Tensor _1, Tensor? _2, int _3, bool _4) -> Tensor _0', # noqa E501
+    'torch_scatter::segment_min_coo(Tensor _0, Tensor _1, Tensor? _2, int? _3) -> (Tensor _0, Tensor _1)', # noqa E501
+    'torch_sparse::hetero_neighbor_sample(str[] _0, (str, str, str)[] _1, Dict(str, Tensor) _2, Dict(str, Tensor) _3, Dict(str, Tensor) _4, Dict(str, int[]) _5, int _6, bool _7, bool _8) -> (Dict(str, Tensor) _0, Dict(str, Tensor) _1, Dict(str, Tensor) _2, Dict(str, Tensor) _3)', # noqa E501
+    'torch_sparse::spmm_mean(Tensor? _0, Tensor _1, Tensor _2, Tensor? _3, Tensor? _4, Tensor? _5, Tensor? _6, Tensor _7) -> Tensor _0', # noqa E501
+    'torch_sparse::spmm_max(Tensor _0, Tensor _1, Tensor? _2, Tensor _3) -> (Tensor _0, Tensor _1)', # noqa E501
+    "torch_sparse::relabel(Tensor _0, Tensor _1) -> (Tensor _0, Tensor _1)",
+    'torch_sparse::relabel_one_hop(Tensor _0, Tensor _1, Tensor? _2, Tensor _3, bool _4) -> (Tensor _0, Tensor _1, Tensor? _2, Tensor _3)', # noqa E501
+    'torch_scatter::scatter_mul(Tensor _0, Tensor _1, int _2, Tensor? _3, int? _4) -> Tensor _0', # noqa E501
+    "torch_sparse::ind2ptr(Tensor _0, int _1) -> Tensor _0",
+    "torch_scatter::cuda_version() -> int _0",
+    'torch_sparse::spmm_sum(Tensor? _0, Tensor _1, Tensor _2, Tensor? _3, Tensor? _4, Tensor? _5, Tensor _6) -> Tensor _0', # noqa E501
+    "torch_sparse::ptr2ind(Tensor _0, int _1) -> Tensor _0",
+    "torch_scatter::segment_mean_csr(Tensor _0, Tensor _1, Tensor? _2) -> Tensor _0",
+    'torch_sparse::spmm_min(Tensor _0, Tensor _1, Tensor? _2, Tensor _3) -> (Tensor _0, Tensor _1)', # noqa E501
+    'torch_scatter::segment_sum_coo(Tensor _0, Tensor _1, Tensor? _2, int? _3) -> Tensor _0', # noqa E501
+    'torch_scatter::scatter_mean(Tensor _0, Tensor _1, int _2, Tensor? _3, int? _4) -> Tensor _0', # noqa E501
+    'torch_scatter::scatter_max(Tensor _0, Tensor _1, int _2, Tensor? _3, int? _4) -> (Tensor _0, Tensor _1)', # noqa E501
+    'torch_scatter::segment_max_csr(Tensor _0, Tensor _1, Tensor? _2) -> (Tensor _0, Tensor _1)', # noqa E501
+    "torch_scatter::gather_csr(Tensor _0, Tensor _1, Tensor? _2) -> Tensor _0",
+    'torch_scatter::segment_mean_coo(Tensor _0, Tensor _1, Tensor? _2, int? _3) -> Tensor _0', # noqa E501
+    'torch_scatter::scatter_min(Tensor _0, Tensor _1, int _2, Tensor? _3, int? _4) -> (Tensor _0, Tensor _1)', # noqa E501
+    'torch_sparse::mt_partition(Tensor _0, Tensor _1, Tensor? _2, Tensor? _3, int _4, bool _5, int _6) -> Tensor _0', # noqa E501
+    'torch_sparse::saint_subgraph(Tensor _0, Tensor _1, Tensor _2, Tensor _3) -> (Tensor _0, Tensor _1, Tensor _2)', # noqa E501
+    'torch_scatter::scatter_sum(Tensor _0, Tensor _1, int _2, Tensor? _3, int? _4) -> Tensor _0', # noqa E501
+    'torch_sparse::non_diag_mask(Tensor _0, Tensor _1, int _2, int _3, int _4) -> Tensor _0', # noqa E501
+    'torchaudio::sox_effects_apply_effects_tensor(Tensor tensor, int sample_rate, str[][] effects, bool channels_first=True) -> (Tensor, int)', # noqa E501
+    'vai::fix_neuron(Tensor input, int valmin, int valmax, float valamp, int zero_point, int method, int device_id, int inplace) -> Tensor' # noqa E501
 ]
 
+
 def _identifier(schema):
-    return schema.split('(', 1)[0].strip()
+    return schema.split("(", 1)[0].strip()
 
 def _all_schemas():
-    torch = __import__('torch')
-    __import__('torchvision')
-    __import__('torchaudio')
+    torch = __import__("torch")
+    __import__("torchvision")
+    __import__("torchaudio")
     return list(torch._C._jit_get_all_schemas())
 
 def _parse_schemas():
     schemas = {}
     for schema in _all_schemas():
         definition = str(schema)
-        definition = definition.replace('(b|a)', '(a|b)')
+        definition = definition.replace("(b|a)", "(a|b)")
         key = _identifier(definition)
         schemas[key] = definition
     for schema in known_legacy_schema_definitions:
@@ -330,18 +332,18 @@ def _parse_schemas():
         if key not in schemas:
             schemas[key] = schema
         else:
-            print(f'-> {key}')
+            print(f"-> {key}")
     return schemas
 
 def _filter_schemas(schemas, types):
-    names = set(map(lambda _: _.split('.')[0], types.keys()))
+    names = set(map(lambda _: _.split(".")[0], types.keys()))
     for key in known_legacy_schema_definitions:
-        names.add(re.sub(r'[\.(].*$', '', key))
+        names.add(re.sub(r"[\.(].*$", "", key))
     filtered_schemas = set()
     for schema in schemas.values():
         for name in names:
             key = _identifier(schema)
-            if key == name or key.startswith(name + '.'):
+            if key == name or key.startswith(name + "."):
                 filtered_schemas.add(key)
     return dict(filter(lambda _: _[0] in filtered_schemas, schemas.items()))
 
@@ -352,10 +354,10 @@ def _check_types(types, schemas):
         if key in types:
             types.pop(key)
     for key in list(types.keys()):
-        if key.startswith('torch.nn') or key.startswith('__torch__.'):
+        if key.startswith("torch.nn") or key.startswith("__torch__."):
             types.pop(key)
     if len(types) > 0:
-        raise Exception('\n'.join(list(types.keys())))
+        raise Exception("\n".join(list(types.keys())))
 
 def _sort_types(types):
     keys = {}
@@ -363,25 +365,25 @@ def _sort_types(types):
     for schema in _all_schemas():
         definition = str(schema)
         key = _identifier(definition)
-        split = key.split('.')
-        keys[key] = f'{split[0]}.{index}'
+        split = key.split(".")
+        keys[key] = f"{split[0]}.{index}"
         index += 1
     classes = collections.OrderedDict()
     for item in types:
-        name = item['name']
-        if name.find('::') == -1:
+        name = item["name"]
+        if name.find("::") == -1:
             classes[name] = item
         else:
             key = _identifier(name)
-            split = key.split('.')
+            split = key.split(".")
             if key not in keys:
-                keys[key] = f'{split[0]}.{index}'
+                keys[key] = f"{split[0]}.{index}"
                 index += 1
     for key, _ in classes.items():
-        keys[key] = f'{index}'
+        keys[key] = f"{index}"
         index += 1
     def custom_key(x):
-        key = _identifier(x['name'])
+        key = _identifier(x["name"])
         return keys[key]
     types = sorted(types, key=custom_key)
 
@@ -396,14 +398,14 @@ def _metadata():
     for schema in filtered_schemas.values():
         key = _identifier(schema)
         if key in types:
-            types[key]['name'] = schema
+            types[key]["name"] = schema
         else:
-            types[key] = { 'name': schema }
+            types[key] = { "name": schema }
     types = _sort_types(list(types.values()))
     _write_metadata(types)
 
 def main():
     _metadata()
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     main()

+ 55 - 53
tools/sklearn_script.py

@@ -1,4 +1,4 @@
-''' scikit-learn metadata script '''
+""" scikit-learn metadata script """
 
 import json
 import os
@@ -9,15 +9,15 @@ import sys
 
 def _split_docstring(value):
     headers = {}
-    current_header = ''
+    current_header = ""
     current_lines = []
-    lines = value.split('\n')
+    lines = value.split("\n")
     index = 0
     while index < len(lines):
-        if index + 1 < len(lines) and len(lines[index + 1].strip(' ')) > 0 and \
-            len(lines[index + 1].strip(' ').strip('-')) == 0:
+        if index + 1 < len(lines) and len(lines[index + 1].strip(" ")) > 0 and \
+            len(lines[index + 1].strip(" ").strip("-")) == 0:
             headers[current_header] = current_lines
-            current_header = lines[index].strip(' ')
+            current_header = lines[index].strip(" ")
             current_lines = []
             index = index + 1
         else:
@@ -27,104 +27,106 @@ def _split_docstring(value):
     return headers
 
 def _update_description(schema, lines):
-    if len(''.join(lines).strip(' ')) > 0:
+    if len("".join(lines).strip(" ")) > 0:
         for i, value in enumerate(lines):
-            lines[i] = value.lstrip(' ')
-        schema['description'] = '\n'.join(lines)
+            lines[i] = value.lstrip(" ")
+        schema["description"] = "\n".join(lines)
 
 def _attribute_value(attribute_type, attribute_value):
-    if attribute_value in ('None', 'np.finfo(float).eps'):
+    if attribute_value in ("None", "np.finfo(float).eps"):
         return None
-    if attribute_type in ('float32', 'int32', 'boolean', 'string'):
-        if attribute_value in ("'auto'", '"auto"') or attribute_type == 'string':
+    if attribute_type in ("float32", "int32", "boolean", "string"):
+        if attribute_value in ("'auto'", '"auto"') or attribute_type == "string":
             return attribute_value.strip("'").strip('"')
-    if attribute_type == 'float32':
+    if attribute_type == "float32":
         return float(attribute_value)
-    if attribute_type == 'int32':
+    if attribute_type == "int32":
         return int(attribute_value)
-    if attribute_type == 'boolean':
-        if attribute_value in ('True', 'False'):
-            return attribute_value == 'True'
-        raise ValueError("Unknown boolean default value '" + str(attribute_value) + "'.")
+    if attribute_type == "boolean":
+        if attribute_value in ("True", "False"):
+            return attribute_value == "True"
+        raise ValueError(f"Unknown boolean default value '{str(attribute_value)}'.")
     if attribute_type:
         raise ValueError("Unknown default type '" + attribute_type + "'.")
     return attribute_value.strip("'")
 
 def _find_attribute(schema, name):
-    schema.setdefault('attributes', [])
-    attribute = next((_ for _ in schema['attributes'] if _['name'] == name), None)
+    schema.setdefault("attributes", [])
+    attribute = next((_ for _ in schema["attributes"] if _["name"] == name), None)
     if not attribute:
-        attribute = { 'name': name }
-        schema['attributes'].append(attribute)
+        attribute = { "name": name }
+        schema["attributes"].append(attribute)
     return attribute
 
 def _update_attributes(schema, lines):
-    doc_indent = '    ' if sys.version_info[:2] >= (3, 13) else '        '
+    doc_indent = "    " if sys.version_info[:2] >= (3, 13) else "        "
     while len(lines) > 0:
         line = lines.pop(0)
-        match = re.match(r'\s*(\w*)\s*:\s*(.*)\s*', line)
+        match = re.match(r"\s*(\w*)\s*:\s*(.*)\s*", line)
         if not match:
             raise SyntaxError("Expected ':' in parameter.")
         name = match.group(1)
         line = match.group(2)
         attribute = _find_attribute(schema, name)
-        match = re.match(r'(.*),\s*default=(.*)\s*', line)
+        match = re.match(r"(.*),\s*default=(.*)\s*", line)
         default_value = None
         if match:
             line = match.group(1)
             default_value = match.group(2)
         attribute_types = {
-            'float': 'float32',
-            'boolean': 'boolean',
-            'bool': 'boolean',
-            'str': 'string',
-            'string': 'string',
-            'int': 'int32',
-            'integer': 'int32'
+            "float": "float32",
+            "boolean": "boolean",
+            "bool": "boolean",
+            "str": "string",
+            "string": "string",
+            "int": "int32",
+            "integer": "int32"
         }
         attribute_type = attribute_types.get(line, None)
         if default_value:
-            attribute['default'] = _attribute_value(attribute_type, default_value)
+            attribute["default"] = _attribute_value(attribute_type, default_value)
         description = []
-        while len(lines) > 0 and (len(lines[0].strip(' ')) == 0 or lines[0].startswith(doc_indent)):
-            line = lines.pop(0).lstrip(' ')
+        while len(lines) > 0:
+            if lines[0].strip() != "" and not lines[0].startswith(doc_indent):
+                break
+            line = lines.pop(0).lstrip(" ")
             description.append(line)
-        attribute['description'] = '\n'.join(description)
+        attribute["description"] = "\n".join(description)
 
 def _metadata():
     root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
-    json_file = os.path.join(root_dir, 'source', 'sklearn-metadata.json')
-    with open(json_file, encoding='utf-8') as file:
+    json_file = os.path.join(root_dir, "source", "sklearn-metadata.json")
+    with open(json_file, encoding="utf-8") as file:
         json_root = json.loads(file.read())
 
     for schema in json_root:
-        name = schema['name']
+        name = schema["name"]
         skip_modules = [
-            'lightgbm.',
-            'sklearn.svm.classes',
-            'sklearn.ensemble.forest.',
-            'sklearn.ensemble.weight_boosting.',
-            'sklearn.neural_network.multilayer_perceptron.',
-            'sklearn.tree.tree.'
+            "lightgbm.",
+            "sklearn.svm.classes",
+            "sklearn.ensemble.forest.",
+            "sklearn.ensemble.weight_boosting.",
+            "sklearn.neural_network.multilayer_perceptron.",
+            "sklearn.tree.tree."
         ]
         if not any(name.startswith(module) for module in skip_modules):
             class_definition = pydoc.locate(name)
             if not class_definition:
-                raise KeyError('\'' + name + '\' not found.')
+                raise KeyError("'" + name + "' not found.")
             docstring = class_definition.__doc__
             if not docstring:
-                raise Exception('\'' + name + '\' missing __doc__.')
+                raise Exception("'" + name + "' missing __doc__.")
             headers = _split_docstring(docstring)
-            if '' in headers:
-                _update_description(schema, headers[''])
-            if 'Parameters' in headers:
-                _update_attributes(schema, headers['Parameters'])
+            if "" in headers:
+                _update_description(schema, headers[""])
+            if "Parameters" in headers:
+                _update_attributes(schema, headers["Parameters"])
 
-    with open(json_file, 'w', encoding='utf-8') as file:
+    with open(json_file, "w", encoding="utf-8") as file:
         file.write(json.dumps(json_root, sort_keys=False, indent=2))
 
 def main():
     _metadata()
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     main()

+ 148 - 147
tools/tf_script.py

@@ -1,4 +1,4 @@
-''' TensorFlow Metadata Script '''
+""" TensorFlow Metadata Script """
 
 import json
 import logging
@@ -8,8 +8,8 @@ import sys
 
 import google.protobuf
 
-logging.getLogger('tensorflow').setLevel(logging.ERROR)
-os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
+logging.getLogger("tensorflow").setLevel(logging.ERROR)
+os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
 
 dup_stderr = os.dup(sys.stderr.fileno())
 null = os.open(os.devnull, os.O_WRONLY)
@@ -26,91 +26,91 @@ os.dup2(dup_stderr, sys.stderr.fileno())
 os.close(dup_stderr)
 
 def _read(path):
-    with open(path, encoding='utf-8') as file:
+    with open(path, encoding="utf-8") as file:
         return file.read()
 
 def _write(path, content):
-    with open(path, 'w', encoding='utf-8') as file:
+    with open(path, "w", encoding="utf-8") as file:
         file.write(content)
 
 def _find_multiline(line, colon):
     if colon == -1:
         return None
     line = line[colon+1:]
-    while line.startswith(' '):
+    while line.startswith(" "):
         line = line[1:]
-    if line.startswith('<<'):
+    if line.startswith("<<"):
         line = line[2:]
         return line
     return None
 
 def _str_escape(text):
-    result = ''
+    result = ""
     for value in text:
-        if value == '\n':
-            result += '\\n'
-        elif value == '\r':
+        if value == "\n":
+            result += "\\n"
+        elif value == "\r":
             result += "\\r"
-        elif value == '\t':
+        elif value == "\t":
             result += "\\t"
-        elif value == '\"':
-            result += "\\\""
-        elif value == '\'':
+        elif value == '"':
+            result += '\\"'
+        elif value == "'":
             result += "\\'"
-        elif value == '\\':
+        elif value == "\\":
             result += "\\\\"
         else:
             result += value
     return result
 
 def _pbtxt_from_multiline(multiline_pbtxt):
-    pbtxt = ''
+    pbtxt = ""
     while len(multiline_pbtxt) > 0:
-        index = multiline_pbtxt.find('\n')
+        index = multiline_pbtxt.find("\n")
         if index == -1:
             pbtxt = pbtxt + multiline_pbtxt
-            multiline_pbtxt = ''
+            multiline_pbtxt = ""
             break
         line = multiline_pbtxt[0:index]
         multiline_pbtxt = multiline_pbtxt[index+1:]
-        colon = line.find(':')
+        colon = line.find(":")
         end = _find_multiline(line, colon)
         if end is None:
-            pbtxt = pbtxt + line + '\n'
+            pbtxt = pbtxt + line + "\n"
             continue
         pbtxt = pbtxt + line[0:colon+1]
-        unescaped = ''
+        unescaped = ""
         newline = False
-        line = ''
+        line = ""
         while len(multiline_pbtxt) > 0:
-            index = multiline_pbtxt.find('\n')
+            index = multiline_pbtxt.find("\n")
             line = multiline_pbtxt[0:index]
             multiline_pbtxt = multiline_pbtxt[index+1:]
             if line.startswith(end):
                 line = line[len(end):]
                 break
             if newline:
-                unescaped = unescaped + '\n'
+                unescaped = unescaped + "\n"
             newline = True
             unescaped = unescaped + line
-            line = ''
-        pbtxt = pbtxt + '\"' + _str_escape(unescaped) + '\"' + line + '\n'
+            line = ""
+        pbtxt = pbtxt + '"' + _str_escape(unescaped) + '"' + line + "\n"
     return pbtxt
 
 def _read_op_list(file):
     op_list = op_def_pb2.OpList()
     content = _read(file)
-    content = re.sub(r'^go/[a-z]+\s*', '', content)
+    content = re.sub(r"^go/[a-z]+\s*", "", content)
     google.protobuf.text_format.Merge(content, op_list)
     return op_list
 
 def _read_api_def_map(folder):
     api_def_map = {}
     for filename in sorted(os.listdir(folder)):
-        if filename.endswith('.pbtxt'):
+        if filename.endswith(".pbtxt"):
             api_defs = api_def_pb2.ApiDefs()
-            filename = folder + '/' + filename
-            with open(filename, encoding='utf-8') as file:
+            filename = folder + "/" + filename
+            with open(filename, encoding="utf-8") as file:
                 multiline_pbtxt = file.read()
                 pbtxt = _pbtxt_from_multiline(multiline_pbtxt)
                 google.protobuf.text_format.Merge(pbtxt, api_defs)
@@ -119,30 +119,30 @@ def _read_api_def_map(folder):
     return api_def_map
 
 def _convert_type(value):
-    return { 'type': 'type', 'value': value }
+    return { "type": "type", "value": value }
 
 def _convert_tensor(tensor):
-    return { 'type': 'tensor', 'value': '?' }
+    return { "type": "tensor", "value": "?" }
 
 def _convert_shape(shape):
-    return { 'type': 'shape', 'value': '?' }
+    return { "type": "shape", "value": "?" }
 
 def _convert_number(number):
-    if number == float('inf'):
-        return 'NaN'
-    if number == float('-inf'):
-        return '-NaN'
+    if number == float("inf"):
+        return "NaN"
+    if number == float("-inf"):
+        return "-NaN"
     return number
 
 attr_type_table = {
-    'type': 'type', 'list(type)': 'type[]',
-    'bool': 'boolean',
-    'int': 'int64', 'list(int)': 'int64[]',
-    'float': 'float32', 'list(float)': 'float32[]',
-    'string': 'string', 'list(string)': 'string[]',
-    'shape': 'shape', 'list(shape)': 'shape[]',
-    'tensor': 'tensor',
-    'func': 'function', 'list(func)': 'function[]'
+    "type": "type", "list(type)": "type[]",
+    "bool": "boolean",
+    "int": "int64", "list(int)": "int64[]",
+    "float": "float32", "list(float)": "float32[]",
+    "string": "string", "list(string)": "string[]",
+    "shape": "shape", "list(shape)": "shape[]",
+    "tensor": "tensor",
+    "func": "function", "list(func)": "function[]"
 }
 
 def _convert_attr_type(attr_type):
@@ -156,7 +156,7 @@ def _convert_attr_list(attr_value):
     attr_value_list = attr_value.list
     if len(attr_value_list.s) > 0:
         for value in attr_value_list.s:
-            result.append(value.decode('utf8'))
+            result.append(value.decode("utf8"))
     if len(attr_value_list.i) > 0:
         for i in attr_value_list.i:
             result.append(i)
@@ -173,21 +173,21 @@ def _convert_attr_list(attr_value):
     return result
 
 def _convert_attr_value(attr_value):
-    if attr_value.HasField('list'):
+    if attr_value.HasField("list"):
         value = _convert_attr_list(attr_value)
-    elif attr_value.HasField('s'):
-        value = attr_value.s.decode('utf8')
-    elif attr_value.HasField('i'):
+    elif attr_value.HasField("s"):
+        value = attr_value.s.decode("utf8")
+    elif attr_value.HasField("i"):
         value = attr_value.i
-    elif attr_value.HasField('f'):
+    elif attr_value.HasField("f"):
         value = _convert_number(attr_value.f)
-    elif attr_value.HasField('b'):
+    elif attr_value.HasField("b"):
         value = attr_value.b
-    elif attr_value.HasField('type'):
+    elif attr_value.HasField("type"):
         value = _convert_type(attr_value.type)
-    elif attr_value.HasField('tensor'):
+    elif attr_value.HasField("tensor"):
         value = _convert_tensor(attr_value.tensor)
-    elif attr_value.HasField('shape'):
+    elif attr_value.HasField("shape"):
         value = _convert_shape(attr_value.shape)
     else:
         raise NotImplementedError()
@@ -251,14 +251,14 @@ def _format_data_type(data_type):
 
 def _format_attribute_value(value):
     if isinstance(value, dict) and \
-        'type' in value and 'value' in value and value['type'] == 'type':
-        return _format_data_type(value['value'])
+        "type" in value and "value" in value and value["type"] == "type":
+        return _format_data_type(value["value"])
     if isinstance(value, str):
         return value
     if value is True:
-        return 'true'
+        return "true"
     if value is False:
-        return 'false'
+        return "false"
     raise NotImplementedError()
 
 def _update_attributes(json_schema, operator, api_def):
@@ -266,160 +266,161 @@ def _update_attributes(json_schema, operator, api_def):
     for attr in api_def.attr:
         api_def_attr_map[attr.name] = attr
     for attr in operator.attr:
-        if 'attributes' not in json_schema:
-            json_schema['attributes'] = []
+        if "attributes" not in json_schema:
+            json_schema["attributes"] = []
         json_attribute = {}
-        json_attribute['name'] = attr.name
+        json_attribute["name"] = attr.name
         attr_type = _convert_attr_type(attr.type)
         if attr_type:
-            json_attribute['type'] = attr_type
+            json_attribute["type"] = attr_type
         else:
-            del json_attribute['type']
+            del json_attribute["type"]
         if attr.name in api_def_attr_map:
             api_def_attr = api_def_attr_map[attr.name]
             if api_def_attr.description:
-                json_attribute['description'] = api_def_attr.description
+                json_attribute["description"] = api_def_attr.description
         if attr.has_minimum:
-            json_attribute['minimum'] = attr.minimum
-        if attr.HasField('allowed_values'):
+            json_attribute["minimum"] = attr.minimum
+        if attr.HasField("allowed_values"):
             allowed_values = _convert_attr_value(attr.allowed_values)
-            description = json_attribute['description'] + \
-                ' ' if 'description' in json_attribute else ''
+            description = json_attribute["description"] + \
+                " " if "description" in json_attribute else ""
             allowed_values = list( \
                 map(lambda x: "`" + _format_attribute_value(x) + "`", \
                 allowed_values))
             description = description + \
-                'Must be one of the following: ' + ', '.join(allowed_values) + '.'
-            json_attribute['description'] = description
-        if attr.HasField('default_value'):
+                "Must be one of the following: " + ", ".join(allowed_values) + "."
+            json_attribute["description"] = description
+        if attr.HasField("default_value"):
             default_value = _convert_attr_value(attr.default_value)
-            json_attribute['default'] = default_value
-        json_schema['attributes'].append(json_attribute)
+            json_attribute["default"] = default_value
+        json_schema["attributes"].append(json_attribute)
 
 def _update_inputs(json_schema, operator, api_def):
     api_def_in_arg_map = {}
     for in_arg in api_def.in_arg:
         api_def_in_arg_map[in_arg.name] = in_arg
     for input_arg in operator.input_arg:
-        if 'inputs' not in json_schema:
-            json_schema['inputs'] = []
+        if "inputs" not in json_schema:
+            json_schema["inputs"] = []
         json_input = {}
-        json_input['name'] = input_arg.name
+        json_input["name"] = input_arg.name
         if input_arg.name in api_def_in_arg_map:
             api_def_in_arg = api_def_in_arg_map[input_arg.name]
             if api_def_in_arg.description:
-                json_input['description'] = api_def_in_arg.description
+                json_input["description"] = api_def_in_arg.description
         if input_arg.number_attr:
-            json_input['numberAttr'] = input_arg.number_attr
+            json_input["numberAttr"] = input_arg.number_attr
         if input_arg.type:
-            json_input['type'] = input_arg.type
+            json_input["type"] = input_arg.type
         if input_arg.type_attr:
-            json_input['typeAttr'] = input_arg.type_attr
+            json_input["typeAttr"] = input_arg.type_attr
         if input_arg.type_list_attr:
-            json_input['typeListAttr'] = input_arg.type_list_attr
+            json_input["typeListAttr"] = input_arg.type_list_attr
         if input_arg.is_ref:
-            json_input['isRef'] = True
-        json_schema['inputs'].append(json_input)
+            json_input["isRef"] = True
+        json_schema["inputs"].append(json_input)
 
 def _update_outputs(json_schema, operator, api_def):
     api_def_out_arg_map = {}
     for out_arg in api_def.out_arg:
         api_def_out_arg_map[out_arg.name] = out_arg
     for output_arg in operator.output_arg:
-        if 'outputs' not in json_schema:
-            json_schema['outputs'] = []
+        if "outputs" not in json_schema:
+            json_schema["outputs"] = []
         json_output = {}
-        json_output['name'] = output_arg.name
+        json_output["name"] = output_arg.name
         if output_arg.name in api_def_out_arg_map:
             api_def_out_arg = api_def_out_arg_map[output_arg.name]
             if api_def_out_arg.description:
-                json_output['description'] = api_def_out_arg.description
+                json_output["description"] = api_def_out_arg.description
         if output_arg.number_attr:
-            json_output['numberAttr'] = output_arg.number_attr
+            json_output["numberAttr"] = output_arg.number_attr
         if output_arg.type:
-            json_output['type'] = output_arg.type
+            json_output["type"] = output_arg.type
         elif output_arg.type_attr:
-            json_output['typeAttr'] = output_arg.type_attr
+            json_output["typeAttr"] = output_arg.type_attr
         elif output_arg.type_list_attr:
-            json_output['typeListAttr'] = output_arg.type_list_attr
+            json_output["typeListAttr"] = output_arg.type_list_attr
         if output_arg.is_ref:
-            json_output['isRef'] = True
-        json_schema['outputs'].append(json_output)
+            json_output["isRef"] = True
+        json_schema["outputs"].append(json_output)
 
 categories = {
-    'Assign': 'Control',
-    'AvgPool': 'Pool',
-    'BatchNormWithGlobalNormalization': 'Normalization',
-    'BiasAdd': 'Layer',
-    'Concat': 'Tensor',
-    'ConcatV2': 'Tensor',
-    'Const': 'Constant',
-    'Conv2D': 'Layer',
-    'DepthwiseConv2dNative': 'Layer',
-    'Dequantize': 'Quantization',
-    'Elu': 'Activation',
-    'FusedBatchNorm': 'Normalization',
-    'FusedBatchNormV2': 'Normalization',
-    'FusedBatchNormV3': 'Normalization',
-    'Gather': 'Transform',
-    'Identity': 'Control',
-    'LeakyRelu': 'Activation',
-    'LRN': 'Normalization',
-    'LSTMBlockCell': 'Layer',
-    'MaxPool': 'Pool',
-    'MaxPoolV2': 'Pool',
-    'MaxPoolWithArgmax': 'Pool',
-    'Pad': 'Tensor',
-    'QuantizeAndDequantize': 'Quantization',
-    'QuantizeAndDequantizeV2': 'Quantization',
-    'QuantizeAndDequantizeV3': 'Quantization',
-    'QuantizeAndDequantizeV4': 'Quantization',
-    'QuantizeAndDequantizeV4Grad': 'Quantization',
-    'QuantizeDownAndShrinkRange': 'Quantization',
-    'QuantizeV2': 'Quantization',
-    'Relu': 'Activation',
-    'Relu6': 'Activation',
-    'Reshape': 'Shape',
-    'Sigmoid': 'Activation',
-    'Slice': 'Tensor',
-    'Softmax': 'Activation',
-    'Split': 'Tensor',
-    'Squeeze': 'Transform',
-    'StridedSlice': 'Tensor',
-    'swish_f32': 'Activation',
-    'Transpose': 'Transform',
-    'Variable': 'Control',
-    'VariableV2': 'Control',
+    "Assign": "Control",
+    "AvgPool": "Pool",
+    "BatchNormWithGlobalNormalization": "Normalization",
+    "BiasAdd": "Layer",
+    "Concat": "Tensor",
+    "ConcatV2": "Tensor",
+    "Const": "Constant",
+    "Conv2D": "Layer",
+    "DepthwiseConv2dNative": "Layer",
+    "Dequantize": "Quantization",
+    "Elu": "Activation",
+    "FusedBatchNorm": "Normalization",
+    "FusedBatchNormV2": "Normalization",
+    "FusedBatchNormV3": "Normalization",
+    "Gather": "Transform",
+    "Identity": "Control",
+    "LeakyRelu": "Activation",
+    "LRN": "Normalization",
+    "LSTMBlockCell": "Layer",
+    "MaxPool": "Pool",
+    "MaxPoolV2": "Pool",
+    "MaxPoolWithArgmax": "Pool",
+    "Pad": "Tensor",
+    "QuantizeAndDequantize": "Quantization",
+    "QuantizeAndDequantizeV2": "Quantization",
+    "QuantizeAndDequantizeV3": "Quantization",
+    "QuantizeAndDequantizeV4": "Quantization",
+    "QuantizeAndDequantizeV4Grad": "Quantization",
+    "QuantizeDownAndShrinkRange": "Quantization",
+    "QuantizeV2": "Quantization",
+    "Relu": "Activation",
+    "Relu6": "Activation",
+    "Reshape": "Shape",
+    "Sigmoid": "Activation",
+    "Slice": "Tensor",
+    "Softmax": "Activation",
+    "Split": "Tensor",
+    "Squeeze": "Transform",
+    "StridedSlice": "Tensor",
+    "swish_f32": "Activation",
+    "Transpose": "Transform",
+    "Variable": "Control",
+    "VariableV2": "Control",
 }
 
 def _metadata():
     root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
-    core_dir = os.path.join(root_dir, 'third_party', 'source', 'tensorflow', 'tensorflow', 'core')
-    api_def_map = _read_api_def_map(os.path.join(core_dir, 'api_def' , 'base_api'))
-    ops_list = _read_op_list(os.path.join(core_dir, 'ops', 'ops.pbtxt'))
+    tensorflow_dir = os.path.join(root_dir, "third_party", "source", "tensorflow")
+    core_dir = os.path.join(tensorflow_dir, "tensorflow", "core")
+    api_def_map = _read_api_def_map(os.path.join(core_dir, "api_def" , "base_api"))
+    ops_list = _read_op_list(os.path.join(core_dir, "ops", "ops.pbtxt"))
 
     json_root = []
     for operator in ops_list.op:
         json_schema = {}
-        json_schema['name'] = operator.name
+        json_schema["name"] = operator.name
         if operator.name in categories:
-            json_schema['category'] = categories[operator.name]
+            json_schema["category"] = categories[operator.name]
         api_def = api_def_pb2.ApiDef()
         if operator.name in api_def_map:
             api_def = api_def_map[operator.name]
         if api_def.summary:
-            json_schema['summary'] = api_def.summary
+            json_schema["summary"] = api_def.summary
         if api_def.description:
-            json_schema['description'] = api_def.description
+            json_schema["description"] = api_def.description
         _update_attributes(json_schema, operator, api_def)
         _update_inputs(json_schema, operator, api_def)
         _update_outputs(json_schema, operator, api_def)
         json_root.append(json_schema)
-    json_file = os.path.join(root_dir, 'source', 'tf-metadata.json')
+    json_file = os.path.join(root_dir, "source", "tf-metadata.json")
     _write(json_file, json.dumps(json_root, sort_keys=False, indent=2))
 
 def main():
     _metadata()
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     main()