| <!doctype html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <title>Neural Process Pocket Lab</title> |
| <style> |
| :root { color-scheme: dark; font-family: Inter, ui-sans-serif, system-ui; } |
| * { box-sizing: border-box; } |
| body { margin: 0; min-height: 100vh; background: #060817; color: #edf4ff; } |
| canvas { position: fixed; inset: 0; width: 100%; height: 100%; opacity: .55; } |
| main { position: relative; z-index: 1; width: min(1080px, 92vw); margin: auto; |
| padding: 72px 0 96px; } |
| .eyebrow { color: #73e6ff; letter-spacing: .18em; text-transform: uppercase; |
| font-size: .75rem; font-weight: 800; } |
| h1 { font-size: clamp(3rem, 8vw, 7rem); line-height: .9; margin: 14px 0 24px; |
| background: linear-gradient(120deg,#fff,#74e7ff 55%,#b48cff); |
| -webkit-background-clip: text; color: transparent; } |
| .lead { max-width: 760px; color: #b8c7e6; font-size: 1.2rem; line-height: 1.65; } |
| .actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 30px 0 48px; } |
| a { color: inherit; } |
| .button { padding: 12px 18px; border-radius: 999px; text-decoration: none; |
| background: #eaf8ff; color: #07101c; font-weight: 800; } |
| .button.alt { background: #171d38cc; color: #dce8ff; border: 1px solid #415078; } |
| .grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 20px; } |
| .card { border: 1px solid #344269; background: #0c1128dd; border-radius: 24px; |
| padding: 24px; backdrop-filter: blur(18px); box-shadow: 0 24px 80px #0008; } |
| h2 { margin-top: 0; } |
| pre { white-space: pre-wrap; word-break: break-word; color: #a9bddf; |
| max-height: 520px; overflow: auto; } |
| ul { max-height: 520px; overflow: auto; padding-left: 1.2rem; color: #a9bddf; } |
| li { margin: 8px 0; } |
| input { width: 100%; padding: 12px; border-radius: 12px; border: 1px solid #344269; |
| background: #070b1a; color: white; margin-bottom: 12px; } |
| @media (max-width: 780px) { .grid { grid-template-columns: 1fr; } } |
| </style> |
| </head> |
| <body> |
| <canvas id="field"></canvas> |
| <main> |
| <div class="eyebrow">Jacob Garcia · Hugging Face Model Foundry</div> |
| <h1>Neural Process Pocket Lab</h1> |
| <p class="lead">Interactive few-shot function distribution inference. This showcase backs up the |
| trained artifacts, measured evaluation, and complete runnable source.</p> |
| <div class="actions"> |
| <a class="button" href="https://huggingface.co/spaces/ARotting/neural-process-pocket-lab/tree/main">Explore every file</a> |
| <a class="button alt" href="https://huggingface.co/ARotting">View the full foundry</a> |
| </div> |
| <div class="grid"> |
| <section class="card"> |
| <h2>Verified project card</h2> |
| <pre># Neural Process Pocket |
|
|
| Neural Process Pocket is a Conditional Neural Process trained across a |
| distribution of sine functions. Five unordered context observations are encoded |
| into a task representation; a probabilistic decoder predicts the mean and |
| standard deviation at arbitrary target coordinates. |
|
|
| Evaluation covers RMSE, Gaussian negative log likelihood, and empirical 90% |
| interval coverage on unseen functions. A fixed-kernel RBF Gaussian Process is the |
| non-neural few-shot control. |
|
|
| ## Verified local result |
|
|
| The 12,866-parameter CNP reached 1.093 RMSE, 1.242 Gaussian NLL, and 88.76% |
| coverage for nominal 90% intervals across 500 unseen five-context-point tasks. |
| The fixed-kernel Gaussian Process reached 1.259 RMSE, 1.328 NLL, and 73.63% |
| coverage. |
|
|
| ```bash |
| uv run python projects/neural-process-pocket/train.py |
| uv run pytest tests/test_neural_process_pocket.py |
| ``` |
| </pre> |
| <h2>Evaluation snapshot</h2> |
| <pre>{ |
| "model": "Neural Process Pocket", |
| "parameters": 12866, |
| "best_step": 5000, |
| "benchmark": { |
| "conditional_neural_process": { |
| "rmse": 1.092705488204956, |
| "gaussian_nll": 1.241895318031311, |
| "coverage_90": 0.8876199722290039 |
| }, |
| "fixed_rbf_gaussian_process": { |
| "rmse": 1.2585044517936235, |
| "gaussian_nll": 1.3279816679794703, |
| "coverage_90": 0.73632 |
| }, |
| "tasks": 500, |
| "context_points_per_task": 5, |
| "targets_per_task": 100 |
| } |
| }</pre> |
| </section> |
| <section class="card"> |
| <h2>Backed-up artifact tree</h2> |
| <input id="filter" placeholder="Filter files…" autocomplete="off"> |
| <ul id="files"><li><code>README.md</code></li> |
| <li><code>__pycache__/app.cpython-311.pyc</code></li> |
| <li><code>__pycache__/model.cpython-311.pyc</code></li> |
| <li><code>app.py</code></li> |
| <li><code>artifacts/neural-process-pocket/evaluation.json</code></li> |
| <li><code>artifacts/neural-process-pocket/model.safetensors</code></li> |
| <li><code>data/heldout_tasks.parquet</code></li> |
| <li><code>model.py</code></li> |
| <li><code>requirements.txt</code></li> |
| <li><code>train.py</code></li></ul> |
| </section> |
| </div> |
| </main> |
| <script> |
| const canvas=document.querySelector('#field'),ctx=canvas.getContext('2d'); |
| let dots=[]; |
| function resize(){canvas.width=innerWidth;canvas.height=innerHeight; |
| dots=Array.from({length:90},()=>({x:Math.random()*innerWidth, |
| y:Math.random()*innerHeight,vx:(Math.random()-.5)*.35,vy:(Math.random()-.5)*.35}));} |
| function draw(){ctx.clearRect(0,0,canvas.width,canvas.height); |
| for(const d of dots){d.x=(d.x+d.vx+innerWidth)%innerWidth; |
| d.y=(d.y+d.vy+innerHeight)%innerHeight;ctx.fillStyle='#65dcff99'; |
| ctx.beginPath();ctx.arc(d.x,d.y,1.4,0,7);ctx.fill();}requestAnimationFrame(draw);} |
| addEventListener('resize',resize);resize();draw(); |
| document.querySelector('#filter').addEventListener('input',e=>{ |
| const q=e.target.value.toLowerCase();for(const li of document.querySelectorAll('li')) |
| li.hidden=!li.textContent.toLowerCase().includes(q);}); |
| </script> |
| </body> |
| </html> |