時(shí)間:2018-05-11 17:46:12來源:網(wǎng)絡(luò)轉(zhuǎn)載
即使是非計(jì)算機(jī)行業(yè),大家也知道很多有名的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),比如CNN在處理圖像上非常厲害,RNN能夠建模序列數(shù)據(jù).然而CNN,RNN之類的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)本身,并不能用于執(zhí)行比如圖像的內(nèi)容和風(fēng)格分離,生成一個(gè)逼真的圖片,用少量的label信息來分類圖像,或者做數(shù)據(jù)壓縮等任務(wù).因?yàn)樯鲜鰩讉€(gè)任務(wù),都需要特殊的網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練算法.
有沒有一個(gè)網(wǎng)絡(luò)結(jié)構(gòu),能夠把上述任務(wù)全搞定呢?顯然是有的,那就是對(duì)抗自編碼器AdversarialAutoencoder(AAE).在本文中,我們將構(gòu)建一個(gè)AAE,來壓縮數(shù)據(jù),分離圖像的內(nèi)容和風(fēng)格,用少量樣本來分類圖像,然后生成它們。
PyTorch實(shí)現(xiàn)自編碼器
首先我們先回顧一下什么是自編碼器,然后用PyTorch進(jìn)行簡單的實(shí)現(xiàn)。
1.自編碼器
如圖所示,自編碼器的輸入和輸出是一樣的,也就是說,它不需要監(jiān)督信息(label),它主要有兩部分構(gòu)成:
?編碼器(Encoder):輸入數(shù)據(jù)(可以是文本,圖像,視頻,語音),輸出latentcode,比如上圖,輸入數(shù)據(jù)是的一張圖像,輸出的是的隱層值h,或者稱之為latentcode,當(dāng)然h的大小你可以隨便設(shè)置.在這種設(shè)置下,encoder起到了壓縮圖片的作用,將一個(gè)圖片從變化成了,就像你用壓縮軟件(比如WinRAR)壓縮圖片一樣.如果我們把Encoder記做函數(shù)q,那么Encoder就是在做:
?解碼器(Decoder):輸入數(shù)據(jù)為上一步的輸出數(shù)據(jù)h,它努力把h重構(gòu)成x,上圖的例子中,Decoder需要把的重構(gòu)回的,并使得和原來的x約相似越好,就像你用壓縮然見解壓一個(gè)壓縮文件一樣.如果我們把Decoder記做函數(shù)p,那么Decoder就是在做:
這個(gè)模型似乎是一個(gè)天然的降維模型.但是,除了降維,Autoencoder還能干什么?
圖片降噪(ImageDenosiong),輸入嘈雜的圖像,Autoencoder可以生成清晰無噪聲的圖像.當(dāng)把數(shù)據(jù)輸入自編碼器后,我們可以強(qiáng)制讓自編碼器的隱層學(xué)習(xí)更魯棒的特征,而不是僅僅識(shí)別他們,這樣的自編碼器,在下圖左邊的圖上進(jìn)行訓(xùn)練,就可以把中間的噪聲數(shù)據(jù),重建成右邊的樣子。
語義哈希,這可以降低數(shù)據(jù)的維度,加速信息檢索,目前有非常的人在研究這一方向.
生成模型,比如本系列文章要介紹的AdversarialAutoencoder(AAE)
其他大量應(yīng)用
2.PyTorch實(shí)現(xiàn)
我們先從簡單的全連接網(wǎng)絡(luò)開始我們的第一部分.
這個(gè)Encoder包含的輸入層,兩層隱層,每層1000個(gè)節(jié)點(diǎn),一個(gè)輸出層層數(shù)為2
所以,整個(gè)模型是:
模型實(shí)現(xiàn)完成后,我們要準(zhǔn)備一下數(shù)據(jù):
我們選擇MSE損失函數(shù)來度量重構(gòu)出來的圖像與原來的圖像x的相似程度
接下來就可以實(shí)現(xiàn)訓(xùn)練步驟了:
可以看一下重建的圖像怎么樣:
我們可以觀察到,輸入的這張3的圖片,一些奇怪的地方唄去掉了(3的左上角).
接下來,讓我們看一下latentcode,它只有2維,我們可以隨便填一個(gè)值讓Decoder去生成圖片,比如我們認(rèn)為的令,讓后將它輸入到Decoder中:
這好像是個(gè)6的圖片,當(dāng)然也可能是0,不管怎么說,這不是一個(gè)清晰的數(shù)字圖片.這是因?yàn)镋ncoder的輸出并不能覆蓋整個(gè)2維空間(它的輸出分布有很多空白)。因此,如果我們輸入一些Decoder沒見過的值,我們會(huì)看到一下奇怪的輸出圖像。這可以通過在生成latentcode時(shí),將Encoder的輸出限制為隨機(jī)分布(比如,均值為0.0和標(biāo)準(zhǔn)偏差為2.0的正態(tài)分布)。AdversarialAutoencoder就是這么做到的,我們將在第2部分中看看它的實(shí)現(xiàn)。
標(biāo)簽:
中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>新品發(fā)布:CD300系列總線型伺服驅(qū)動(dòng)器
2024-10-31
2024-10-31
2024-10-31
新勢(shì)能 新期待|維智B1L直線伺服驅(qū)動(dòng)器
2024-10-31
2024-10-29
2024-10-18
推薦專題
更多>