EDA365电子论坛网
标题:
最近刚刚学习matlab,在做一个关于迁移学习tca的代码。
[打印本页]
作者:
needham
时间:
2020-6-12 13:51
标题:
最近刚刚学习matlab,在做一个关于迁移学习tca的代码。
最近刚刚学习matlab,在做一个关于迁移学习tca的代码。
e5 ] A6 `8 S6 r/ W" X
files=dir('*.mat');
7 d9 k4 j1 w2 O% {4 P& o, x
X = [X_src',X_tar'];
4 e0 y6 z" ~3 G/ M
X = X*diag(sparse(1./sqrt(sum(X.^2))));
6 u# X6 T% T- ]3 B2 k1 n! ?4 |6 q
[m,n] = size(X);
: J1 {& G' m" c4 ~1 E7 J
ns = size(X_src,1);
# u0 G8 K f) T$ L7 h
nt = size(X_tar,1);
! X% }$ f9 h9 ]: J
e = [1/ns*ones(ns,1);-1/nt*ones(nt,1)];
3 l4 e# B+ b4 e+ V
M = e * e';
2 J9 S$ t6 r+ h
M = M / norm(M,'fro');
( A# L# E1 J2 |4 Q' l- S; M
H = eye(n)-1/(n)*ones(n,n);
. f9 V/ T3 K" R
if strcmp(kernel_type,'primal')
( z# w$ I/ k: s1 S* A, O, F, O$ Y0 w
[A,~] = eigs(X*M*X'+lambda*eye(m),X*H*X',dim,'SM');
$ i8 s9 `0 w- a$ b6 V, p
Z = A' * X;
0 Z3 A7 z( h# P9 t$ ]
Z = Z * diag(sparse(1./sqrt(sum(Z.^2))));
! a: g5 g1 C1 w1 @! X; W$ c- U w
X_src_new = Z(:,1:ns)';
. Y A9 q; u( G6 _
X_tar_new = Z(:,ns+1:end)';
$ T% v0 Q1 z- W+ {' w
else
/ B( n8 z, B9 A1 w4 Z$ @
K = TCA_kernel(kernel_type,X,[],gamma);
7 A# l" N; e g- O7 P1 f" {
[A,~] = eigs(K*M*K'+lambda*eye(n),K*H*K',dim,'SM');
8 _: f7 u1 x) ?( F
Z = A' * K;
0 ^9 f0 E+ ?/ P, ^9 E
Z = Z*diag(sparse(1./sqrt(sum(Z.^2))));
N7 U* v2 R- Q
X_src_new = Z(:,1:ns)';
' \& p5 B+ |9 Y: Z8 P: B
X_tar_new = Z(:,ns+1:end)';
" {: _4 Z8 Z+ j7 \5 N r3 I
end
: U% ?+ O+ J" X: ^ r
end
" A7 {4 H u. J( x; B
' v% s- J7 V7 F% P1 j
中的X = X*diag(sparse(1./sqrt(sum(X.^2))));这一行代码报错,说未定义与 'struct' 类型的输入参数相对应的函数 'power'。这里的X是一个1x2的结构体,是不是结构体代入power函数的格式是错的?请教大神,非常感谢!
# I4 t! _4 W/ i. m3 j* @0 @
作者:
panphp
时间:
2020-6-12 14:27
你的X是结构体,不能采用.^2这个计算(也就是power函数),你得先将你的结构体中的数据存储到矩阵中,才能运算。
作者:
artic
时间:
2020-6-13 18:14
楼主可以上传X结构的体的mat文件。
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2