nx_pose_backprop_gate.nx
buildroot/runtime/nx_pose_backprop_gate.nx
about
nx_pose_backprop_gate.nx -- proves the MULTI-LAYER pose-net backprop COMPOSES correctly (the "scale build-2"
de-risk): a 2-layer conv net conv1(1->2) -> ReLU -> conv2(2->1), then the loss gradient is backpropagated through
conv2 (nx_f32_conv2d_backward) -> ReLU backward (f32_relu_bwd) -> conv1 (nx_f32_conv2d_backward). Inputs/weights
are integers chosen so every pre-activation is POSITIVE (ReLU = identity) -> the net is locally linear -> the
chained gradients are exact small integers, verified BIT-EXACT (no tolerance). This shows the training loop
already gated for one layer (nx_f32_conv_train_gate) chains correctly through DEPTH -- so a real backbone+head
pose net trains; only SCALE + labeled data remain. 1x1 convs at H=W=1 keep the arithmetic hand-checkable.
expect_exit: 0
dependencies 6 imports · 0 importers
imports: nx_syscalls.nxnx_f32_cvt.nxnx_f32_conv2d.nxnx_f32_conv2d_backward.nxnx_pose_cnn.nxnx_f32_train_ops.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| none |
functions
| 16 | func gp(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return sys_write(1, s, n) } |
| 17 | func gn(v: i64) -> i64 |
| 27 | func main(argc: i64, argv: *i64) -> i64 |