|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近刚刚学习matlab,在做一个关于迁移学习tca的代码。
( [' k' @7 L7 j/ T files=dir('*.mat');! i0 U% B- ]' L! N* L& c t# v
X = [X_src',X_tar'];7 g9 Q* K) M4 O+ N8 O5 s7 `
X = X*diag(sparse(1./sqrt(sum(X.^2))));, e2 y; Y6 g1 _4 x: v( [4 g
[m,n] = size(X);
" { @$ O0 u3 G! r8 B ns = size(X_src,1);
9 \9 ^- e( J) X) u' u* Z nt = size(X_tar,1);3 i2 T) |, Y, n3 M- H; m- t
e = [1/ns*ones(ns,1);-1/nt*ones(nt,1)];0 `# t- D- U; m0 E# t* \
M = e * e';
$ ^6 ~ A/ Y0 H$ d" K M = M / norm(M,'fro');8 v# i% ]$ b) Q+ Q; Q1 j" t
H = eye(n)-1/(n)*ones(n,n);# h/ E! n. j4 X% p+ u
if strcmp(kernel_type,'primal'): E1 I* V3 F# {4 @
[A,~] = eigs(X*M*X'+lambda*eye(m),X*H*X',dim,'SM');, Y" P: Q3 I' x: h# c: L
Z = A' * X;
! B {! n G+ F$ S% _7 B- I Z = Z * diag(sparse(1./sqrt(sum(Z.^2))));
+ i8 Y% M. g8 k1 `- u: o X_src_new = Z(:,1:ns)';# i, F4 M* U) j: Q
X_tar_new = Z(:,ns+1:end)';
( `, ]3 [4 O. B/ E: ? else
1 X: N5 R; |5 @. q6 M K = TCA_kernel(kernel_type,X,[],gamma);
8 I& v! k8 d4 I+ M ]1 t [A,~] = eigs(K*M*K'+lambda*eye(n),K*H*K',dim,'SM');
/ C1 V k1 W3 X5 W2 i: y: E; q Z = A' * K;" w5 l, P& j. m1 ^
Z = Z*diag(sparse(1./sqrt(sum(Z.^2))));
$ P' w% s; F T1 @ X_src_new = Z(:,1:ns)';) P7 c- V% u9 u: J: |% V/ M: \
X_tar_new = Z(:,ns+1:end)';. N: b9 X4 `8 P" R3 G6 k) ?: K9 k S
end
& z9 H1 O4 T, |# J0 s+ `end
$ z5 C9 J+ k8 e" K8 V. g% z N) c4 q! f$ S) V6 H b
中的X = X*diag(sparse(1./sqrt(sum(X.^2))));这一行代码报错,说未定义与 'struct' 类型的输入参数相对应的函数 'power'。这里的X是一个1x2的结构体,是不是结构体代入power函数的格式是错的?请教大神,非常感谢!$ t0 `2 Z/ M) E( C. ]
|
|