dualgeneralfeaturesapprox2.m.svn-base

来自「a function inside machine learning」· SVN-BASE 代码 · 共 48 行

SVN-BASE
48
字号
function [testInfo, projectionInfo] = dualGeneralFeaturesApprox2(trainData, testData1, testData2, subspaceInfo, params)
%Approximate a kernel matrix using \tilde{X} = TP' or equivalently
%\tilde{K} = TP'PT' 
%We compute the kernel between testData1 and testData2 

if (nargin ~= 5)
    fprintf('%s\n', help(sprintf('%s', mfilename)));
    error('Incorrect number of inputs - see above usage instructions.');
end

%Subspace parameters 
[nameX, nameY] = getSpaceNames(params);
T = min(params.iterations, size(subspaceInfo.(nameX).tau, 2));

numTest1Examples = getNumDataExamples(testData1); 
numTest2Examples = getNumDataExamples(testData2); 

%kernel parameters 
kernelFunction = char(params.X.kernel.name); 
kernelParams = params.X.kernel.params; 

normSqTau = subspaceInfo.(nameX).normSqTau(1:T);
s = subspaceInfo.(nameX).s(:, 1:T);
tau =  subspaceInfo.(nameX).tau(:, 1:T);

tic; 

[tInfo1, pInfo1] = dualGeneralFeaturesProject(trainData, testData1, subspaceInfo, params);
[tInfo2, pInfo2] = dualGeneralFeaturesProject(trainData, testData2, subspaceInfo, params);

tauHat1 = getDataFieldValue(tInfo1.data, 'X', 1:numTest1Examples, 1:T); 
tauHat2 = getDataFieldValue(tInfo2.data, 'X', 1:numTest2Examples, 1:T); 

test1Test2K = tauHat1*inv(diag(normSqTau))*tau'*s*tauHat2';

testTime = toc;

testInfo = struct; 
testInfo.data = data; 
testInfo.data  = addDataField(testInfo.data, 'K', test1Test2K, 'kernel'); 

fprintf('done, took %d seconds.\n', testTime);

projectionInfo = struct;
projectionInfo.testTime = testTime;
projectionInfo.X.tauHat1 = tauHat1;
projectionInfo.X.tauHat2 = tauHat2;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?