{
  "id": "eegnet",
  "name": "EEGNet",
  "description": "Compact CNN for EEG/BCI classification — depthwise + separable convs make it 10× lighter than standard CNNs (Lawhern et al. 2018).",
  "components": [
    {
      "id": "input-1",
      "type": "input",
      "name": "eeg_window",
      "position": { "x": 220, "y": 50 },
      "params": { "shape": [1, 22, 1000] },
      "inputs": [], "outputs": []
    },
    {
      "id": "conv-temporal",
      "type": "conv2d",
      "name": "temporal_conv",
      "scope": "block.0",
      "position": { "x": 220, "y": 220 },
      "params": { "outChannels": 8, "kernelSize": [1, 64], "stride": 1, "padding": [0, 32] },
      "inputs": [], "outputs": []
    },
    {
      "id": "bn-1",
      "type": "batchNorm",
      "name": "norm",
      "scope": "block.0",
      "position": { "x": 220, "y": 390 },
      "params": { "normalizedShape": 8 },
      "inputs": [], "outputs": []
    },
    {
      "id": "conv-spatial",
      "type": "depthwiseConv2d",
      "name": "spatial_depthwise",
      "scope": "block.1",
      "position": { "x": 220, "y": 560 },
      "params": { "outChannels": 16, "kernelSize": [22, 1], "stride": 1, "padding": 0, "depthMultiplier": 2 },
      "inputs": [], "outputs": []
    },
    {
      "id": "bn-2",
      "type": "batchNorm",
      "name": "norm",
      "scope": "block.1",
      "position": { "x": 220, "y": 730 },
      "params": { "normalizedShape": 16 },
      "inputs": [], "outputs": []
    },
    {
      "id": "elu-1",
      "type": "elu",
      "name": "act",
      "scope": "block.1",
      "position": { "x": 220, "y": 900 },
      "params": {},
      "inputs": [], "outputs": []
    },
    {
      "id": "pool-1",
      "type": "avgpool2d",
      "name": "pool",
      "scope": "block.1",
      "position": { "x": 220, "y": 1070 },
      "params": { "kernelSize": [1, 4], "stride": [1, 4] },
      "inputs": [], "outputs": []
    },
    {
      "id": "drop-1",
      "type": "dropout",
      "name": "drop",
      "scope": "block.1",
      "position": { "x": 220, "y": 1240 },
      "params": { "p": 0.25 },
      "inputs": [], "outputs": []
    },
    {
      "id": "conv-separable",
      "type": "separableConv2d",
      "name": "separable_conv",
      "scope": "block.2",
      "position": { "x": 220, "y": 1410 },
      "params": { "outChannels": 16, "kernelSize": [1, 16], "stride": 1, "padding": [0, 8] },
      "inputs": [], "outputs": []
    },
    {
      "id": "bn-3",
      "type": "batchNorm",
      "name": "norm",
      "scope": "block.2",
      "position": { "x": 220, "y": 1580 },
      "params": { "normalizedShape": 16 },
      "inputs": [], "outputs": []
    },
    {
      "id": "elu-2",
      "type": "elu",
      "name": "act",
      "scope": "block.2",
      "position": { "x": 220, "y": 1750 },
      "params": {},
      "inputs": [], "outputs": []
    },
    {
      "id": "pool-2",
      "type": "avgpool2d",
      "name": "pool",
      "scope": "block.2",
      "position": { "x": 220, "y": 1920 },
      "params": { "kernelSize": [1, 8], "stride": [1, 8] },
      "inputs": [], "outputs": []
    },
    {
      "id": "drop-2",
      "type": "dropout",
      "name": "drop",
      "scope": "block.2",
      "position": { "x": 220, "y": 2090 },
      "params": { "p": 0.25 },
      "inputs": [], "outputs": []
    },
    {
      "id": "flatten-1",
      "type": "flatten",
      "name": "flatten",
      "scope": "head",
      "position": { "x": 220, "y": 2260 },
      "params": {},
      "inputs": [], "outputs": []
    },
    {
      "id": "linear-1",
      "type": "linear",
      "name": "classifier",
      "scope": "head",
      "position": { "x": 220, "y": 2430 },
      "params": { "outFeatures": 4 },
      "inputs": [], "outputs": []
    },
    {
      "id": "output-1",
      "type": "output",
      "name": "logits",
      "position": { "x": 220, "y": 2600 },
      "params": {},
      "inputs": [], "outputs": []
    }
  ],
  "connections": [
    { "id": "c1", "from": "input-1", "to": "conv-temporal" },
    { "id": "c2", "from": "conv-temporal", "to": "bn-1" },
    { "id": "c3", "from": "bn-1", "to": "conv-spatial" },
    { "id": "c4", "from": "conv-spatial", "to": "bn-2" },
    { "id": "c5", "from": "bn-2", "to": "elu-1" },
    { "id": "c6", "from": "elu-1", "to": "pool-1" },
    { "id": "c7", "from": "pool-1", "to": "drop-1" },
    { "id": "c8", "from": "drop-1", "to": "conv-separable" },
    { "id": "c9", "from": "conv-separable", "to": "bn-3" },
    { "id": "c10", "from": "bn-3", "to": "elu-2" },
    { "id": "c11", "from": "elu-2", "to": "pool-2" },
    { "id": "c12", "from": "pool-2", "to": "drop-2" },
    { "id": "c13", "from": "drop-2", "to": "flatten-1" },
    { "id": "c14", "from": "flatten-1", "to": "linear-1" },
    { "id": "c15", "from": "linear-1", "to": "output-1" }
  ]
}
