Mercurial > hg > smallbox
comparison DL/two-step DL/dico_update.m @ 207:233e75809e4a luisf_dev
Accelerated the code for LGD and optimal grandient descent
author | bmailhe |
---|---|
date | Wed, 21 Mar 2012 14:12:25 +0000 |
parents | 5140b0e06c22 |
children | fd0b5d36f6ad |
comparison
equal
deleted
inserted
replaced
202:5bb579c9874e | 207:233e75809e4a |
---|---|
84 dico(:,p) = pat; | 84 dico(:,p) = pat; |
85 end | 85 end |
86 end | 86 end |
87 case 'opt' | 87 case 'opt' |
88 for p = 1:nb_pattern | 88 for p = 1:nb_pattern |
89 vec : amp(p,:); | 89 index = find(amp(p,:)~=0); |
90 grad = res*vec'; | 90 vec = amp(p,index); |
91 grad = res(:,index)*vec'; | |
91 if norm(grad) > 0 | 92 if norm(grad) > 0 |
92 pat = (vec*vec')*dico(:,p) + rho*grad; | 93 pat = (vec*vec')*dico(:,p) + rho*grad; |
93 pat = pat/norm(pat); | 94 pat = pat/norm(pat); |
94 if nargin >5 && strcmp(flow, 'sequential') | 95 if nargin >5 && strcmp(flow, 'sequential') |
95 res = res + (dico(:,p)-pat)*vec; | 96 res(:,index) = res(:,index) + (dico(:,p)-pat)*vec; |
97 end | |
98 dico(:,p) = pat; | |
99 end | |
100 end | |
101 case 'LGD' | |
102 for p = 1:nb_pattern | |
103 index = find(amp(p,:)~=0); | |
104 vec = amp(p,index); | |
105 grad = res(:,index)*vec'; | |
106 if norm(grad) > 0 | |
107 pat = (vec*vec')*dico(:,p) + 2*grad; | |
108 pat = pat/norm(pat); | |
109 if nargin >5 && strcmp(flow, 'sequential') | |
110 res(:,index) = res(:,index) + (dico(:,p)-pat)*vec; | |
96 end | 111 end |
97 dico(:,p) = pat; | 112 dico(:,p) = pat; |
98 end | 113 end |
99 end | 114 end |
100 case 'KSVD' | 115 case 'KSVD' |