{
  "schemaVersion": 1,
  "lessonId": "networks-04",
  "contentHash": "d1e8c9915efd949a1601e7b22b00a7c21ba365e4e699d9cf35d95e316d8f69ce",
  "rendererHash": "a1bd5b648f4731ae5d5f0a24811c2540d1a0a132149ce589d17c4113509cbedf",
  "kind": "executed",
  "generatedAt": "2026-10-20T10:45:37.932032+00:00",
  "provenance": "recorded_cpu_computation",
  "environment": {
    "backend": "cpu",
    "deviceCount": 1,
    "jax": "0.9.2",
    "numpy": "2.4.4",
    "matplotlib": "3.10.8"
  },
  "stdout": "Held-out loss: 0.015700625 accuracy: 1.0 confusion:\n [[12  0]\n [ 0 12]]\n",
  "data": {
    "kind": "panels",
    "panels": [
      {
        "kind": "heatmap",
        "title": "Held-out image 0",
        "values": [
          [
            -0.13558466732501984,
            -0.1256769746541977,
            0.12430425733327866,
            0.07751082628965378,
            0.17465712130069733,
            0.09678526967763901,
            -0.08195130527019501,
            0.10282179713249207
          ],
          [
            0.05027154088020325,
            0.017185993492603302,
            -0.06558986753225327,
            0.0002224177442258224,
            -0.011759895831346512,
            0.07140281051397324,
            0.009959755465388298,
            0.1267796754837036
          ],
          [
            -0.061958860605955124,
            0.037688203155994415,
            0.039907388389110565,
            -0.06914708018302917,
            -0.09450128674507141,
            0.08108635991811752,
            0.041395239531993866,
            -0.013000414706766605
          ],
          [
            1.031549334526062,
            0.9459725022315979,
            1.0190678834915161,
            0.9515898823738098,
            1.0151031017303467,
            1.0788871049880981,
            0.9728295803070068,
            1.0679819583892822
          ],
          [
            -0.08273594826459885,
            -0.02307926118373871,
            -0.10917940735816956,
            -0.008046886883676052,
            0.006292326841503382,
            -0.015781013295054436,
            -0.021414056420326233,
            0.10721557587385178
          ],
          [
            0.11390342563390732,
            -0.09725048393011093,
            0.09392915666103363,
            -0.13784557580947876,
            -0.058758340775966644,
            -0.013875647448003292,
            0.008884848095476627,
            -0.08379333466291428
          ],
          [
            -0.05779750272631645,
            0.006132305599749088,
            -0.05547381937503815,
            -0.051296062767505646,
            0.05330107733607292,
            0.07453768700361252,
            -0.004804402589797974,
            0.0014558329712599516
          ],
          [
            -0.0015678494237363338,
            -0.036359064280986786,
            -0.04091145843267441,
            -0.08301956951618195,
            0.05187109857797623,
            -0.0067327735014259815,
            -0.010995151475071907,
            0.01604340970516205
          ]
        ],
        "unit": "pixel value"
      },
      {
        "kind": "heatmap",
        "title": "Held-out confusion",
        "values": [
          [
            12,
            0
          ],
          [
            0,
            12
          ]
        ],
        "rows": [
          "actual horizontal",
          "actual vertical"
        ],
        "columns": [
          "pred. horizontal",
          "pred. vertical"
        ],
        "unit": "example count"
      }
    ]
  },
  "diagram": {
    "title": "Pixels behind one convolution output",
    "prediction": "What stays shared when the kernel moves?",
    "reading": "The purple square selects one three-by-three patch within a five-by-five input. Each selected cell contributes to one output under the declared convolution. Moving the patch reuses weights. This separate shape example has three valid positions per axis at stride one without padding; it does not display learned weights.",
    "alt": "The purple square selects one three-by-three patch within a five-by-five input. Each selected cell contributes to one output under the declared convolution. Moving the patch reuses weights. This separate shape example has three valid positions per axis at stride one without padding; it does not display learned weights.",
    "scope": "Architecture and dataflow mechanism diagram.",
    "height": 5.5,
    "panel": {
      "kind": "receptive-field"
    }
  }
}
