深度学习笔记6:Learning color features with Sparse Autoencoders
生活随笔
收集整理的這篇文章主要介紹了
深度学习笔记6:Learning color features with Sparse Autoencoders
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
線性解碼器
動機
當采用稀疏自編碼器的輸出層采用sigmoid作為激勵函數時,要求對輸入進行縮放或限制,使其位于[0,1]范圍中。但是有些輸入值很難滿足要求,如PCA白化處理的輸入并不滿足該范圍要求。因此,可對稀疏自編碼器的輸出層激活函數從an=sigmoid(zn)改為an=zn.——稱為線性激勵函數。
把具有線性解碼器的稀疏自編碼器應用于彩色特征提取
預處理:
meanPatch = mean(patches, 2); patches = bsxfun(@minus, patches, meanPatch);% Apply ZCA whitening sigma = patches * patches' / numPatches; [u, s, v] = svd(sigma); ZCAWhite = u * diag(1 ./ sqrt(diag(s) + epsilon)) * u'; patches = ZCAWhite * patches;代價函數和梯度:
Jcost = 0;%直接誤差 Jweight = 0;%權值懲罰 Jsparse = 0;%稀疏性懲罰 [n m] = size(data);%m為樣本的個數,n為樣本的特征數 % % %前向算法計算各神經網絡節點的線性組合值和active值 z2=W1*data+repmat(b1,1,m); a2=sigmoid(z2); z3=W2*a2+repmat(b2,1,m); a3=z3;%%%和稀疏自編碼器不同的地方Jcost=(0.5/m)*sum(sum((a3-data).^2)); Jweight=0.5*(sum(sum(W1.^2))+sum(sum(W2.^2))); rho=(1/m).*sum(a2,2); Jsparse=sum(sparsityParam.*log(sparsityParam./rho)+(1-sparsityParam).*log((1-sparsityParam)./(1-rho)));cost=Jcost+lambda*Jweight+beta*Jsparse;d3=-(data-a3);%%%和稀疏自編碼器不同的地方 sterm = beta*(-sparsityParam./rho+(1-sparsityParam)./(1-rho)); d2=(W2'*d3+repmat(sterm,1,m)).*(sigmoid(z2).*(1-sigmoid(z2)));W1grad=(1/m).*(d2*data')+lambda.*W1; W2grad=(1/m).*(d3*a2')+lambda.*W2; b1grad=(1/m).*sum(d2,2); b2grad=(1/m).*sum(d3,2);%------------------------------------------------------------------- % After computing the cost and gradient, we will convert the gradients back % to a vector format (suitable for minFunc). Specifically, we will unroll % your gradient matrices into a vector.grad = [W1grad(:) ; W2grad(:) ; b1grad(:) ; b2grad(:)];總結
以上是生活随笔為你收集整理的深度学习笔记6:Learning color features with Sparse Autoencoders的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习笔记5:Building Dee
- 下一篇: 深度学习笔记7 Working with