Source code for hashtron.classifier.forward

from hashtron.hash.hash import Hash

[docs] class HashtronForward: def __init__(self, hashtron): self.hashtron = hashtron
[docs] def forward(self, sample: int, negate: bool) -> int: if not self.hashtron.program: return 0 out = 0 for j in range(self.hashtron.bits): input_val = sample if self.hashtron.bits <= 1 else sample | (j << 16) ss, maxx = self.hashtron.program[0] input_val = Hash.hash(input_val, ss, maxx) for i in range(1, len(self.hashtron.program)): s, max_val = self.hashtron.program[i] ss ^= s maxx -= max_val input_val = Hash.hash(input_val, ss, maxx) input_val &= 1 if negate: input_val ^= 1 if input_val != 0: out |= 1 << j return out