{"meta": {"data_generated": "2026-10-02", "page_version": "v1", "torch": "2.10.0", "python": "3.13", "generator": "feature_map_tx_energy.py (forward-hook trace of model_architectures.ipynb)"}, "models": [{"id": "attx_vgg", "name": "AttX (VGG)", "period_s": 4, "period": "every 4 s: 10-s windows, 60% overlap", "params": 3670983, "note": "ECG and EDA each run in their own stream, and every dist point cuts both streams at the same layer.", "splits": [{"label": "Raw ECG + EDA (full 10-s window)", "shape": "2 × 2560 (full 10-s window)", "ein": 5120, "ef": 0, "macs": 0, "params": 0, "act": 0, "note": "Each inference sends the full 10-s window, the same window every dist point covers.", "short": "raw", "group": "Input"}, {"label": "Stage 1 · conv 1 (both streams)", "shape": "2 × 32 × 2560", "ein": 0, "ef": 163840, "macs": 10485760, "params": 4160, "act": 84480, "note": "", "short": "conv1", "group": "Stage 1"}, {"label": "Stage 1 · conv 2 (both streams)", "shape": "2 × 32 × 854", "ein": 0, "ef": 54656, "macs": 122421248, "params": 135296, "act": 109248, "note": "", "short": "conv2", "group": "Stage 1"}, {"label": "Stage 1 · max-pool (both streams)", "shape": "2 × 32 × 427", "ein": 0, "ef": 27328, "macs": 122421248, "params": 135296, "act": 109248, "note": "", "short": "pool", "group": "Stage 1"}, {"label": "Stage 2 · conv 1 (both streams)", "shape": "2 × 64 × 427", "ein": 0, "ef": 54656, "macs": 178388992, "params": 266496, "act": 109248, "note": "", "short": "conv1", "group": "Stage 2"}, {"label": "Stage 2 · conv 2 (both streams)", "shape": "2 × 64 × 143", "ein": 0, "ef": 18304, "macs": 215875584, "params": 528768, "act": 109248, "note": "", "short": "conv2", "group": "Stage 2"}, {"label": "Stage 2 · max-pool (both streams)", "shape": "2 × 64 × 71", "ein": 0, "ef": 9088, "macs": 215875584, "params": 528768, "act": 109248, "note": "", "short": "pool", "group": "Stage 2"}, {"label": "After AttX fusion: ECG stream (now with weighted EDA added) + EDA stream", "shape": "128 × 71 + 64 × 71", "ein": 0, "ef": 13632, "macs": 215875584, "params": 528836, "act": 109248, "note": "", "short": "fuse", "group": "AttX"}, {"label": "Stage 3 · conv 1 (both streams)", "shape": "2 × 128 × 71", "ein": 0, "ef": 18176, "macs": 245538816, "params": 946884, "act": 109248, "note": "", "short": "conv1", "group": "Stage 3"}, {"label": "Stage 3 · conv 2 (both streams)", "shape": "2 × 128 × 24", "ein": 0, "ef": 6144, "macs": 258908160, "params": 1504196, "act": 109248, "note": "", "short": "conv2", "group": "Stage 3"}, {"label": "Stage 3 · max-pool (both streams)", "shape": "2 × 128 × 12", "ein": 0, "ef": 3072, "macs": 258908160, "params": 1504196, "act": 109248, "note": "", "short": "pool", "group": "Stage 3"}, {"label": "Stage 4 · conv 1 (both streams)", "shape": "2 × 256 × 12", "ein": 0, "ef": 6144, "macs": 264413184, "params": 1963460, "act": 109248, "note": "", "short": "conv1", "group": "Stage 4"}, {"label": "Stage 4 · conv 2 (both streams)", "shape": "2 × 256 × 4", "ein": 0, "ef": 2048, "macs": 268083200, "params": 2881476, "act": 109248, "note": "", "short": "conv2", "group": "Stage 4"}, {"label": "Stage 4 · max-pool (both streams)", "shape": "2 × 256 × 2", "ein": 0, "ef": 1024, "macs": 268083200, "params": 2881476, "act": 109248, "note": "", "short": "pool", "group": "Stage 4"}, {"label": "FC layer 1 (512 per stream)", "shape": "2 × 512", "ein": 0, "ef": 1024, "macs": 268607488, "params": 3406788, "act": 109248, "note": "", "short": "FC512", "group": "FC layers"}, {"label": "FC layer 2 (256 per stream)", "shape": "2 × 256", "ein": 0, "ef": 512, "macs": 268869632, "params": 3669444, "act": 109248, "note": "", "short": "FC256", "group": "FC layers"}, {"label": "Final class scores (3 classes)", "shape": "3", "ein": 0, "ef": 3, "macs": 268871168, "params": 3670983, "act": 109248, "note": "", "short": "logits", "group": "Output"}], "layers": [{"path": "stages.0.[0–1].conv1", "type": "SamePadConv1d", "extra": "k=64, s=1, 1→32, same-pad", "shape": [1, 32, 2560], "elems": 163840, "macs": 10485760, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].conv2", "type": "SamePadConv1d", "extra": "k=64, s=3, 32→32, same-pad", "shape": [1, 32, 854], "elems": 54656, "macs": 111935488, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].pool", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 427], "elems": 27328, "macs": 0, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].conv1", "type": "SamePadConv1d", "extra": "k=32, s=1, 32→64, same-pad", "shape": [1, 64, 427], "elems": 54656, "macs": 55967744, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].conv2", "type": "SamePadConv1d", "extra": "k=32, s=3, 64→64, same-pad", "shape": [1, 64, 143], "elems": 18304, "macs": 37486592, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].pool", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 64, 71], "elems": 9088, "macs": 0, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "attx.2", "type": "AttXBlock", "extra": "", "shape": [1, 71, 2, 64], "elems": 9088, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.conv1", "type": "SamePadConv1d", "extra": "k=17, s=1, 128→128, same-pad", "shape": [1, 128, 71], "elems": 9088, "macs": 19775488, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.conv2", "type": "SamePadConv1d", "extra": "k=17, s=3, 128→128, same-pad", "shape": [1, 128, 24], "elems": 3072, "macs": 6684672, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.pool", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 128, 12], "elems": 1536, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.conv1", "type": "SamePadConv1d", "extra": "k=17, s=1, 64→128, same-pad", "shape": [1, 128, 71], "elems": 9088, "macs": 9887744, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.conv2", "type": "SamePadConv1d", "extra": "k=17, s=3, 128→128, same-pad", "shape": [1, 128, 24], "elems": 3072, "macs": 6684672, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.pool", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 128, 12], "elems": 1536, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.3.[0–1].conv1", "type": "SamePadConv1d", "extra": "k=7, s=1, 128→256, same-pad", "shape": [1, 256, 12], "elems": 6144, "macs": 5505024, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].conv2", "type": "SamePadConv1d", "extra": "k=7, s=3, 256→256, same-pad", "shape": [1, 256, 4], "elems": 2048, "macs": 3670016, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].pool", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 256, 2], "elems": 1024, "macs": 0, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stream_fc.[0–1].0", "type": "Linear", "extra": "512→512", "shape": [1, 512], "elems": 1024, "macs": 524288, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stream_fc.[0–1].1", "type": "ReLU", "extra": "", "shape": [1, 512], "elems": 1024, "macs": 0, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stream_fc.[0–1].2", "type": "Linear", "extra": "512→256", "shape": [1, 256], "elems": 512, "macs": 262144, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stream_fc.[0–1].3", "type": "ReLU", "extra": "", "shape": [1, 256], "elems": 512, "macs": 0, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "classifier", "type": "Linear", "extra": "512→3", "shape": [1, 3], "elems": 3, "macs": 1536, "clean": true, "calls": 1, "par": 1, "seq": 1}], "params_all": 3670983}, {"id": "attx_resnet", "name": "AttX (ResNet)", "period_s": 4, "period": "every 4 s: 10-s windows, 60% overlap", "params": 12979655, "note": "ECG and EDA each run in their own stream, and every dist point cuts both streams at the same layer.", "splits": [{"label": "Raw ECG + EDA (full 10-s window)", "shape": "2 × 2560 (full 10-s window)", "ein": 5120, "ef": 0, "macs": 0, "params": 0, "act": 0, "note": "Each inference sends the full 10-s window, the same window every dist point covers.", "short": "raw", "group": "Input"}, {"label": "Stage 1 · bottleneck unit 1 (both streams)", "shape": "2 × 64 × 366", "ein": 0, "ef": 46848, "macs": 49541760, "params": 136512, "act": 46848, "note": "", "short": "unit1", "group": "Stage 1"}, {"label": "Stage 1 · bottleneck unit 2 (both streams)", "shape": "2 × 64 × 366", "ein": 0, "ef": 46848, "macs": 100512384, "params": 276544, "act": 46848, "note": "", "short": "unit2", "group": "Stage 1"}, {"label": "Stage 2 · bottleneck unit 1 (both streams)", "shape": "2 × 128 × 122", "ein": 0, "ef": 31232, "macs": 137491072, "params": 581952, "act": 46848, "note": "", "short": "unit1", "group": "Stage 2"}, {"label": "Stage 2 · bottleneck unit 2 (both streams)", "shape": "2 × 128 × 122", "ein": 0, "ef": 31232, "macs": 173470336, "params": 878400, "act": 46848, "note": "", "short": "unit2", "group": "Stage 2"}, {"label": "After AttX fusion: ECG stream (now with weighted EDA added) + EDA stream", "shape": "256 × 122 + 128 × 122", "ein": 0, "ef": 46848, "macs": 173470336, "params": 878532, "act": 46848, "note": "", "short": "fuse", "group": "AttX"}, {"label": "Stage 3 · bottleneck unit 1 (both streams)", "shape": "2 × 256 × 41", "ein": 0, "ef": 20992, "macs": 205042304, "params": 1653188, "act": 46848, "note": "", "short": "unit1", "group": "Stage 3"}, {"label": "Stage 3 · bottleneck unit 2 (both streams)", "shape": "2 × 256 × 41", "ein": 0, "ef": 20992, "macs": 233255552, "params": 2344388, "act": 46848, "note": "", "short": "unit2", "group": "Stage 3"}, {"label": "Stage 4 · bottleneck unit 1 (both streams)", "shape": "2 × 512 × 14", "ein": 0, "ef": 14336, "macs": 255275648, "params": 3926468, "act": 46848, "note": "", "short": "unit1", "group": "Stage 4"}, {"label": "Stage 4 · bottleneck unit 2 (both streams)", "shape": "2 × 512 × 14", "ein": 0, "ef": 14336, "macs": 275460736, "params": 5374404, "act": 46848, "note": "", "short": "unit2", "group": "Stage 4"}, {"label": "FC layer 1 (512 per stream)", "shape": "2 × 512", "ein": 0, "ef": 1024, "macs": 282800768, "params": 12715460, "act": 46848, "note": "", "short": "FC512", "group": "FC layers"}, {"label": "FC layer 2 (256 per stream)", "shape": "2 × 256", "ein": 0, "ef": 512, "macs": 283062912, "params": 12978116, "act": 46848, "note": "", "short": "FC256", "group": "FC layers"}, {"label": "Final class scores (3 classes)", "shape": "3", "ein": 0, "ef": 3, "macs": 283064448, "params": 12979655, "act": 46848, "note": "", "short": "logits", "group": "Output"}], "layers": [{"path": "stages.0.[0–1].unit1.c1", "type": "SamePadConv1d", "extra": "k=1, s=7, 1→32, same-pad", "shape": [1, 32, 366], "elems": 23424, "macs": 23424, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit1.b1", "type": "BatchNorm1d", "extra": "", "shape": [1, 32, 366], "elems": 23424, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit1.c2", "type": "SamePadConv1d", "extra": "k=64, s=1, 32→32, same-pad", "shape": [1, 32, 366], "elems": 23424, "macs": 47972352, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit1.b2", "type": "BatchNorm1d", "extra": "", "shape": [1, 32, 366], "elems": 23424, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit1.c3", "type": "SamePadConv1d", "extra": "k=1, s=1, 32→64, same-pad", "shape": [1, 64, 366], "elems": 46848, "macs": 1499136, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit1.b3", "type": "BatchNorm1d", "extra": "", "shape": [1, 64, 366], "elems": 46848, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit1.short.0", "type": "SamePadConv1d", "extra": "k=1, s=7, 1→64, same-pad", "shape": [1, 64, 366], "elems": 46848, "macs": 46848, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit1.short.1", "type": "BatchNorm1d", "extra": "", "shape": [1, 64, 366], "elems": 46848, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit2.c1", "type": "SamePadConv1d", "extra": "k=1, s=1, 64→32, same-pad", "shape": [1, 32, 366], "elems": 23424, "macs": 1499136, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit2.b1", "type": "BatchNorm1d", "extra": "", "shape": [1, 32, 366], "elems": 23424, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit2.c2", "type": "SamePadConv1d", "extra": "k=64, s=1, 32→32, same-pad", "shape": [1, 32, 366], "elems": 23424, "macs": 47972352, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit2.b2", "type": "BatchNorm1d", "extra": "", "shape": [1, 32, 366], "elems": 23424, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit2.c3", "type": "SamePadConv1d", "extra": "k=1, s=1, 32→64, same-pad", "shape": [1, 64, 366], "elems": 46848, "macs": 1499136, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.0.[0–1].unit2.b3", "type": "BatchNorm1d", "extra": "", "shape": [1, 64, 366], "elems": 46848, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit1.c1", "type": "SamePadConv1d", "extra": "k=1, s=3, 64→64, same-pad", "shape": [1, 64, 122], "elems": 15616, "macs": 999424, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit1.b1", "type": "BatchNorm1d", "extra": "", "shape": [1, 64, 122], "elems": 15616, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit1.c2", "type": "SamePadConv1d", "extra": "k=32, s=1, 64→64, same-pad", "shape": [1, 64, 122], "elems": 15616, "macs": 31981568, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit1.b2", "type": "BatchNorm1d", "extra": "", "shape": [1, 64, 122], "elems": 15616, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit1.c3", "type": "SamePadConv1d", "extra": "k=1, s=1, 64→128, same-pad", "shape": [1, 128, 122], "elems": 31232, "macs": 1998848, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit1.b3", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 122], "elems": 31232, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit1.short.0", "type": "SamePadConv1d", "extra": "k=1, s=3, 64→128, same-pad", "shape": [1, 128, 122], "elems": 31232, "macs": 1998848, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit1.short.1", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 122], "elems": 31232, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit2.c1", "type": "SamePadConv1d", "extra": "k=1, s=1, 128→64, same-pad", "shape": [1, 64, 122], "elems": 15616, "macs": 1998848, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit2.b1", "type": "BatchNorm1d", "extra": "", "shape": [1, 64, 122], "elems": 15616, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit2.c2", "type": "SamePadConv1d", "extra": "k=32, s=1, 64→64, same-pad", "shape": [1, 64, 122], "elems": 15616, "macs": 31981568, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit2.b2", "type": "BatchNorm1d", "extra": "", "shape": [1, 64, 122], "elems": 15616, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit2.c3", "type": "SamePadConv1d", "extra": "k=1, s=1, 64→128, same-pad", "shape": [1, 128, 122], "elems": 31232, "macs": 1998848, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.1.[0–1].unit2.b3", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 122], "elems": 31232, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "attx.2", "type": "AttXBlock", "extra": "", "shape": [1, 122, 2, 128], "elems": 31232, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit1.c1", "type": "SamePadConv1d", "extra": "k=1, s=3, 256→128, same-pad", "shape": [1, 128, 41], "elems": 5248, "macs": 1343488, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit1.b1", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 41], "elems": 5248, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit1.c2", "type": "SamePadConv1d", "extra": "k=17, s=1, 128→128, same-pad", "shape": [1, 128, 41], "elems": 5248, "macs": 11419648, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit1.b2", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 41], "elems": 5248, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit1.c3", "type": "SamePadConv1d", "extra": "k=1, s=1, 128→256, same-pad", "shape": [1, 256, 41], "elems": 10496, "macs": 1343488, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit1.b3", "type": "BatchNorm1d", "extra": "", "shape": [1, 256, 41], "elems": 10496, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit1.short.0", "type": "SamePadConv1d", "extra": "k=1, s=3, 256→256, same-pad", "shape": [1, 256, 41], "elems": 10496, "macs": 2686976, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit1.short.1", "type": "BatchNorm1d", "extra": "", "shape": [1, 256, 41], "elems": 10496, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit2.c1", "type": "SamePadConv1d", "extra": "k=1, s=1, 256→128, same-pad", "shape": [1, 128, 41], "elems": 5248, "macs": 1343488, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit2.b1", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 41], "elems": 5248, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit2.c2", "type": "SamePadConv1d", "extra": "k=17, s=1, 128→128, same-pad", "shape": [1, 128, 41], "elems": 5248, "macs": 11419648, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit2.b2", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 41], "elems": 5248, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit2.c3", "type": "SamePadConv1d", "extra": "k=1, s=1, 128→256, same-pad", "shape": [1, 256, 41], "elems": 10496, "macs": 1343488, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.0.unit2.b3", "type": "BatchNorm1d", "extra": "", "shape": [1, 256, 41], "elems": 10496, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit1.c1", "type": "SamePadConv1d", "extra": "k=1, s=3, 128→128, same-pad", "shape": [1, 128, 41], "elems": 5248, "macs": 671744, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit1.b1", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 41], "elems": 5248, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit1.c2", "type": "SamePadConv1d", "extra": "k=17, s=1, 128→128, same-pad", "shape": [1, 128, 41], "elems": 5248, "macs": 11419648, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit1.b2", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 41], "elems": 5248, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit1.c3", "type": "SamePadConv1d", "extra": "k=1, s=1, 128→256, same-pad", "shape": [1, 256, 41], "elems": 10496, "macs": 1343488, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit1.b3", "type": "BatchNorm1d", "extra": "", "shape": [1, 256, 41], "elems": 10496, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit1.short.0", "type": "SamePadConv1d", "extra": "k=1, s=3, 128→256, same-pad", "shape": [1, 256, 41], "elems": 10496, "macs": 1343488, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit1.short.1", "type": "BatchNorm1d", "extra": "", "shape": [1, 256, 41], "elems": 10496, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit2.c1", "type": "SamePadConv1d", "extra": "k=1, s=1, 256→128, same-pad", "shape": [1, 128, 41], "elems": 5248, "macs": 1343488, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit2.b1", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 41], "elems": 5248, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit2.c2", "type": "SamePadConv1d", "extra": "k=17, s=1, 128→128, same-pad", "shape": [1, 128, 41], "elems": 5248, "macs": 11419648, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit2.b2", "type": "BatchNorm1d", "extra": "", "shape": [1, 128, 41], "elems": 5248, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit2.c3", "type": "SamePadConv1d", "extra": "k=1, s=1, 128→256, same-pad", "shape": [1, 256, 41], "elems": 10496, "macs": 1343488, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.2.1.unit2.b3", "type": "BatchNorm1d", "extra": "", "shape": [1, 256, 41], "elems": 10496, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "stages.3.[0–1].unit1.c1", "type": "SamePadConv1d", "extra": "k=1, s=3, 256→256, same-pad", "shape": [1, 256, 14], "elems": 7168, "macs": 1835008, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit1.b1", "type": "BatchNorm1d", "extra": "", "shape": [1, 256, 14], "elems": 7168, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit1.c2", "type": "SamePadConv1d", "extra": "k=7, s=1, 256→256, same-pad", "shape": [1, 256, 14], "elems": 7168, "macs": 12845056, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit1.b2", "type": "BatchNorm1d", "extra": "", "shape": [1, 256, 14], "elems": 7168, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit1.c3", "type": "SamePadConv1d", "extra": "k=1, s=1, 256→512, same-pad", "shape": [1, 512, 14], "elems": 14336, "macs": 3670016, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit1.b3", "type": "BatchNorm1d", "extra": "", "shape": [1, 512, 14], "elems": 14336, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit1.short.0", "type": "SamePadConv1d", "extra": "k=1, s=3, 256→512, same-pad", "shape": [1, 512, 14], "elems": 14336, "macs": 3670016, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit1.short.1", "type": "BatchNorm1d", "extra": "", "shape": [1, 512, 14], "elems": 14336, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit2.c1", "type": "SamePadConv1d", "extra": "k=1, s=1, 512→256, same-pad", "shape": [1, 256, 14], "elems": 7168, "macs": 3670016, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit2.b1", "type": "BatchNorm1d", "extra": "", "shape": [1, 256, 14], "elems": 7168, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit2.c2", "type": "SamePadConv1d", "extra": "k=7, s=1, 256→256, same-pad", "shape": [1, 256, 14], "elems": 7168, "macs": 12845056, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit2.b2", "type": "BatchNorm1d", "extra": "", "shape": [1, 256, 14], "elems": 7168, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit2.c3", "type": "SamePadConv1d", "extra": "k=1, s=1, 256→512, same-pad", "shape": [1, 512, 14], "elems": 14336, "macs": 3670016, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stages.3.[0–1].unit2.b3", "type": "BatchNorm1d", "extra": "", "shape": [1, 512, 14], "elems": 14336, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "stream_fc.[0–1].0", "type": "Linear", "extra": "7168→512", "shape": [1, 512], "elems": 1024, "macs": 7340032, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stream_fc.[0–1].1", "type": "ReLU", "extra": "", "shape": [1, 512], "elems": 1024, "macs": 0, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stream_fc.[0–1].2", "type": "Linear", "extra": "512→256", "shape": [1, 256], "elems": 512, "macs": 262144, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "stream_fc.[0–1].3", "type": "ReLU", "extra": "", "shape": [1, 256], "elems": 512, "macs": 0, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "classifier", "type": "Linear", "extra": "512→3", "shape": [1, 3], "elems": 3, "macs": 1536, "clean": true, "calls": 1, "par": 1, "seq": 1}], "params_all": 12979655}, {"id": "esn", "name": "EnsembleSleepNet", "period_s": 30, "period": "30-s epoch", "params": 2236526, "note": "The 3 sub-models and their 9 channels run side by side, and every dist point cuts all branches at the same depth. Every dist point after the raw signals also needs the spectrograms computed on the wearable (about 1.1 M MACs, included); the 172 handcrafted features per channel are not counted.", "splits": [{"label": "Raw signals, 9 channels", "shape": "4×3750 + 2×1500 + 3×300", "ein": 18900, "ef": 0, "macs": 0, "params": 0, "act": 0, "note": "The phone computes the spectrograms (STFT) and the handcrafted features.", "short": "raw", "group": "Input"}, {"label": "Raw + spectrograms + handcrafted features (all 3 input views)", "shape": "raw 18,900 + 9×129×31 + 9×172", "ein": 18900, "ef": 37539, "macs": 1142784, "params": 0, "act": 0, "note": "The wearable computes the spectrograms (counted as about 1.1 M MACs) and the handcrafted features (not counted).", "short": "3 views", "group": "Input"}, {"label": "Per-channel CNNs after their first pooling layer (27 branches)", "shape": "27 × 32 × L", "ein": 0, "ef": 32928, "macs": 17691168, "params": 177952, "act": 32000, "note": "", "short": "stems", "group": "CNN per channel"}, {"label": "Per-channel CNN outputs (27 branches)", "shape": "27 × 32 × L′", "ein": 0, "ef": 1888, "macs": 39600672, "params": 1683520, "act": 32000, "note": "", "short": "out", "group": "CNN per channel"}, {"label": "Channel tokens (one vector per channel)", "shape": "9×128 + 9×64 + 9×64", "ein": 0, "ef": 2304, "macs": 39752032, "params": 1700457, "act": 32000, "note": "", "short": "tokens", "group": "Tokens"}, {"label": "After transformer layer 1 (all 3 sub-models)", "shape": "9×128 + 9×64 + 9×64", "ein": 0, "ef": 2304, "macs": 40973152, "params": 1834025, "act": 32000, "note": "", "short": "L1", "group": "Transformer ×4"}, {"label": "After transformer layer 2 (all 3 sub-models)", "shape": "9×128 + 9×64 + 9×64", "ein": 0, "ef": 2304, "macs": 42194272, "params": 1967593, "act": 32000, "note": "", "short": "L2", "group": "Transformer ×4"}, {"label": "After transformer layer 3 (all 3 sub-models)", "shape": "9×128 + 9×64 + 9×64", "ein": 0, "ef": 2304, "macs": 43415392, "params": 2101161, "act": 32000, "note": "", "short": "L3", "group": "Transformer ×4"}, {"label": "After transformer layer 4 (all 3 sub-models)", "shape": "9×128 + 9×64 + 9×64", "ein": 0, "ef": 2304, "macs": 44636512, "params": 2234729, "act": 32000, "note": "", "short": "L4", "group": "Transformer ×4"}, {"label": "3 sub-model outputs, joined", "shape": "128 + 64 + 64", "ein": 0, "ef": 256, "macs": 44636512, "params": 2235241, "act": 32000, "note": "", "short": "concat", "group": "FC layers"}, {"label": "Final scores (5 sleep stages)", "shape": "5", "ein": 0, "ef": 5, "macs": 44637792, "params": 2236526, "act": 32000, "note": "", "short": "logits", "group": "Output"}], "layers": [{"path": "raw.cnns.[0–3].stem.0", "type": "SamePadConv1d", "extra": "k=15, s=5, 1→32, same-pad", "shape": [1, 32, 750], "elems": 96000, "macs": 1440000, "clean": true, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].stem.1", "type": "ReLU", "extra": "", "shape": [1, 32, 750], "elems": 96000, "macs": 0, "clean": true, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].stem.2", "type": "SamePadConv1d", "extra": "k=8, s=3, 32→32, same-pad", "shape": [1, 32, 250], "elems": 32000, "macs": 8192000, "clean": true, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].stem.3", "type": "ReLU", "extra": "", "shape": [1, 32, 250], "elems": 32000, "macs": 0, "clean": true, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].stem.4", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 125], "elems": 16000, "macs": 0, "clean": true, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.0", "type": "SamePadConv1d", "extra": "k=5, s=2, 32→64, same-pad", "shape": [1, 64, 63], "elems": 16128, "macs": 2580480, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.1", "type": "ReLU", "extra": "", "shape": [1, 64, 63], "elems": 16128, "macs": 0, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.2", "type": "SamePadConv1d", "extra": "k=5, s=2, 64→64, same-pad", "shape": [1, 64, 32], "elems": 8192, "macs": 2621440, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.3", "type": "ReLU", "extra": "", "shape": [1, 64, 32], "elems": 8192, "macs": 0, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.4", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 64, 16], "elems": 4096, "macs": 0, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.7", "type": "SamePadConv1d", "extra": "k=3, s=1, 64→128, same-pad", "shape": [1, 128, 16], "elems": 8192, "macs": 1572864, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.8", "type": "ReLU", "extra": "", "shape": [1, 128, 16], "elems": 8192, "macs": 0, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.9", "type": "SamePadConv1d", "extra": "k=3, s=1, 128→256, same-pad", "shape": [1, 256, 16], "elems": 16384, "macs": 6291456, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.10", "type": "ReLU", "extra": "", "shape": [1, 256, 16], "elems": 16384, "macs": 0, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.11", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 256, 8], "elems": 8192, "macs": 0, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.14", "type": "SamePadConv1d", "extra": "k=2, s=1, 256→128, same-pad", "shape": [1, 128, 8], "elems": 4096, "macs": 2097152, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.15", "type": "ReLU", "extra": "", "shape": [1, 128, 8], "elems": 4096, "macs": 0, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.16", "type": "SamePadConv1d", "extra": "k=2, s=1, 128→32, same-pad", "shape": [1, 32, 8], "elems": 1024, "macs": 262144, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.17", "type": "ReLU", "extra": "", "shape": [1, 32, 8], "elems": 1024, "macs": 0, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.cnns.[0–3].body.18", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 4], "elems": 512, "macs": 0, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.attn.[0–3].W", "type": "Linear", "extra": "32→1", "shape": [1, 4, 1], "elems": 16, "macs": 512, "clean": false, "calls": 1, "par": 4, "seq": 1}, {"path": "raw.token_proj", "type": "Linear", "extra": "64→128", "shape": [1, 128], "elems": 1152, "macs": 73728, "clean": true, "calls": 9, "par": 1, "seq": 1}, {"path": "raw.cnns.[4–5].stem.0", "type": "SamePadConv1d", "extra": "k=8, s=3, 1→32, same-pad", "shape": [1, 32, 500], "elems": 32000, "macs": 256000, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].stem.1", "type": "ReLU", "extra": "", "shape": [1, 32, 500], "elems": 32000, "macs": 0, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].stem.2", "type": "SamePadConv1d", "extra": "k=6, s=3, 32→32, same-pad", "shape": [1, 32, 167], "elems": 10688, "macs": 2052096, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].stem.3", "type": "ReLU", "extra": "", "shape": [1, 32, 167], "elems": 10688, "macs": 0, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].stem.4", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 83], "elems": 5312, "macs": 0, "clean": true, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].body.0", "type": "SamePadConv1d", "extra": "k=5, s=2, 32→64, same-pad", "shape": [1, 64, 42], "elems": 5376, "macs": 860160, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].body.1", "type": "ReLU", "extra": "", "shape": [1, 64, 42], "elems": 5376, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].body.2", "type": "SamePadConv1d", "extra": "k=5, s=2, 64→128, same-pad", "shape": [1, 128, 21], "elems": 5376, "macs": 1720320, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].body.3", "type": "ReLU", "extra": "", "shape": [1, 128, 21], "elems": 5376, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].body.4", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 128, 10], "elems": 2560, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].body.7", "type": "SamePadConv1d", "extra": "k=3, s=1, 128→64, same-pad", "shape": [1, 64, 10], "elems": 1280, "macs": 491520, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].body.8", "type": "ReLU", "extra": "", "shape": [1, 64, 10], "elems": 1280, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].body.9", "type": "SamePadConv1d", "extra": "k=2, s=1, 64→32, same-pad", "shape": [1, 32, 10], "elems": 640, "macs": 81920, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].body.10", "type": "ReLU", "extra": "", "shape": [1, 32, 10], "elems": 640, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[4–5].body.11", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 5], "elems": 320, "macs": 0, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.attn.[4–5].W", "type": "Linear", "extra": "32→1", "shape": [1, 5, 1], "elems": 10, "macs": 320, "clean": false, "calls": 1, "par": 2, "seq": 1}, {"path": "raw.cnns.[6–8].stem.0", "type": "SamePadConv1d", "extra": "k=3, s=2, 1→32, same-pad", "shape": [1, 32, 150], "elems": 14400, "macs": 43200, "clean": true, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].stem.1", "type": "ReLU", "extra": "", "shape": [1, 32, 150], "elems": 14400, "macs": 0, "clean": true, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].stem.2", "type": "SamePadConv1d", "extra": "k=3, s=2, 32→32, same-pad", "shape": [1, 32, 75], "elems": 7200, "macs": 691200, "clean": true, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].stem.3", "type": "ReLU", "extra": "", "shape": [1, 32, 75], "elems": 7200, "macs": 0, "clean": true, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].stem.4", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 37], "elems": 3552, "macs": 0, "clean": true, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].body.0", "type": "SamePadConv1d", "extra": "k=3, s=2, 32→64, same-pad", "shape": [1, 64, 19], "elems": 3648, "macs": 350208, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].body.1", "type": "ReLU", "extra": "", "shape": [1, 64, 19], "elems": 3648, "macs": 0, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].body.2", "type": "SamePadConv1d", "extra": "k=3, s=2, 64→128, same-pad", "shape": [1, 128, 10], "elems": 3840, "macs": 737280, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].body.3", "type": "ReLU", "extra": "", "shape": [1, 128, 10], "elems": 3840, "macs": 0, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].body.4", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 128, 5], "elems": 1920, "macs": 0, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].body.7", "type": "SamePadConv1d", "extra": "k=2, s=1, 128→64, same-pad", "shape": [1, 64, 5], "elems": 960, "macs": 245760, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].body.8", "type": "ReLU", "extra": "", "shape": [1, 64, 5], "elems": 960, "macs": 0, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].body.9", "type": "SamePadConv1d", "extra": "k=2, s=1, 64→32, same-pad", "shape": [1, 32, 5], "elems": 480, "macs": 61440, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].body.10", "type": "ReLU", "extra": "", "shape": [1, 32, 5], "elems": 480, "macs": 0, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.cnns.[6–8].body.11", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 2], "elems": 192, "macs": 0, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.attn.[6–8].W", "type": "Linear", "extra": "32→1", "shape": [1, 2, 1], "elems": 6, "macs": 192, "clean": false, "calls": 1, "par": 3, "seq": 1}, {"path": "raw.encoder.[0–3].ln1", "type": "LayerNorm", "extra": "[128]", "shape": [1, 9, 128], "elems": 1152, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.encoder.[0–3].attn.q_proj", "type": "Linear", "extra": "128→128", "shape": [1, 9, 128], "elems": 1152, "macs": 147456, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.encoder.[0–3].attn.k_proj", "type": "Linear", "extra": "128→128", "shape": [1, 9, 128], "elems": 1152, "macs": 147456, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.encoder.[0–3].attn.v_proj", "type": "Linear", "extra": "128→128", "shape": [1, 9, 128], "elems": 1152, "macs": 147456, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.encoder.[0–3].attn.qk", "type": "MatMul", "extra": "", "shape": [1, 8, 9, 9], "elems": 648, "macs": 10368, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.encoder.[0–3].attn.av", "type": "MatMul", "extra": "", "shape": [1, 8, 9, 16], "elems": 1152, "macs": 10368, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.encoder.[0–3].attn.o_proj", "type": "Linear", "extra": "128→128", "shape": [1, 9, 128], "elems": 1152, "macs": 147456, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.encoder.[0–3].ln2", "type": "LayerNorm", "extra": "[128]", "shape": [1, 9, 128], "elems": 1152, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.encoder.[0–3].mlp.fc1", "type": "Linear", "extra": "128→64", "shape": [1, 9, 64], "elems": 576, "macs": 73728, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.encoder.[0–3].mlp.act", "type": "ReLU", "extra": "", "shape": [1, 9, 64], "elems": 576, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.encoder.[0–3].mlp.fc2", "type": "Linear", "extra": "64→128", "shape": [1, 9, 128], "elems": 1152, "macs": 73728, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "raw.norm", "type": "LayerNorm", "extra": "[128]", "shape": [1, 9, 128], "elems": 1152, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "spec.cnns.[0–8].stem.0", "type": "SamePadConv1d", "extra": "k=5, s=3, 31→32, same-pad", "shape": [1, 32, 43], "elems": 12384, "macs": 1919520, "clean": true, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.cnns.[0–8].stem.1", "type": "ReLU", "extra": "", "shape": [1, 32, 43], "elems": 12384, "macs": 0, "clean": true, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.cnns.[0–8].stem.2", "type": "SamePadConv1d", "extra": "k=5, s=3, 32→32, same-pad", "shape": [1, 32, 15], "elems": 4320, "macs": 691200, "clean": true, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.cnns.[0–8].stem.3", "type": "ReLU", "extra": "", "shape": [1, 32, 15], "elems": 4320, "macs": 0, "clean": true, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.cnns.[0–8].stem.4", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 7], "elems": 2016, "macs": 0, "clean": true, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.cnns.[0–8].body.0", "type": "SamePadConv1d", "extra": "k=3, s=2, 32→64, same-pad", "shape": [1, 64, 4], "elems": 2304, "macs": 221184, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.cnns.[0–8].body.1", "type": "ReLU", "extra": "", "shape": [1, 64, 4], "elems": 2304, "macs": 0, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.cnns.[0–8].body.2", "type": "SamePadConv1d", "extra": "k=3, s=2, 64→32, same-pad", "shape": [1, 32, 2], "elems": 576, "macs": 110592, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.cnns.[0–8].body.3", "type": "ReLU", "extra": "", "shape": [1, 32, 2], "elems": 576, "macs": 0, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.cnns.[0–8].body.4", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 1], "elems": 288, "macs": 0, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.attn.[0–8].qk", "type": "MatMul", "extra": "", "shape": [1, 1, 1], "elems": 9, "macs": 288, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.attn.[0–8].av", "type": "MatMul", "extra": "", "shape": [1, 1, 32], "elems": 288, "macs": 288, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "spec.token_proj", "type": "Linear", "extra": "64→64", "shape": [1, 64], "elems": 576, "macs": 36864, "clean": true, "calls": 9, "par": 1, "seq": 1}, {"path": "spec.encoder.[0–3].ln1", "type": "LayerNorm", "extra": "[64]", "shape": [1, 9, 64], "elems": 576, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.encoder.[0–3].attn.q_proj", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.encoder.[0–3].attn.k_proj", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.encoder.[0–3].attn.v_proj", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.encoder.[0–3].attn.qk", "type": "MatMul", "extra": "", "shape": [1, 4, 9, 9], "elems": 324, "macs": 5184, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.encoder.[0–3].attn.av", "type": "MatMul", "extra": "", "shape": [1, 4, 9, 16], "elems": 576, "macs": 5184, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.encoder.[0–3].attn.o_proj", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.encoder.[0–3].ln2", "type": "LayerNorm", "extra": "[64]", "shape": [1, 9, 64], "elems": 576, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.encoder.[0–3].mlp.fc1", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.encoder.[0–3].mlp.act", "type": "ReLU", "extra": "", "shape": [1, 9, 64], "elems": 576, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.encoder.[0–3].mlp.fc2", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "spec.norm", "type": "LayerNorm", "extra": "[64]", "shape": [1, 9, 64], "elems": 576, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "hand.cnns.[0–8].stem.0", "type": "SamePadConv1d", "extra": "k=3, s=2, 1→32, same-pad", "shape": [1, 32, 86], "elems": 24768, "macs": 74304, "clean": true, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].stem.1", "type": "ReLU", "extra": "", "shape": [1, 32, 86], "elems": 24768, "macs": 0, "clean": true, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].stem.2", "type": "SamePadConv1d", "extra": "k=3, s=2, 32→32, same-pad", "shape": [1, 32, 43], "elems": 12384, "macs": 1188864, "clean": true, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].stem.3", "type": "ReLU", "extra": "", "shape": [1, 32, 43], "elems": 12384, "macs": 0, "clean": true, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].stem.4", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 21], "elems": 6048, "macs": 0, "clean": true, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].body.0", "type": "SamePadConv1d", "extra": "k=3, s=2, 32→64, same-pad", "shape": [1, 64, 11], "elems": 6336, "macs": 608256, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].body.1", "type": "ReLU", "extra": "", "shape": [1, 64, 11], "elems": 6336, "macs": 0, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].body.2", "type": "SamePadConv1d", "extra": "k=2, s=1, 64→64, same-pad", "shape": [1, 64, 11], "elems": 6336, "macs": 811008, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].body.3", "type": "ReLU", "extra": "", "shape": [1, 64, 11], "elems": 6336, "macs": 0, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].body.4", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 64, 5], "elems": 2880, "macs": 0, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].body.7", "type": "SamePadConv1d", "extra": "k=2, s=1, 64→32, same-pad", "shape": [1, 32, 5], "elems": 1440, "macs": 184320, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].body.8", "type": "ReLU", "extra": "", "shape": [1, 32, 5], "elems": 1440, "macs": 0, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.cnns.[0–8].body.9", "type": "MaxPool1d", "extra": "k=2, s=2", "shape": [1, 32, 2], "elems": 576, "macs": 0, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.attn.[0–8].qk", "type": "MatMul", "extra": "", "shape": [1, 2, 2], "elems": 36, "macs": 1152, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.attn.[0–8].av", "type": "MatMul", "extra": "", "shape": [1, 2, 32], "elems": 576, "macs": 1152, "clean": false, "calls": 1, "par": 9, "seq": 1}, {"path": "hand.token_proj", "type": "Linear", "extra": "64→64", "shape": [1, 64], "elems": 576, "macs": 36864, "clean": true, "calls": 9, "par": 1, "seq": 1}, {"path": "hand.encoder.[0–3].ln1", "type": "LayerNorm", "extra": "[64]", "shape": [1, 9, 64], "elems": 576, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.encoder.[0–3].attn.q_proj", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.encoder.[0–3].attn.k_proj", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.encoder.[0–3].attn.v_proj", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.encoder.[0–3].attn.qk", "type": "MatMul", "extra": "", "shape": [1, 4, 9, 9], "elems": 324, "macs": 5184, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.encoder.[0–3].attn.av", "type": "MatMul", "extra": "", "shape": [1, 4, 9, 16], "elems": 576, "macs": 5184, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.encoder.[0–3].attn.o_proj", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.encoder.[0–3].ln2", "type": "LayerNorm", "extra": "[64]", "shape": [1, 9, 64], "elems": 576, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.encoder.[0–3].mlp.fc1", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.encoder.[0–3].mlp.act", "type": "ReLU", "extra": "", "shape": [1, 9, 64], "elems": 576, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.encoder.[0–3].mlp.fc2", "type": "Linear", "extra": "64→64", "shape": [1, 9, 64], "elems": 576, "macs": 36864, "clean": false, "calls": 1, "par": 1, "seq": 4}, {"path": "hand.norm", "type": "LayerNorm", "extra": "[64]", "shape": [1, 9, 64], "elems": 576, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "fc", "type": "Linear", "extra": "256→5", "shape": [1, 5], "elems": 5, "macs": 1280, "clean": true, "calls": 1, "par": 1, "seq": 1}], "params_all": 2237821, "params_note": "excludes the 3 sub-model heads used only when a sub-model runs alone (1,295 parameters)"}, {"id": "lsm", "name": "LSM-Base", "period_s": 18000, "period": "5-h window", "params": 85095168, "note": "Only the encoder runs at inference, on all 180 tokens (nothing is masked).", "splits": [{"label": "Minute-level features", "shape": "26 × 300", "ein": 7800, "ef": 0, "macs": 0, "params": 0, "act": 0, "note": "The wearable already computes these features; that cost is not counted.", "short": "raw", "group": "Input"}, {"label": "Patch embedding (input cut into tiles)", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 6912000, "params": 39168, "act": 147240, "note": "", "short": "patch", "group": "Patch embedding"}, {"label": "Transformer block 1", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 1330698240, "params": 7127040, "act": 691200, "note": "", "short": "B1", "group": "Transformer ×12"}, {"label": "Transformer block 2", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 2654484480, "params": 14214912, "act": 691200, "note": "", "short": "B2", "group": "Transformer ×12"}, {"label": "Transformer block 3", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 3978270720, "params": 21302784, "act": 691200, "note": "", "short": "B3", "group": "Transformer ×12"}, {"label": "Transformer block 4", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 5302056960, "params": 28390656, "act": 691200, "note": "", "short": "B4", "group": "Transformer ×12"}, {"label": "Transformer block 5", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 6625843200, "params": 35478528, "act": 691200, "note": "", "short": "B5", "group": "Transformer ×12"}, {"label": "Transformer block 6", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 7949629440, "params": 42566400, "act": 691200, "note": "", "short": "B6", "group": "Transformer ×12"}, {"label": "Transformer block 7", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 9273415680, "params": 49654272, "act": 691200, "note": "", "short": "B7", "group": "Transformer ×12"}, {"label": "Transformer block 8", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 10597201920, "params": 56742144, "act": 691200, "note": "", "short": "B8", "group": "Transformer ×12"}, {"label": "Transformer block 9", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 11920988160, "params": 63830016, "act": 691200, "note": "", "short": "B9", "group": "Transformer ×12"}, {"label": "Transformer block 10", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 13244774400, "params": 70917888, "act": 691200, "note": "", "short": "B10", "group": "Transformer ×12"}, {"label": "Transformer block 11", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 14568560640, "params": 78005760, "act": 691200, "note": "", "short": "B11", "group": "Transformer ×12"}, {"label": "Transformer block 12", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 15892346880, "params": 85093632, "act": 691200, "note": "", "short": "B12", "group": "Transformer ×12"}, {"label": "Final normalisation (LayerNorm)", "shape": "180 × 768", "ein": 0, "ef": 138240, "macs": 15892346880, "params": 85095168, "act": 691200, "note": "", "short": "LN", "group": "Transformer ×12"}, {"label": "Final embedding (average over all tokens)", "shape": "768", "ein": 0, "ef": 768, "macs": 15892346880, "params": 85095168, "act": 691200, "note": "Enough for classification. Imputation and forecasting need the per-token output from the previous dist point.", "short": "emb", "group": "Output"}], "layers": [{"path": "patch_embed", "type": "Conv2d", "extra": "k=(5, 10), s=(5, 10), 1→768", "shape": [1, 768, 6, 30], "elems": 138240, "macs": 6912000, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "encoder.[0–11].ln1", "type": "LayerNorm", "extra": "[768]", "shape": [1, 180, 768], "elems": 138240, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "encoder.[0–11].attn.q_proj", "type": "Linear", "extra": "768→768", "shape": [1, 180, 768], "elems": 138240, "macs": 106168320, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "encoder.[0–11].attn.k_proj", "type": "Linear", "extra": "768→768", "shape": [1, 180, 768], "elems": 138240, "macs": 106168320, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "encoder.[0–11].attn.v_proj", "type": "Linear", "extra": "768→768", "shape": [1, 180, 768], "elems": 138240, "macs": 106168320, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "encoder.[0–11].attn.qk", "type": "MatMul", "extra": "", "shape": [1, 12, 180, 180], "elems": 388800, "macs": 24883200, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "encoder.[0–11].attn.av", "type": "MatMul", "extra": "", "shape": [1, 12, 180, 64], "elems": 138240, "macs": 24883200, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "encoder.[0–11].attn.o_proj", "type": "Linear", "extra": "768→768", "shape": [1, 180, 768], "elems": 138240, "macs": 106168320, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "encoder.[0–11].ln2", "type": "LayerNorm", "extra": "[768]", "shape": [1, 180, 768], "elems": 138240, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "encoder.[0–11].mlp.fc1", "type": "Linear", "extra": "768→3072", "shape": [1, 180, 3072], "elems": 552960, "macs": 424673280, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "encoder.[0–11].mlp.act", "type": "GELU", "extra": "", "shape": [1, 180, 3072], "elems": 552960, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "encoder.[0–11].mlp.fc2", "type": "Linear", "extra": "3072→768", "shape": [1, 180, 768], "elems": 138240, "macs": 424673280, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "enc_norm", "type": "LayerNorm", "extra": "[768]", "shape": [1, 180, 768], "elems": 138240, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}], "params_all": 110735154, "params_note": "encoder only; the decoder is used only in pre-training"}, {"id": "sleepfm", "name": "SleepFM encoder", "period_s": 300, "period": "5-min chunk", "params": 4831656, "note": "Each inference covers a 5-min chunk of all 23 channels. The disease and sleep-stage heads run on the phone over the whole night.", "splits": [{"label": "Raw PSG, 23 channels at 128 Hz", "shape": "23 × 38400", "ein": 883200, "ef": 0, "macs": 0, "params": 0, "act": 0, "note": "", "short": "raw", "group": "Input"}, {"label": "Tokenizer conv stage 1 (per channel, per 5 s)", "shape": "23·60 × 4 × 320", "ein": 0, "ef": 1766400, "macs": 8832000, "params": 2592, "act": 2560, "note": "", "short": "conv1", "group": "Tokenizer CNN (per channel)"}, {"label": "Tokenizer conv stage 2 (per channel, per 5 s)", "shape": "23·60 × 8 × 160", "ein": 0, "ef": 1766400, "macs": 44160000, "params": 5336, "act": 2560, "note": "", "short": "conv2", "group": "Tokenizer CNN (per channel)"}, {"label": "Tokenizer conv stage 3 (per channel, per 5 s)", "shape": "23·60 × 16 × 80", "ein": 0, "ef": 1766400, "macs": 114816000, "params": 8584, "act": 2560, "note": "", "short": "conv3", "group": "Tokenizer CNN (per channel)"}, {"label": "Tokenizer conv stage 4 (per channel, per 5 s)", "shape": "23·60 × 32 × 40", "ein": 0, "ef": 1766400, "macs": 256128000, "params": 13800, "act": 2560, "note": "", "short": "conv4", "group": "Tokenizer CNN (per channel)"}, {"label": "Tokenizer conv stage 5 (per channel, per 5 s)", "shape": "23·60 × 64 × 20", "ein": 0, "ef": 1766400, "macs": 538752000, "params": 26792, "act": 2560, "note": "", "short": "conv5", "group": "Tokenizer CNN (per channel)"}, {"label": "Tokenizer conv stage 6 (per channel, per 5 s)", "shape": "23·60 × 128 × 10", "ein": 0, "ef": 1766400, "macs": 1104000000, "params": 70696, "act": 2560, "note": "", "short": "conv6", "group": "Tokenizer CNN (per channel)"}, {"label": "5-s tokens (one per channel per 5 s)", "shape": "23 × 60 × 128", "ein": 0, "ef": 176640, "macs": 1126609920, "params": 87208, "act": 2560, "note": "", "short": "tokens", "group": "Tokenizer CNN (per channel)"}, {"label": "After channel pooling (channels merged within each modality)", "shape": "4 × 60 × 128", "ein": 0, "ef": 30720, "macs": 1943162880, "params": 680232, "act": 21760, "note": "", "short": "pool", "group": "Channel pooling"}, {"label": "Temporal transformer layer 1", "shape": "4 × 60 × 128", "ein": 0, "ef": 30720, "macs": 2088407040, "params": 1273512, "act": 130560, "note": "", "short": "L1", "group": "Transformer ×6"}, {"label": "Temporal transformer layer 2", "shape": "4 × 60 × 128", "ein": 0, "ef": 30720, "macs": 2233651200, "params": 1866536, "act": 130560, "note": "", "short": "L2", "group": "Transformer ×6"}, {"label": "Temporal transformer layer 3", "shape": "4 × 60 × 128", "ein": 0, "ef": 30720, "macs": 2378895360, "params": 2459560, "act": 130560, "note": "", "short": "L3", "group": "Transformer ×6"}, {"label": "Temporal transformer layer 4", "shape": "4 × 60 × 128", "ein": 0, "ef": 30720, "macs": 2524139520, "params": 3052584, "act": 130560, "note": "", "short": "L4", "group": "Transformer ×6"}, {"label": "Temporal transformer layer 5", "shape": "4 × 60 × 128", "ein": 0, "ef": 30720, "macs": 2669383680, "params": 3645608, "act": 130560, "note": "", "short": "L5", "group": "Transformer ×6"}, {"label": "Temporal transformer layer 6", "shape": "4 × 60 × 128", "ein": 0, "ef": 30720, "macs": 2814627840, "params": 4238632, "act": 130560, "note": "", "short": "L6", "group": "Transformer ×6"}, {"label": "5-min summary (average over time)", "shape": "4 × 128", "ein": 0, "ef": 512, "macs": 2959872000, "params": 4831656, "act": 130560, "note": "The paper's disease and sleep-stage heads need the 5-s outputs of transformer layer 6, so this point can't serve those tasks and is never picked as the best choice.", "short": "emb", "group": "Output", "task_ok": false}], "layers": [{"path": "patch_embedding.tokenizer.0", "type": "Conv1d", "extra": "k=5, s=2, 1→4", "shape": [600, 4, 320], "elems": 1766400, "macs": 8832000, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.1", "type": "BatchNorm1d", "extra": "", "shape": [600, 4, 320], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.2", "type": "ELU", "extra": "", "shape": [600, 4, 320], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.3", "type": "LayerNorm", "extra": "[4, 320]", "shape": [600, 4, 320], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.4", "type": "Conv1d", "extra": "k=5, s=2, 4→8", "shape": [600, 8, 160], "elems": 1766400, "macs": 35328000, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.5", "type": "BatchNorm1d", "extra": "", "shape": [600, 8, 160], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.6", "type": "ELU", "extra": "", "shape": [600, 8, 160], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.7", "type": "LayerNorm", "extra": "[8, 160]", "shape": [600, 8, 160], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.8", "type": "Conv1d", "extra": "k=5, s=2, 8→16", "shape": [600, 16, 80], "elems": 1766400, "macs": 70656000, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.9", "type": "BatchNorm1d", "extra": "", "shape": [600, 16, 80], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.10", "type": "ELU", "extra": "", "shape": [600, 16, 80], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.11", "type": "LayerNorm", "extra": "[16, 80]", "shape": [600, 16, 80], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.12", "type": "Conv1d", "extra": "k=5, s=2, 16→32", "shape": [600, 32, 40], "elems": 1766400, "macs": 141312000, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.13", "type": "BatchNorm1d", "extra": "", "shape": [600, 32, 40], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.14", "type": "ELU", "extra": "", "shape": [600, 32, 40], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.15", "type": "LayerNorm", "extra": "[32, 40]", "shape": [600, 32, 40], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.16", "type": "Conv1d", "extra": "k=5, s=2, 32→64", "shape": [600, 64, 20], "elems": 1766400, "macs": 282624000, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.17", "type": "BatchNorm1d", "extra": "", "shape": [600, 64, 20], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.18", "type": "ELU", "extra": "", "shape": [600, 64, 20], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.19", "type": "LayerNorm", "extra": "[64, 20]", "shape": [600, 64, 20], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.20", "type": "Conv1d", "extra": "k=5, s=2, 64→128", "shape": [600, 128, 10], "elems": 1766400, "macs": 565248000, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.21", "type": "BatchNorm1d", "extra": "", "shape": [600, 128, 10], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.22", "type": "ELU", "extra": "", "shape": [600, 128, 10], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.23", "type": "LayerNorm", "extra": "[128, 10]", "shape": [600, 128, 10], "elems": 1766400, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.24", "type": "AdaptiveAvgPool1d", "extra": "", "shape": [600, 128, 1], "elems": 176640, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.25", "type": "Flatten", "extra": "", "shape": [600, 128], "elems": 176640, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "patch_embedding.tokenizer.26", "type": "Linear", "extra": "128→128", "shape": [600, 128], "elems": 176640, "macs": 22609920, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "spatial_pooling.transformer_layer.self_attn", "type": "MultiheadAttention", "extra": "d=128, heads=8", "shape": [60, 10, 128], "elems": 176640, "macs": 93035520, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "spatial_pooling.transformer_layer.norm1", "type": "LayerNorm", "extra": "[128]", "shape": [60, 10, 128], "elems": 176640, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "spatial_pooling.transformer_layer.linear1", "type": "Linear", "extra": "128→2048", "shape": [60, 10, 2048], "elems": 2826240, "macs": 361758720, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "spatial_pooling.transformer_layer.linear2", "type": "Linear", "extra": "2048→128", "shape": [60, 10, 128], "elems": 176640, "macs": 361758720, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "spatial_pooling.transformer_layer.norm2", "type": "LayerNorm", "extra": "[128]", "shape": [60, 10, 128], "elems": 176640, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "positional_encoding", "type": "PositionalEncoding", "extra": "", "shape": [1, 60, 128], "elems": 30720, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "layer_norm", "type": "LayerNorm", "extra": "[128]", "shape": [1, 60, 128], "elems": 30720, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "transformer_encoder.layers.[0–5].norm1", "type": "LayerNorm", "extra": "[128]", "shape": [1, 60, 128], "elems": 30720, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 6}, {"path": "transformer_encoder.layers.[0–5].self_attn", "type": "MultiheadAttention", "extra": "d=128, heads=8", "shape": [1, 60, 128], "elems": 30720, "macs": 19415040, "clean": false, "calls": 1, "par": 1, "seq": 6}, {"path": "transformer_encoder.layers.[0–5].norm2", "type": "LayerNorm", "extra": "[128]", "shape": [1, 60, 128], "elems": 30720, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 6}, {"path": "transformer_encoder.layers.[0–5].linear1", "type": "Linear", "extra": "128→2048", "shape": [1, 60, 2048], "elems": 491520, "macs": 62914560, "clean": false, "calls": 1, "par": 1, "seq": 6}, {"path": "transformer_encoder.layers.[0–5].linear2", "type": "Linear", "extra": "2048→128", "shape": [1, 60, 128], "elems": 30720, "macs": 62914560, "clean": false, "calls": 1, "par": 1, "seq": 6}, {"path": "temporal_pooling.transformer_layer.self_attn", "type": "MultiheadAttention", "extra": "d=128, heads=8", "shape": [1, 60, 128], "elems": 30720, "macs": 19415040, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "temporal_pooling.transformer_layer.norm1", "type": "LayerNorm", "extra": "[128]", "shape": [1, 60, 128], "elems": 30720, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "temporal_pooling.transformer_layer.linear1", "type": "Linear", "extra": "128→2048", "shape": [1, 60, 2048], "elems": 491520, "macs": 62914560, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "temporal_pooling.transformer_layer.linear2", "type": "Linear", "extra": "2048→128", "shape": [1, 60, 128], "elems": 30720, "macs": 62914560, "clean": false, "calls": 1, "par": 1, "seq": 1}, {"path": "temporal_pooling.transformer_layer.norm2", "type": "LayerNorm", "extra": "[128]", "shape": [1, 60, 128], "elems": 30720, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 1}], "params_note": "encoder", "params_all": 4831656}, {"id": "sensorlm", "name": "SensorLM-B sensor tower", "period_s": 86400, "period": "1-day window", "params": 115448832, "note": "Only the sensor encoder would run on the wearable; the text encoder and caption decoder run on the phone.", "splits": [{"label": "Minute-level features (1 day)", "shape": "26 × 1440", "ein": 37440, "ef": 0, "macs": 0, "params": 0, "act": 0, "note": "The wearable already computes these features; that cost is not counted.", "short": "raw", "group": "Input"}, {"label": "Patch embedding (input cut into tiles)", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 28753920, "params": 1453824, "act": 1475136, "note": "", "short": "patch", "group": "Patch embedding"}, {"label": "Sensor encoder block 1", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 23077896192, "params": 10904064, "act": 7188480, "note": "", "short": "B1", "group": "Transformer ×12"}, {"label": "Sensor encoder block 2", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 46127038464, "params": 20354304, "act": 7188480, "note": "", "short": "B2", "group": "Transformer ×12"}, {"label": "Sensor encoder block 3", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 69176180736, "params": 29804544, "act": 7188480, "note": "", "short": "B3", "group": "Transformer ×12"}, {"label": "Sensor encoder block 4", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 92225323008, "params": 39254784, "act": 7188480, "note": "", "short": "B4", "group": "Transformer ×12"}, {"label": "Sensor encoder block 5", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 115274465280, "params": 48705024, "act": 7188480, "note": "", "short": "B5", "group": "Transformer ×12"}, {"label": "Sensor encoder block 6", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 138323607552, "params": 58155264, "act": 7188480, "note": "", "short": "B6", "group": "Transformer ×12"}, {"label": "Sensor encoder block 7", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 161372749824, "params": 67605504, "act": 7188480, "note": "", "short": "B7", "group": "Transformer ×12"}, {"label": "Sensor encoder block 8", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 184421892096, "params": 77055744, "act": 7188480, "note": "", "short": "B8", "group": "Transformer ×12"}, {"label": "Sensor encoder block 9", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 207471034368, "params": 86505984, "act": 7188480, "note": "", "short": "B9", "group": "Transformer ×12"}, {"label": "Sensor encoder block 10", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 230520176640, "params": 95956224, "act": 7188480, "note": "", "short": "B10", "group": "Transformer ×12"}, {"label": "Sensor encoder block 11", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 253569318912, "params": 105406464, "act": 7188480, "note": "", "short": "B11", "group": "Transformer ×12"}, {"label": "Sensor encoder block 12", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 276618461184, "params": 114856704, "act": 7188480, "note": "", "short": "B12", "group": "Transformer ×12"}, {"label": "Final normalisation (LayerNorm)", "shape": "1872 × 768", "ein": 0, "ef": 1437696, "macs": 276618461184, "params": 114858240, "act": 7188480, "note": "", "short": "LN", "group": "Transformer ×12"}, {"label": "Final sensor embedding (average + projection)", "shape": "768", "ein": 0, "ef": 768, "macs": 276619051008, "params": 115448832, "act": 7188480, "note": "Enough for zero-shot classification and retrieval. Captioning needs all 1872 tokens.", "short": "emb", "group": "Output"}], "layers": [{"path": "patch_embed", "type": "Conv2d", "extra": "k=(2, 10), s=(2, 10), 1→768", "shape": [1, 768, 13, 144], "elems": 1437696, "macs": 28753920, "clean": true, "calls": 1, "par": 1, "seq": 1}, {"path": "blocks.[0–11].ln1", "type": "LayerNorm", "extra": "[768]", "shape": [1, 1872, 768], "elems": 1437696, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].attn.q_proj", "type": "Linear", "extra": "768→768", "shape": [1, 1872, 768], "elems": 1437696, "macs": 1104150528, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].attn.k_proj", "type": "Linear", "extra": "768→768", "shape": [1, 1872, 768], "elems": 1437696, "macs": 1104150528, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].attn.v_proj", "type": "Linear", "extra": "768→768", "shape": [1, 1872, 768], "elems": 1437696, "macs": 1104150528, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].attn.qk", "type": "MatMul", "extra": "", "shape": [1, 12, 1872, 1872], "elems": 42052608, "macs": 2691366912, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].attn.av", "type": "MatMul", "extra": "", "shape": [1, 12, 1872, 64], "elems": 1437696, "macs": 2691366912, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].attn.o_proj", "type": "Linear", "extra": "768→768", "shape": [1, 1872, 768], "elems": 1437696, "macs": 1104150528, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].ln2", "type": "LayerNorm", "extra": "[768]", "shape": [1, 1872, 768], "elems": 1437696, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].mlp.gate", "type": "Linear", "extra": "768→3072", "shape": [1, 1872, 3072], "elems": 5750784, "macs": 4416602112, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].mlp.act", "type": "GELU", "extra": "", "shape": [1, 1872, 3072], "elems": 5750784, "macs": 0, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].mlp.up", "type": "Linear", "extra": "768→3072", "shape": [1, 1872, 3072], "elems": 5750784, "macs": 4416602112, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "blocks.[0–11].mlp.down", "type": "Linear", "extra": "3072→768", "shape": [1, 1872, 768], "elems": 1437696, "macs": 4416602112, "clean": false, "calls": 1, "par": 1, "seq": 12}, {"path": "norm", "type": "LayerNorm", "extra": "[768]", "shape": [1, 1872, 768], "elems": 1437696, "macs": 0, "clean": true, "calls": 1, "par": 1, "seq": 1}], "params_note": "sensor encoder + projection", "params_all": 115448832}]}