深度学习(三)denoise autoencoder的Python实现
生活随笔
收集整理的這篇文章主要介紹了
深度学习(三)denoise autoencoder的Python实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本章主要講述autoencoder另外一種改進,denoise autoencoder,Python的編寫也是在深度學習(一)autoencoder的Python實現(2)基礎上,進行改造的,具體的修改的地方,將會單獨貼出來。
正如上篇深度學習(二)sparse autoencoder的Python實現所述,我們看懂一段話,并不需要每一個句子或每一個詞,只有幾個詞是關鍵的,剩下的都可以通通過濾掉,而denoise也類似sparse,濾掉一些節點的影響,來模擬我們大腦對信息的采集和挑選。在這里,denoise相比于sparse更加直接,以一定概率,直接令某一層的一些節點的值為0。比如神經網絡的第i<script type="math/tex" id="MathJax-Element-113">i</script>層有4個節點,每一個節點本來都有值,該層為[1,3,-1,-3],然后我們令小于0的節點值歸零,那么在訓練的時候該層節點的值則為[1,3,0,0]
在bean.py的nn類增加一個成員變量,denoise參數,當節點值大于denoise時,保持,小于的話,則將值置為0
# 設置denoise參數self.denoise = 0.2最后修改util.py中節點值的修改
#前饋函數 def nnff(nn,x,y):layers = nn.layersnumbers = x.shape[0]# 賦予初值nn.values[0] = xfor i in range(1,layers):nn.values[i] = sigmod(np.dot(nn.values[i-1],nn.W[i-1])+nn.B[i-1])# 當有denose時,即要進行dropout(增加)for j in range(1,layers-1):nn.values[j] = nn.values[j]*(np.random.random(nn.values[j].shape)>nn.denoise)# 最后一層與實際的誤差nn.error = y - nn.values[layers-1]nn.loss = 1.0/2.0*(nn.error**2).sum()/numbersreturn nn最后進行測試
測試數據為
最后結果為
基本符合要求
總結
以上是生活随笔為你收集整理的深度学习(三)denoise autoencoder的Python实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cad下载2010免费中文版的操作和方法
- 下一篇: 信息技术课程计算机硬件,初一《信息技术》