Shortcuts

Source code for tllib.ranking.hscore

"""
@author: Yong Liu
@contact: liuyong1095556447@163.com
"""
import numpy as np

__all__ = ['h_score']


[docs]def h_score(features: np.ndarray, labels: np.ndarray): r""" H-score in `An Information-theoretic Approach to Transferability in Task Transfer Learning (ICIP 2019) <http://yangli-feasibility.com/home/media/icip-19.pdf>`_. The H-Score :math:`\mathcal{H}` can be described as: .. math:: \mathcal{H}=\operatorname{tr}\left(\operatorname{cov}(f)^{-1} \operatorname{cov}\left(\mathbb{E}[f \mid y]\right)\right) where :math:`f` is the features extracted by the model to be ranked, :math:`y` is the groud-truth label vector Args: features (np.ndarray):features extracted by pre-trained model. labels (np.ndarray): groud-truth labels. Shape: - features: (N, F), with number of samples N and feature dimension F. - labels: (N, ) elements in [0, :math:`C_t`), with target class number :math:`C_t`. - score: scalar. """ f = features y = labels def covariance(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 covf = covariance(f) C = int(y.max() + 1) g = np.zeros_like(f) for i in range(C): Ef_i = np.mean(f[y == i, :], axis=0) g[y == i] = Ef_i covg = covariance(g) score = np.trace(np.dot(np.linalg.pinv(covf, rcond=1e-15), covg)) return score

Docs

Access comprehensive documentation for Transfer Learning Library

View Docs

Tutorials

Get started for Transfer Learning Library

Get Started

Paper List

Get started for transfer learning

View Resources