This repository contains the codes of the experiments in Paper An Information-theoretic Metric of Transferability for Task Transfer Learning
Python: see requirement.txt
for complete list of used packages.
Given an arbitrary feature function, you can evaluate H-score simply by calling the following function
def getCov(X):
X_mean=X-np.mean(X,axis=0,keepdims=True)
cov = np.divide(np.dot(X_mean.T, X_mean), len(X)-1)
return cov
def getHscore(f,Z):
#Z=np.argmax(Z, axis=1)
Covf=getCov(f)
alphabetZ=list(set(Z))
g=np.zeros_like(f)
for z in alphabetZ:
Ef_z=np.mean(f[Z==z, :], axis=0)
g[Z==z]=Ef_z
Covg=getCov(g)
score=np.trace(np.dot(np.linalg.pinv(Covf,rcond=1e-15), Covg))
return score
To see how fast H-score can be computed and how amazingly H-score is in accordance with empirical performance, you can reproduce the experiment Validation of H-score within a few minutes.