krystv commited on
Commit
5ea2e1a
·
verified ·
1 Parent(s): 97df341

docs: e2e verification + Keras from_logits loss-instance fix

Browse files
docs/ARCHITECTURE_PARAM_OWNERSHIP.md CHANGED
@@ -174,6 +174,15 @@ no-selection state) lets the user enable/clear training, pick an optimizer + LR
174
  loss, and shows the live `train_summary` projected from Rust. It dispatches
175
  `set_train_config` through the zustand store. `npm run build` (tsc + vite) passes.
176
 
 
 
 
 
 
 
 
 
 
177
  ## Test coverage
178
  98 Rust tests pass (0 warnings) — added `loss_mean_is_scalar_none_is_elementwise`,
179
  `cross_entropy_none_drops_class_axis` (nflow-ops) and `pytorch_loss_in_forward`,
 
174
  loss, and shows the live `train_summary` projected from Rust. It dispatches
175
  `set_train_config` through the zustand store. `npm run build` (tsc + vite) passes.
176
 
177
+ **End-to-end verification:** `examples/e2e_intents.rs` builds an MLP classifier
178
+ (Input→Linear64→ReLU→Linear10→Output) entirely through `Session` intents — the
179
+ exact vocabulary the UI uses — attaches a TrainConfig via `SetTrainConfig`, and
180
+ exports both backends. The exported code was run verbatim: PyTorch trains
181
+ (loss 2.32→2.00), Keras `compile()/fit()` trains (2.51→2.28). The Keras emitter
182
+ now emits the compile-loss as a proper **instance with `from_logits=True`** for
183
+ logit-producing losses (the graph emits raw logits) — the string form would
184
+ default to `from_logits=False` and be numerically wrong.
185
+
186
  ## Test coverage
187
  98 Rust tests pass (0 warnings) — added `loss_mean_is_scalar_none_is_elementwise`,
188
  `cross_entropy_none_drops_class_axis` (nflow-ops) and `pytorch_loss_in_forward`,