fix: kNN zero-variance dims get inf std; hot-start SAC from saved model
- nucon/model.py: constant input dimensions (zero variance in training data) now get std=inf so they contribute 0 to normalised kNN distance instead of causing catastrophic OOD from tiny float epsilon - scripts/train_sac.py: add --load, --steps, --out CLI args; --load hot-starts actor/critic weights from a previous run (learning_starts=0) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+4
-1
@@ -95,7 +95,10 @@ class ReactorKNNModel:
|
||||
self._raw_states = np.array(raw)
|
||||
self._rates = np.array(rates)
|
||||
self._mean = self._raw_states.mean(axis=0)
|
||||
self._std = self._raw_states.std(axis=0) + 1e-8
|
||||
raw_std = self._raw_states.std(axis=0)
|
||||
# Dimensions with zero variance in the training data carry no distance information.
|
||||
# Use inf so they contribute 0 to normalised L2 (i.e., are ignored in kNN lookup).
|
||||
self._std = np.where(raw_std < 1e-6, np.inf, raw_std)
|
||||
self._states = (self._raw_states - self._mean) / self._std
|
||||
|
||||
def _lookup(self, s: np.ndarray):
|
||||
|
||||
Reference in New Issue
Block a user