1

我正在使用基于学习的方法使用 GPR 进行图像超分辨率。但在我的情况下,我在实施 gpr 时遇到了问题。基本上,我正在做一个基于补丁的回归,其中我有 k 个补丁对进行训练。然后使用回归函数来预测测试输出。运行以下代码时,我得到了 gpr 推断,else 块的失败消息,我不完全理解 gpml,所以我无法继续并且已经卡了很长时间。任何帮助将不胜感激。请尽快回复。谢谢。

% GPR model training
% GPR functions
hyp.mean = [];
meanfunc = @meanAvg;
covfunc = @covSEiso;
likfunc = @likGauss;


for m = 1:knn
    In_patch_nn{m,1} = hrb_patches{Dnn(m,2),Dnn(m,3)};
    Out_patch_nn{m,1} = HR_patches{Dnn(m,2),Dnn(m,3)};
end

X = zeros(knn,sh^2);  % for input in gpr model 
for m=1:knn

X(m,:) = In_patch_nn{m,1}(:);

end
% gpr for each pixel in the output patch
temp_out = zeros(sh);
for b = 1:sh
    for c = 1:sh
        y = zeros(knn,1);
        % initialize GPr parameter

        cov = [-1.5; log(std(double(hrb_patches{Dnn(1,2),Dnn(1,3)}(:))))]; lik = -3;   %%%%% doubt how to initialize??
        hyp.cov = cov;
        hyp.lik = lik;

        for e = 1:knn
            y(e,1) = Out_patch_nn{e,1}(b,c);     % training target values (output)
        end
        % MAP estimation
        [hyp] = minimize(hyp, @gp, -100, @infExact, meanfunc,covfunc, likfunc, X, y);

         % GPR inference
        [fail ymu] = gp(hyp, @infExact, meanfunc, covfunc, likfunc, double(X(:,:)), double(y(:)), double(temp(:)'));

        if fail==0 && length(ymu)~=1 && ~isinf(hyp.cov(1)) && ~isinf(hyp.cov(1)) && ~isinf(hyp.lik)
            temp_out(b,c) = ymu;
        else
            fprintf('fail %d\n',j);
        end
    end
end
Patch_mat_n{j,3} = temp_out;
% patch prediction

end
4

0 回答 0