论文【The HSIC Bottleneck: Deep Learning without Back-Propagation】中HSIC方法的C++实现程序:
#include
#include
//稠密矩阵的代数运算(逆、特征值等)
#include
using namespace Eigen;
using namespace std;
#define sigma 2
#define lambda 100
vector<vector> kernelmat(vector<vector> x)
{
int m = x.size(), dim = x[0].size();
vector<vector> H(m, vector(m, -1.0 / 128));
for (int i = 0; i < m; i++)
{
H[i][i] = 1 + H[i][i];
}
vector r(m);
for (int i = 0; i < m; i++)
{
double sum_value = 0;
for (int j = 0; j < dim; j++)
{
sum_value += x[i][j]* x[i][j];
}
r[i] = sum_value;
}
vector<vector> a(m, vector(m));
for (int i = 0; i < m; i++)
{
for (int j = 0; j < m; j++)