Trying to encode a bunch of scalars: SMART stats for hard-disk health metrics, eventually hoping to predict failure in advance with temporal memory / anomaly. Used the hotgym.py example as a base structure.
I’ve tried defining several unique ScalarEncoders or RDSEs (concatenating together into one encoding for SP feed), but they crash if I put the bit_size allocation too low for any of them - somewhere under 30ish for each SE or RDSE.
This is a little odd for me, since some of the features from this dataset are strings (~45 unique categories, i used pandas’ categorical coding to clean this for scalar encoder) and one is just True/False, so allocating minimum 30 bits is a huge computational waste.
However it runs fine (just slow) when I give “enough” bitspace to each feature encoder. My code is up on my Github here:
# failure 1-bit encoder to minimize SDR size. we only need one bit to encode 1 or 0, after all fail_params = ScalarEncoderParameters() fail_params.minimum = 0 fail_params.maximum = 1 fail_params.size = 30 # if i go under 30, it crashes: CHECK FAILED: "args_.activeBits > 0u" # this is a pretty awful problem, considering i'm wasting 29 bits of calculation # i'm probably missing some configuration in a setting somewhere fail_params.sparsity = 0.02 # fail_params.resolution = 0.88 fail_encoder = ScalarEncoder(fail_params) # it probably could just be a ScalarEncoder, not RDSE ...
Wonder if it’s something to do with min/max range declarations or something similar. Has anyone had any success with few-bit scalarEncoders or RDSEs / successful code I could compare with?