4 ms·
I used the notebook linked in the original post [1]. It evaluates using 100 samples from the test set, (I'm guessing because the gzip method is slow - it would
by montebicyclelo 3y ago
I used the notebook linked in the original post [1]. It evaluates using 100 samples from the test set, (I'm guessing because the gzip method is slow - it would take ~7 hours on the full test set, on my machine).
I plugged in the distance measures, for the `compute_ncd` function. (Jaccard/Dice have been negated and the -1 removed.)
def euclidean(x1, x2):
return np.sum(np.square(x1 - x2))
def jaccard(x1, x2):
x1_binary = x1 > 0.5
x2_binary = x2 > 0.5
return np.logical_or(x1_binary, x2_binary).sum() / np.logical_and(x1_binary, x2_binary).sum()
def dice(x1, x2):
x1_binary = x1 > 0.5
x2_binary = x2 > 0.5
return 2 * np.logical_or(x1_binary, x2_binary).sum() / (x1_binary.sum() + x2_binary.sum())
[1] https://github.com/Jakob-98/mono/blob/73168bc0ea904e7586581573da5907020d88736f/python/gzip_mnist/mnist_gzip.ipynb https://github.com/Jakob-98/mono/blob/73168bc0ea904e75865815...
- tysam_and 3y agoOhhh, you know what? I think this makes sense, since it's basically like making prototypes from the training set, only it's instead comparing against every training example, then averaging. Cool. Did not know that would be remotely close to 90%, but that makes sense to me. I wonder if something like a weighted max_mean would perform better or something L1. Or maybe L2 is ideal, it is at the center of a lot of things information theory, after all! ;PPPP