日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 循环神经网络 >内容正文

循环神经网络

ufldl matlab 工具箱,matlab的Deep Learning的toolbox 中的SAE算法

發(fā)布時(shí)間:2025/3/19 循环神经网络 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ufldl matlab 工具箱,matlab的Deep Learning的toolbox 中的SAE算法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近一直在看Deep Learning,各類(lèi)博客、論文看得不少

但是說(shuō)實(shí)話(huà),這樣做有些疏于實(shí)現(xiàn),一來(lái)呢自己的電腦也不是很好,二來(lái)呢我目前也沒(méi)能力自己去寫(xiě)一個(gè)toolbox

只是跟著Andrew Ng的UFLDL tutorial?寫(xiě)了些已有框架的代碼(這部分的代碼見(jiàn)github)

后來(lái)發(fā)現(xiàn)了一個(gè)matlab的Deep Learning的toolbox,發(fā)現(xiàn)其代碼很簡(jiǎn)單,感覺(jué)比較適合用來(lái)學(xué)習(xí)算法

再一個(gè)就是matlab的實(shí)現(xiàn)可以省略掉很多數(shù)據(jù)結(jié)構(gòu)的代碼,使算法思路非常清晰

所以我想在解讀這個(gè)toolbox的代碼的同時(shí)來(lái)鞏固自己學(xué)到的,同時(shí)也為下一步的實(shí)踐打好基礎(chǔ)

(本文只是從代碼的角度解讀算法,具體的算法理論步驟還是需要去看paper的

我會(huì)在文中給出一些相關(guān)的paper的名字,本文旨在梳理一下算法過(guò)程,不會(huì)深究算法原理和公式)

==========================================================================================

使用的代碼:DeepLearnToolbox? ,下載地址:點(diǎn)擊打開(kāi),感謝該toolbox的作者

==========================================================================================

今天介紹的呢是DL另一個(gè)非常重要的模型:SAE

把這個(gè)放在最后來(lái)說(shuō)呢,主要是因?yàn)樵赨FLDL tutorial?里已經(jīng)介紹得比較詳細(xì)了,二來(lái)代碼非常簡(jiǎn)單(在NN的基礎(chǔ)之上)

先放一張autoencoder的基本結(jié)構(gòu):

基本意思就是一個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),輸入輸出都是x,屬于無(wú)監(jiān)督學(xué)習(xí)

==========================================================================================

基本代碼

saesetup.m

function?sae?=?saesetup(size)

for?u?=?2?:?numel(size)

sae.ae{u-1}?=?nnsetup([size(u-1)?size(u)?size(u-1)]);

end

end

saetrain.m

function?sae?=?saetrain(sae,?x,?opts)

for?i?=?1?:?numel(sae.ae);

disp(['Training?AE?'?num2str(i)?'/'?num2str(numel(sae.ae))]);

sae.ae{i}?=?nntrain(sae.ae{i},?x,?x,?opts);

t?=?nnff(sae.ae{i},?x,?x);

x?=?t.a{2};

%remove?bias?term

x?=?x(:,2:end);

end

end

其實(shí)就是每一層一個(gè)autoencoder,隱藏層的值作為下一層的輸入

各類(lèi)變形

為了不致于本文內(nèi)容太少。。。現(xiàn)在單獨(dú)把它的幾個(gè)變形提出來(lái)說(shuō)說(shuō)

sparse autoencoder:

這就是ufldl講的版本,toolbox中的代碼和ufldl中練習(xí)的部分基本一致:

在nnff.m中使用:nn.p{i} = 0.99 * nn.p{i} + 0.01 * mean(nn.a{i}, 1);計(jì)算

在nnbp.m中使用

pi = repmat(nn.p{i}, size(nn.a{i}, 1), 1);

sparsityError = [zeros(size(nn.a{i},1),1) nn.nonSparsityPenalty * (-nn.sparsityTarget ./ pi + (1 - nn.sparsityTarget) ./ (1 - pi))];

計(jì)算sparsityError即可

denoising autoencoder:

denoising其實(shí)就是在autoencoder的基礎(chǔ)上,給輸入的x加入噪聲,就相當(dāng)于dropout用在輸入層

toolbox中的也實(shí)現(xiàn)非常簡(jiǎn)單:

在nntrain.m中:

batch_x = batch_x.*(rand(size(batch_x))>nn.inputZeroMaskedFraction)

也就是隨即把大小為(nn.inputZeroMaskedFraction)的一部分x賦成0,denoising autoencoder的表現(xiàn)好像比sparse autoencoder要強(qiáng)一些

Contractive Auto-Encoders:

這篇論文里也總結(jié)了一下autoencoder,感覺(jué)很不錯(cuò)

Contractive autoencoders的模型是:

其中:

?hj是表示hidden layer的函數(shù),用它對(duì)x求導(dǎo)

論文里說(shuō):這個(gè)項(xiàng)是

encourages the mapping to the feature space to be contractive in the neighborhood of the training data

具體的實(shí)現(xiàn)呢是:

代碼呢參看:論文作者提供的:點(diǎn)擊打開(kāi)鏈接

主要是

jacobian(self,x):

_jacobi_loss():

_fit_reconstruction():

這幾個(gè)函數(shù)和autoencoder有出入,其實(shí)也比較簡(jiǎn)單,就不細(xì)講了

總結(jié):

總的來(lái)說(shuō),autoencoder感覺(jué)是DL中比較好理解的一部分,所以介紹內(nèi)容不長(zhǎng)

可能你也發(fā)現(xiàn)了,Toolbox里還有一個(gè)文件夾叫CAE,不過(guò)這個(gè)CAE是Convolutional Auto-Encoders

總結(jié)

以上是生活随笔為你收集整理的ufldl matlab 工具箱,matlab的Deep Learning的toolbox 中的SAE算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。