{
    "componentChunkName": "component---src-templates-note-note-js",
    "path": "/notes/NNUE",
    "result": {"data":{"mdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"NNUE (Efficiently Updatable Neural Networks) is Stockfish\\u2019s modern evaluation method, where a \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/lightweight-neural-network\",\n    \"title\": \"lightweight neural network\"\n  }, \"lightweight neural network\"), \" learns \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/positional-patterns\",\n    \"title\": \"positional patterns\"\n  }, \"positional patterns\"), \"\\u2014\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/king-safety\",\n    \"title\": \"king safety\"\n  }, \"king safety\"), \", \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/piece-square-relationships\",\n    \"title\": \"piece-square relationships\"\n  }, \"piece-square relationships\"), \", \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/pawn-structure\",\n    \"title\": \"pawn structure\"\n  }, \"pawn structure\"), \", \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/activity\",\n    \"title\": \"activity\"\n  }, \"activity\"), \", etc.\\u2014and outputs a numerical score for any position. Unlike large GPU-based networks, NNUE runs extremely fast on CPUs because it updates only the parts of the network affected by the last move, rather than recomputing everything from scratch. This gives Stockfish both the tactical strength of traditional handcrafted evaluation and the pattern-recognition ability of neural nets. It is the reason Stockfish\\u2019s \\u201Csense\\u201D of piece coordination and king danger became dramatically stronger after 2020.\"));\n}\n;\nMDXContent.isMDXComponent = true;","inboundReferences":[{"id":"f9296a6c-3517-567d-b536-7342843965cf","slug":"stockfish"}]}},"pageContext":{"slug":"NNUE","node":{"childMdx":{"slug":"NNUE"}}}},
    "staticQueryHashes": []}