Manuscript Psy03-D@1 · Psy03-D-v1.tex · listing · 3e18951d
Listing: Listing
Unexecuted unit-test specifications · lines 2661–2762
def proposed_tests():
# These are specifications; no executed pass is asserted.
points = torch.tensor(
[[2., 1.], [1., 2.], [-2., 1.], [-1., 2.],
[-2., -1.], [-1., -2.], [2., -1.], [1., -2.]],
dtype=torch.float64
)
table = rule_table(points)
assert torch.equal(table[:, 1], table[:, 2])
votes = torch.stack(
[(table == label).sum(dim=1) for label in range(4)], dim=1
)
assert float(votes.max(dim=1).values.double().mean()) / 4.0 == 0.75
chosen_votes = (table == table[:, 1, None]).sum(dim=1)
assert torch.equal(chosen_votes, votes.max(dim=1).values)
expected = torch.tensor(
[[0., .5, .5, .75], [.5, 0., 0., .5],
[.5, 0., 0., .5], [.75, .5, .5, 0.]],
dtype=torch.float64
)
observed = torch.empty((4, 4), dtype=torch.float64)
for r in range(4):
for s in range(4):
observed[r, s] = (table[:, r] != table[:, s]).double().mean()
assert torch.equal(observed, expected)
# Old-function responses without adjacent response repetition.
alternating = torch.tensor(
[[-2., 1.], [2., -1.]] * 6, dtype=torch.float64
)
rules = torch.tensor([1] + [0] * 11, dtype=torch.long)
old_predictions = rule_table(alternating)[:, 1]
metrics = sequence_metrics(
alternating, rules, old_predictions, post_window=10
)
assert metrics["old_fraction_sample"] == 1.0
assert metrics["repeated_error_fraction_sample"] == 0.0
constant = torch.zeros(12, dtype=torch.long)
metrics = sequence_metrics(alternating, rules, constant, post_window=10)
assert metrics["old_fraction_sample"] == 0.0
assert metrics["repeated_error_fraction_sample"] == 1.0
# Zero-denominator certification remains unresolved.
certificate = ratio_certificate(
[{"p": 0.0, "n": 0.0}] * 20, "p", "n"
)
assert certificate["status"] == "unresolved_denominator"
event = first_completion(torch.tensor([1, 1, 1, 1, 0]))
censored = first_completion(torch.tensor([0, 0, 0, 0, 0]))
assert event["first_completion"] == 5 and not event["censored"]
assert censored["first_completion"] is None and censored["censored"]
assert event["restricted_time"] == censored["restricted_time"]
layer = ReferenceMaskedLinear(2, 1)
with torch.no_grad():
layer.weight.copy_(torch.tensor([[3., 2.]], dtype=torch.float64))
layer.capture_dense_reference()
deleted = layer.delete_exact(1)
assert deleted.tolist() == [1]
layer.zero_grad(set_to_none=True)
layer.begin_scoring()
loss = layer(torch.ones((1, 2), dtype=torch.float64)).square().sum()
loss.backward()
effective_score = layer.effective_gradient().clone()
assert layer.weight.grad[0, 1].item() == 0.0
assert effective_score[0, 1].item() != 0.0
layer.end_scoring()
clone = copy.deepcopy(layer)
result = clone.reopen_exact(1, effective_score, scale=1.0)
assert result["selected"].tolist() == [1]
assert clone.weight[0, 1].item() == 2.0
assert layer.weight[0, 1].item() == 0.0
# Exact interpolation remainder for q(d)=d^2 on [0,1].
rows = [
{"candidate_id": "left", "displacement": 0.0,
"endpoint": 0.0, "radius": 0.0, "path_id": "quadratic"},
{"candidate_id": "right", "displacement": 1.0,
"endpoint": 1.0, "radius": 0.0, "path_id": "quadratic"},
]
record = matching_record(rows, 0.5, 0.01, curvature=2.0)
assert record["status"] == "bracketed_surrogate"
assert record["estimate"] == 0.5
assert record["allowance"] == 0.25
assert abs(record["estimate"] - 0.5**2) == record["allowance"]
# Feedback inputs contain the preceding label only.
task = make_uncued_task(3, 12, 4, seed=0)
feedback = observation_tensor(task, "past_target_feedback")
assert bool((feedback[:, 0, 2:] == 0).all())
assert torch.equal(
feedback[:, 1:, 2:].argmax(dim=-1),
task["labels"][:, :-1]
)
assert observation_tensor(task, "uncued").shape[-1] == 2