File size: 977 Bytes
0b81240
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import numpy as np


def entropy(proba):
    return -np.sum(proba * np.log(proba + 1e-12), axis=1)


def sim_to_noisy(X, centroid):
    Xn = X / (np.linalg.norm(X, axis=1, keepdims=True) + 1e-12)
    cn = centroid / (np.linalg.norm(centroid) + 1e-12)
    return np.dot(Xn, cn)


def sample_uncertainty(state, H_adj, n, exclude):
    if n <= 0:
        return []
    idx = np.argsort(-H_adj)
    return [i for i in idx if i not in exclude][:n]


def sample_diversity(state, n, exclude):
    if n <= 0:
        return []
    d = np.linalg.norm(state.X_pool - state.train_centroid, axis=1)
    idx = np.argsort(-d)
    return [i for i in idx if i not in exclude][:n]


def sample_random(state, n, exclude):
    if n <= 0:
        return []
    candidates = [i for i in range(len(state.X_pool)) if i not in exclude]
    if not candidates:
        return []
    return list(np.random.choice(candidates, size=min(n, len(candidates)), replace=False))