|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近刚刚学习matlab,在做一个关于迁移学习tca的代码。
4 l; I1 Q& G+ P files=dir('*.mat');- @5 b$ @0 z9 W/ B1 i( I7 L
X = [X_src',X_tar'];
+ e! _2 l" @) M0 r/ c7 u( I$ |6 H7 }! q X = X*diag(sparse(1./sqrt(sum(X.^2))));8 d( M8 n* \' w
[m,n] = size(X);
% [$ H% `( \& T0 X: E& p6 Q ns = size(X_src,1);5 f# a: Y2 x: l
nt = size(X_tar,1);
) L: |3 D+ E; J1 h1 W. g3 ? e = [1/ns*ones(ns,1);-1/nt*ones(nt,1)];' L( T* e) }3 e3 R1 D1 }
M = e * e';$ w( c5 C9 _; W+ W8 v
M = M / norm(M,'fro');
* c+ G4 E' `) c/ t" f) L H = eye(n)-1/(n)*ones(n,n);
' e- B: T2 o6 ^( r& E' X if strcmp(kernel_type,'primal')) {. B0 c- C; I& f& F& A2 H8 H/ N
[A,~] = eigs(X*M*X'+lambda*eye(m),X*H*X',dim,'SM');* U4 O6 B' T7 w# ?4 t) ^0 Y+ x
Z = A' * X;
; a) G! Y9 Z w9 t Z = Z * diag(sparse(1./sqrt(sum(Z.^2))));
! o* b, F' c9 K9 f' S! W X_src_new = Z(:,1:ns)';
2 t7 T& Q h2 q0 e- n9 h: h; n X_tar_new = Z(:,ns+1:end)';8 ?6 t# h) C( s B" I0 A% P' Z" S
else- d) T& m' N" Z1 R0 q6 j
K = TCA_kernel(kernel_type,X,[],gamma);
* y( j3 o0 [, _- s( P" P! B3 h [A,~] = eigs(K*M*K'+lambda*eye(n),K*H*K',dim,'SM');
- R- x9 D# c' d1 q: K6 D3 g Z = A' * K;
# g6 H \/ \0 H9 ~; _% b+ G% z Z = Z*diag(sparse(1./sqrt(sum(Z.^2))));
, ^7 k5 D) n0 U: q: W4 t5 s) }% e X_src_new = Z(:,1:ns)';
2 J1 Y* }% w R- N, g X_tar_new = Z(:,ns+1:end)';# J3 u9 T" v0 r ^9 t7 H: N% n
end
4 ?6 q: K' W8 {end
- y- i% ]# x% K( g3 V0 J' F7 S7 d; U" h' ~0 n
中的X = X*diag(sparse(1./sqrt(sum(X.^2))));这一行代码报错,说未定义与 'struct' 类型的输入参数相对应的函数 'power'。这里的X是一个1x2的结构体,是不是结构体代入power函数的格式是错的?请教大神,非常感谢!
1 b k/ k' \4 P' e% |7 X |
|