{
    "$defs": {
        "Input": {
            "description": "Specify (transformations of) the input layer.",
            "properties": {
                "input_id": {
                    "title": "Input Id",
                    "type": "string"
                }
            },
            "required": [
                "input_id"
            ],
            "title": "Input",
            "type": "object"
        },
        "Layer": {
            "description": "Specify layers.",
            "properties": {
                "layer_id": {
                    "title": "Layer Id",
                    "type": "string"
                },
                "layer_type": {
                    "title": "Layer Type",
                    "type": "string"
                },
                "args": {
                    "anyOf": [
                        {
                            "additionalProperties": true,
                            "type": "object"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "default": null,
                    "title": "Args"
                }
            },
            "required": [
                "layer_id",
                "layer_type"
            ],
            "title": "Layer",
            "type": "object"
        },
        "Node": {
            "description": "A node of the computational graph.\n\ne.g. a node in the forward call of a PyTorch model.\nRef: https://pytorch.org/docs/stable/fx.html#torch.fx.Node",
            "properties": {
                "name": {
                    "title": "Name",
                    "type": "string"
                },
                "op": {
                    "title": "Op",
                    "type": "string"
                },
                "target": {
                    "title": "Target",
                    "type": "string"
                },
                "args": {
                    "anyOf": [
                        {
                            "items": {},
                            "type": "array"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "default": null,
                    "title": "Args"
                },
                "kwargs": {
                    "anyOf": [
                        {
                            "additionalProperties": true,
                            "type": "object"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "default": null,
                    "title": "Kwargs"
                }
            },
            "required": [
                "name",
                "op",
                "target"
            ],
            "title": "Node",
            "type": "object"
        }
    },
    "description": "An easy-to-use format to specify simple deep NN models.\n\nThere is a function to export this to a PyTorch module, or to YAML.",
    "properties": {
        "nn_model_id": {
            "title": "Nn Model Id",
            "type": "string"
        },
        "inputs": {
            "items": {
                "$ref": "#/$defs/Input"
            },
            "title": "Inputs",
            "type": "array"
        },
        "layers": {
            "items": {
                "$ref": "#/$defs/Layer"
            },
            "title": "Layers",
            "type": "array"
        },
        "forward": {
            "items": {
                "$ref": "#/$defs/Node"
            },
            "title": "Forward",
            "type": "array"
        }
    },
    "required": [
        "nn_model_id",
        "inputs",
        "layers",
        "forward"
    ],
    "title": "NNModel",
    "type": "object"
}
