summaryrefslogtreecommitdiff
path: root/sdil/bci.py
diff options
context:
space:
mode:
Diffstat (limited to 'sdil/bci.py')
-rw-r--r--sdil/bci.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/sdil/bci.py b/sdil/bci.py
index 9847ffe..c8408e3 100644
--- a/sdil/bci.py
+++ b/sdil/bci.py
@@ -224,7 +224,8 @@ class BCISDIL:
error = self.cfg.target - cursor
loss = 0.5 * error.square()
- did_perturb = global_step % self.cfg.perturb_every == 0
+ did_perturb = (learn_vectorizer
+ and global_step % self.cfg.perturb_every == 0)
causal_target = None
if did_perturb:
causal_target = self.causal_targets(
@@ -270,6 +271,11 @@ def run_day(model, trajectories, day, *, control_gain=1.0,
success = torch.zeros_like(active)
events = []
for step_index in range(cfg.steps_per_episode):
+ previous_soma_for_record = soma
+ previous_error_for_record = (torch.full(
+ (episodes,), abs(cfg.target), device=model.device, dtype=model.dtype)
+ if previous_abs_error is None
+ else previous_abs_error)
record = model.step(
trajectories.context[day, :, step_index],
trajectories.process_noise[day, :, step_index],
@@ -288,6 +294,8 @@ def run_day(model, trajectories, day, *, control_gain=1.0,
} | {
"active": active.detach().cpu().clone(),
"success": success.detach().cpu().clone(),
+ "previous_soma": previous_soma_for_record.detach().cpu().clone(),
+ "previous_abs_error": previous_error_for_record.detach().cpu().clone(),
"step": step_index,
})
soma = record["soma"]