Closed chenfsjz closed 8 years ago
@chenfsjz , 我没用那个CCA做有监督的ITQ,作者公布里的源码我记得是有CCA的代码,你用作者的代码试试。
是的,我就是用的作者的那个CCA,之前我是自己提取了GIST;我又用了你这个project里的cifar10-yunchao-gist,那个CCA里有几行code是这样的:
% bit = 32, 64, 128 ...
% [eigenvector,r] = cca(X, Y, 0.0001); % this computes CCA projections
% eigenvector = eigenvector(:,1:bit)*diag(r(1:bit)); % this performs a scaling using eigenvalues
% E = X*eigenvector; % final projection to obtain embedding E
调用完CCA后要根据特征向量和原始的特征来计算最后的embedding,但是它这里在计算特征值得时候是出现了复数值的,导致后面不能直接计算
X和Y 对应得没问题?0.0001
这个参数有做过调整?你自己再检查检查,我没用过这部分,这部分你应该比我更清楚。
@chenfsjz I found you XD 我們實驗的時候也遇到這個問題,雖然特徵值是複數值,但虛部的值都非常非常小。有些文獻指出可以把它直接當real value繼續做ITQ。實際測試發現用這樣的方式做,CCAITQ效果依然非常好
之所以會出現複數,是因為cca.m的第39行 r = sqrt(real(r));
r可能會包含負數,開根號後就變複數!
@kevinlin311tw 我也跟着长知识了, Thanks.
@kevinlin311tw Thank you very much! 这个问题由于联系不到原作者,困扰了好长时间 :)
yuanyong 你好,我在您的另一篇博客中看到了关于原文CCA-ITQ的实现,它的主要思想是先要对图像的Gist特征进行CCA来Embedding,我用的是CIAFAR10的数据,在用CCA进行处理的时候结果出现了复数值,一直找不到原因,不知道您是怎样实现的?