协方差矩阵与Gram矩阵
协方差矩阵与Gram矩阵所表达的意义相差不大
协方差矩阵
在模式识别中,协方差矩阵,有时也叫散布矩阵,散度矩阵,类内离散度矩阵或者类内离差阵。协方差矩阵是一个对称矩阵,且是半正定矩阵,主对角线是各个维度上的方差。协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。
协方差矩阵 × \times × (n-1) = 散度矩阵 = 类内离散度矩阵 = 类内离差阵,其中n为样本个数
pytorch实现
def cov(input):
""""
b, c, h, w = input.size()
x = input - torch.mean(input)
x = x.view(b * c, h * w)
cov_matrix = torch.matmul(x.T, x) / x.shape[0]
return cov_matrix
Gram矩阵
在风格迁移任务中,常常使用Gram矩阵来表示图像的风格特征,Gram矩阵可以看做feature之间的偏心协方差矩阵,即没有减去均值的协方差矩阵。
pytorch实现
def gram(input):
b, c, h, w = input.size()
x = input
x = x.view(b * c, h * w)
gram_matrix = torch.matmul(x.T, x) / x.shape[0]
return gram_matrix