精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文讀懂自動(dòng)編碼器的前世今生

新聞 前端
變分自動(dòng)編碼器(VAE)可以說是最實(shí)用的自動(dòng)編碼器,但是在討論VAE之前,還必須了解一下用于數(shù)據(jù)壓縮或去噪的傳統(tǒng)自動(dòng)編碼器。
[[266178]]

變分自動(dòng)編碼器(VAE)可以說是最實(shí)用的自動(dòng)編碼器,但是在討論VAE之前,還必須了解一下用于數(shù)據(jù)壓縮或去噪的傳統(tǒng)自動(dòng)編碼器。

變分自動(dòng)編碼器的厲害之處

假設(shè)你正在開發(fā)一款開放性世界端游,且游戲里的景觀設(shè)定相當(dāng)復(fù)雜。

你聘用了一個(gè)圖形設(shè)計(jì)團(tuán)隊(duì)來制作一些植物和樹木以裝飾游戲世界,但是將這些裝飾植物放進(jìn)游戲中之后,你發(fā)現(xiàn)它們看起來很不自然,因?yàn)橥N植物的外觀看起來一模一樣,這時(shí)你該怎么辦呢?

首先,你可能會(huì)建議使用一些參數(shù)化來嘗試隨機(jī)地改變圖像,但是多少改變才足夠呢?又需要多大的改變呢?還有一個(gè)重要的問題:實(shí)現(xiàn)這種改變的計(jì)算強(qiáng)度如何?

這是使用變分自動(dòng)編碼器的理想情況。我們可以訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò),使其學(xué)習(xí)植物的潛在特征,每當(dāng)我們將一個(gè)植物放入游戲世界中,就可以從“已學(xué)習(xí)”的特征中隨機(jī)抽取一個(gè)樣本,生成獨(dú)特的植物。事實(shí)上,很多開放性世界游戲正在通過這種方法構(gòu)建他們的游戲世界設(shè)定。

再看一個(gè)更圖形化的例子。假設(shè)我們是一個(gè)建筑師,想要為任意形狀的建筑生成平面圖。可以讓一個(gè)自動(dòng)編碼器網(wǎng)絡(luò)基于任意建筑形狀來學(xué)習(xí)數(shù)據(jù)生成分布,它將從數(shù)據(jù)生成分布中提取樣本來生成一個(gè)平面圖。詳見下方的動(dòng)畫。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

對(duì)于設(shè)計(jì)師來說,這些技術(shù)的潛力無疑是最突出的。

再假設(shè)我們?yōu)橐粋€(gè)時(shí)裝公司工作,需要設(shè)計(jì)一種新的服裝風(fēng)格,可以基于“時(shí)尚”的服裝來訓(xùn)練自動(dòng)編碼器,使其學(xué)習(xí)時(shí)裝的數(shù)據(jù)生成分布。隨后,從這個(gè)低維潛在分布中提取樣本,并以此來創(chuàng)造新的風(fēng)格。

在該節(jié)中我們將研究fashion MNIST數(shù)據(jù)集。

自動(dòng)編碼器

傳統(tǒng)自動(dòng)編碼器

自動(dòng)編碼器其實(shí)就是非常簡(jiǎn)單的神經(jīng)結(jié)構(gòu)。它們大體上是一種壓縮形式,類似于使用MP3壓縮音頻文件或使用jpeg壓縮圖像文件。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

自動(dòng)編碼器與主成分分析(PCA)密切相關(guān)。事實(shí)上,如果自動(dòng)編碼器使用的激活函數(shù)在每一層中都是線性的,那么瓶頸處存在的潛在變量(網(wǎng)絡(luò)中最小的層,即代碼)將直接對(duì)應(yīng)(PCA/主成分分析)的主要組件。通常,自動(dòng)編碼器中使用的激活函數(shù)是非線性的,典型的激活函數(shù)是ReLU(整流線性函數(shù))和sigmoid/S函數(shù)。

網(wǎng)絡(luò)背后的數(shù)學(xué)原理理解起來相對(duì)容易。從本質(zhì)上看,可以把網(wǎng)絡(luò)分成兩個(gè)部分:編碼器和解碼器。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

編碼器函數(shù)用ϕ表示,該函數(shù)將原始數(shù)據(jù)X映射到潛在空間F中(潛在空間F位于瓶頸處)。解碼器函數(shù)用ψ表示,該函數(shù)將瓶頸處的潛在空間F映射到輸出函數(shù)。此處的輸出函數(shù)與輸入函數(shù)相同。因此,我們基本上是在一些概括的非線性壓縮之后重建原始圖像。

編碼網(wǎng)絡(luò)可以用激活函數(shù)傳遞的標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)函數(shù)表示,其中z是潛在維度。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

相似地,解碼網(wǎng)絡(luò)可以用相同的方式表示,但需要使用不同的權(quán)重、偏差和潛在的激活函數(shù)。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

隨后就可以利用這些網(wǎng)絡(luò)函數(shù)來編寫損失函數(shù),我們會(huì)利用這個(gè)損失函數(shù)通過標(biāo)準(zhǔn)的反向傳播程序來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

由于輸入和輸出的是相同的圖像,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程并不是監(jiān)督學(xué)習(xí)或無監(jiān)督學(xué)習(xí),我們通常將這個(gè)過程稱為自我監(jiān)督學(xué)習(xí)。自動(dòng)編碼器的目的是選擇編碼器和解碼器函數(shù),這樣就可以用最少的信息來編碼圖像,使其可以在另一側(cè)重新生成。

如果在瓶頸層中使用的節(jié)點(diǎn)太少,重新創(chuàng)建圖像的能力將受到限制,導(dǎo)致重新生成的圖像模糊或者和原圖像差別很大。如果使用的節(jié)點(diǎn)太多,那么就沒必要壓縮了。

壓縮背后的理論其實(shí)很簡(jiǎn)單,例如,每當(dāng)你在Netflix下載某些內(nèi)容時(shí),發(fā)送給你的數(shù)據(jù)都會(huì)被壓縮。一旦這個(gè)內(nèi)容傳輸?shù)诫娔X上就會(huì)通解壓算法在電腦屏幕顯示出來。這類似于zip文件的運(yùn)行方式,只是這里說的壓縮是在后臺(tái)通過流處理算法完成的。

去噪自動(dòng)編碼器

有幾種其它類型的自動(dòng)編碼器。其中最常用的是去噪自動(dòng)編碼器,本教程稍后會(huì)和Keras一起進(jìn)行分析。這些自動(dòng)編碼器在訓(xùn)練前給數(shù)據(jù)添加一些白噪聲,但在訓(xùn)練時(shí)會(huì)將誤差與原始圖像進(jìn)行比較。這就使得網(wǎng)絡(luò)不會(huì)過度擬合圖像中出現(xiàn)的任意噪聲。稍后,將使用它來清除文檔掃描圖像中的折痕和暗黑區(qū)域。

稀疏自動(dòng)編碼器

與其字義相反的是,稀疏自動(dòng)編碼器具有比輸入或輸出維度更大的潛在維度。然而,每次網(wǎng)絡(luò)運(yùn)行時(shí),只有很小一部分神經(jīng)元會(huì)觸發(fā),這意味著網(wǎng)絡(luò)本質(zhì)上是“稀疏”的。稀疏自動(dòng)編碼器也是通過一種規(guī)則化的形式來減少網(wǎng)絡(luò)過度擬合的傾向,這一點(diǎn)與去噪自動(dòng)編碼器相似。

收縮自動(dòng)編碼器

收縮編碼器與前兩個(gè)自動(dòng)編碼器的運(yùn)行過程基本相同,但是在收縮自動(dòng)編碼器中,我們不改變結(jié)構(gòu),只是在丟失函數(shù)中添加一個(gè)正則化器。這可以被看作是嶺回歸的一種神經(jīng)形式。

現(xiàn)在了解了自動(dòng)編碼器是如何運(yùn)行的,接下來看看自動(dòng)編碼器的弱項(xiàng)。一些最顯著的挑戰(zhàn)包括:

· 潛在空間中的間隙

· 潛在空間中的可分性

· 離散潛在空間

這些問題都在以下圖中體現(xiàn)。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

MNIST數(shù)據(jù)集的潛在空間表示

這張圖顯示了潛在空間中不同標(biāo)記數(shù)字的位置。可以看到潛在空間中存在間隙,我們不知道字符在這些空間中是長(zhǎng)什么樣的。這相當(dāng)于在監(jiān)督學(xué)習(xí)中缺乏數(shù)據(jù),因?yàn)榫W(wǎng)絡(luò)并沒有針對(duì)這些潛在空間的情況進(jìn)行過訓(xùn)練。另一個(gè)問題就是空間的可分性,上圖中有幾個(gè)數(shù)字被很好地分離,但也有一些區(qū)域被標(biāo)簽字符是隨機(jī)分布的,這讓我們很難區(qū)分字符的獨(dú)特特征(在這個(gè)圖中就是數(shù)字0-9)。還有一個(gè)問題是無法研究連續(xù)的潛在空間。例如,我們沒有針對(duì)任意輸入而訓(xùn)練的統(tǒng)計(jì)模型(即使我們填補(bǔ)了潛在空間中的所有間隙也無法做到)。

這些傳統(tǒng)自動(dòng)編碼器的問題意味著我們還要做出更多努力來學(xué)習(xí)數(shù)據(jù)生成分布并生成新的數(shù)據(jù)與圖像。

現(xiàn)在已經(jīng)了解了傳統(tǒng)自動(dòng)編碼器是如何運(yùn)行的,接下來討論變分自動(dòng)編碼器。變分自動(dòng)編碼器采用了一種從貝葉斯統(tǒng)計(jì)中提取的變分推理形式,因此會(huì)比前幾種自動(dòng)編碼器稍微復(fù)雜一些。我們會(huì)在下一節(jié)中更深入地討論變分自動(dòng)編碼器。

變分自動(dòng)編碼器

變分自動(dòng)編碼器延續(xù)了傳統(tǒng)自動(dòng)編碼器的結(jié)構(gòu),并利用這一結(jié)構(gòu)來學(xué)習(xí)數(shù)據(jù)生成分布,這讓我們可以從潛在空間中隨機(jī)抽取樣本。然后,可以使用解碼器網(wǎng)絡(luò)對(duì)這些隨機(jī)樣本進(jìn)行解碼,以生成獨(dú)特的圖像,這些圖像與網(wǎng)絡(luò)所訓(xùn)練的圖像具有相似的特征。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

對(duì)于熟悉貝葉斯統(tǒng)計(jì)的人來說,編碼器正在學(xué)習(xí)后驗(yàn)分布的近似值。這種分布通常很難分析,因?yàn)樗鼪]有封閉式的解。這意味著我們要么執(zhí)行計(jì)算上復(fù)雜的采樣程序,如馬爾可夫鏈蒙特卡羅(MCMC)算法,要么采用變分方法。正如你可能猜測(cè)的那樣,變分自動(dòng)編碼器使用變分推理來生成其后驗(yàn)分布的近似值。

我們將會(huì)用適量的細(xì)節(jié)來討論這一過程,但是如果你想了解更深入的分析,建議你閱覽一下Jaan Altosaar撰寫的博客。變分推理是研究生機(jī)器學(xué)習(xí)課程或統(tǒng)計(jì)學(xué)課程的一個(gè)主題,但是了解其基本概念并不需要擁有一個(gè)統(tǒng)計(jì)學(xué)學(xué)位。

若對(duì)背后的數(shù)學(xué)理論不感興趣,也可以選擇跳過這篇變分自動(dòng)編碼器(VAE)編碼教程。

首先需要理解的是后驗(yàn)分布以及它無法被計(jì)算的原因。先看看下面的方程式:貝葉斯定理。這里的前提是要知道如何從潛變量“z”生成數(shù)據(jù)“x”。這意味著要搞清p(z|x)。然而,該分布值是未知的,不過這并不重要,因?yàn)樨惾~斯定理可以重新表達(dá)這個(gè)概率。但是這還沒有解決所有的問題,因?yàn)榉帜福ㄗC據(jù))通常很難解。但也不是就此束手無辭了,還有一個(gè)挺有意思的辦法可以近似這個(gè)后驗(yàn)分布值。那就是將這個(gè)推理問題轉(zhuǎn)化為一個(gè)優(yōu)化問題。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

要近似后驗(yàn)分布值,就必須找出一個(gè)辦法來評(píng)估提議分布與真實(shí)后驗(yàn)分布相比是否更好。而要這么做,就需要貝葉斯統(tǒng)計(jì)員的最佳伙伴:KL散度。KL散度是兩個(gè)概率分布相似度的度量。如果它們相等,那散度為零;而如果散度是正值,就代表這兩個(gè)分布不相等。KL散度的值為非負(fù)數(shù),但實(shí)際上它不是一個(gè)距離,因?yàn)樵摵瘮?shù)不具有對(duì)稱性。可以采用下面的方式使用KL散度:

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

這個(gè)方程式看起來可能有點(diǎn)復(fù)雜,但是概念相對(duì)簡(jiǎn)單。那就是先猜測(cè)可能生成數(shù)據(jù)的方式,并提出一系列潛在分布Q,然后再找出最佳分布q*,從將提議分布和真實(shí)分布的距離最小化,然后因其難解性將其近似。但這個(gè)公式還是有一個(gè)問題,那就是p(z|x)的未知值,所以也無法計(jì)算KL散度。那么,應(yīng)該怎么解決這個(gè)問題呢?

這里就需要一些內(nèi)行知識(shí)了。可以先進(jìn)行一些計(jì)算上的修改并針對(duì)證據(jù)下界(ELBO)和p(x)重寫KL散度:

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

有趣的是ELBO是這個(gè)方程中唯一取決于所選分布的變量。而后者由于不取決于q,則不受所選分布的影響。因此,可以在上述方程中通過將ELBO(負(fù)值)最大化來使KL散度最小化。這里的重點(diǎn)是ELBO可以被計(jì)算,也就是說現(xiàn)在可以進(jìn)行一個(gè)優(yōu)化流程。

所以現(xiàn)在要做的就是給Q做一個(gè)好的選擇,再微分ELBO,將其設(shè)為零,然后就大功告成了。可是開始的時(shí)候就會(huì)面臨一些障礙,即必須選擇最好的分布系列。

一般來說,為了簡(jiǎn)化定義q的過程,會(huì)進(jìn)行平均場(chǎng)變分推理。每個(gè)變分參數(shù)實(shí)質(zhì)上是相互獨(dú)立的。因此,每個(gè)數(shù)據(jù)點(diǎn)都有一個(gè)單獨(dú)的q,可被相稱以得到一個(gè)聯(lián)合概率,從而獲得一個(gè)“平均場(chǎng)”q。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

實(shí)際上,可以選用任意多的場(chǎng)或者集群。比如在MINIST數(shù)據(jù)集中,可以選擇10個(gè)集群,因?yàn)榭赡苡?0個(gè)數(shù)字存在。

要做的第二件事通常被稱為再參數(shù)化技巧,通過把隨機(jī)變量帶離導(dǎo)數(shù)完成,因?yàn)閺碾S機(jī)變量求導(dǎo)數(shù)的話會(huì)由于它的內(nèi)在隨機(jī)性而產(chǎn)生較大的誤差。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

再參數(shù)化技巧較為深?yuàn)W,但簡(jiǎn)單來說就是可以將一個(gè)正態(tài)分布寫成均值加標(biāo)準(zhǔn)差,再乘以誤差。這樣在微分時(shí),我們不是從隨機(jī)變量本身求導(dǎo)數(shù),而是從它的參數(shù)求得。

這個(gè)程序沒有一個(gè)通用的閉型解,所以近似后驗(yàn)分布的能力仍然受到一定限制。然而,指數(shù)分布族確實(shí)有一個(gè)閉型解。這意味著標(biāo)準(zhǔn)分布,如正態(tài)分布、二項(xiàng)分布、泊松分布、貝塔分布等。所以,就算真正的后驗(yàn)分布值無法被查出,依然可以利用指數(shù)分布族得出最接近的近似值。

變分推理的奧秘在于選擇分布區(qū)Q,使其足夠大以求得后驗(yàn)分布的近似值,但又不需要很長(zhǎng)時(shí)間來計(jì)算。

既然已經(jīng)大致了解如何訓(xùn)練網(wǎng)絡(luò)學(xué)習(xí)數(shù)據(jù)的潛在分布,那么現(xiàn)在可以探討如何使用這個(gè)分布生成數(shù)據(jù)。

數(shù)據(jù)生成過程

觀察下圖,可以看出對(duì)數(shù)據(jù)生成過程的近似認(rèn)為應(yīng)生成數(shù)字‘2’,所以它從潛在變量質(zhì)心生成數(shù)值2。但是也許不希望每次都生成一摸一樣的數(shù)字‘2’,就好像上述端游例子所提的植物,所以我們根據(jù)一個(gè)隨機(jī)數(shù)和“已學(xué)”的數(shù)值‘2’分布范圍,在潛在空間給這一過程添加了一些隨機(jī)噪聲。該過程通過解碼器網(wǎng)絡(luò)后,我們得到了一個(gè)和原型看起來不一樣的‘2’。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

這是一個(gè)非常簡(jiǎn)化的例子,抽象描述了實(shí)際自動(dòng)編碼器網(wǎng)絡(luò)的體系結(jié)構(gòu)。下圖表示了一個(gè)真實(shí)變分自動(dòng)編碼器在其編碼器和解碼器網(wǎng)絡(luò)使用卷積層的結(jié)構(gòu)體系。從這里可以觀察到,我們正在分別學(xué)習(xí)潛在空間中生成數(shù)據(jù)分布的中心和范圍,然后從這些分布“抽樣”生成本質(zhì)上“虛假”的數(shù)據(jù)。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

該學(xué)習(xí)過程的固有性代表所有看起來很相似的參數(shù)(刺激相同的網(wǎng)絡(luò)神經(jīng)元放電)都聚集到潛在空間中,而不是隨意的分散。如下圖所示,可以看到數(shù)值2都聚集在一起,而數(shù)值3都逐漸地被推開。這一過程很有幫助,因?yàn)檫@代表網(wǎng)絡(luò)并不會(huì)在潛在空間隨意擺放字符,從而使數(shù)值之間的轉(zhuǎn)換更有真實(shí)性。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

整個(gè)網(wǎng)絡(luò)體系結(jié)構(gòu)的概述如下圖所示。希望讀者看到這里,可以比較清晰地理解整個(gè)過程。我們使用一組圖像訓(xùn)練自動(dòng)編碼器,讓它學(xué)習(xí)潛在空間里均值和標(biāo)準(zhǔn)值的差,從而形成我們的數(shù)據(jù)生成分布。接下來,當(dāng)我們要生成一個(gè)類似的圖像,就從潛在空間的一個(gè)質(zhì)心取樣,利用標(biāo)準(zhǔn)差和一些隨機(jī)誤差對(duì)它進(jìn)行輕微的改變,然后使其通過解碼器網(wǎng)絡(luò)。從這個(gè)例子可以明顯看出,最終的輸出看起來與輸入圖像相似,但卻是不一樣的。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

變分自動(dòng)編碼器編碼指南

本節(jié)將討論一個(gè)簡(jiǎn)單的去噪自動(dòng)編碼器,用于去除文檔掃描圖像上的折痕和污痕,以及去除Fashion MNIST數(shù)據(jù)集中的噪聲。然后,在MNIST數(shù)據(jù)集訓(xùn)練網(wǎng)絡(luò)后,就使用變分自動(dòng)編碼器生成新的服裝。

去噪自編碼器

Fashion MNIST

在第一個(gè)練習(xí)中,在Fashion MNIST數(shù)據(jù)集添加一些隨機(jī)噪聲(椒鹽噪聲),然后使用去噪自編碼器嘗試移除噪聲。首先進(jìn)行預(yù)處理:下載數(shù)據(jù),調(diào)整數(shù)據(jù)大小,然后添加噪聲。

  1. ## Download the data 
  2. (x_train, y_train), (x_test, y_test) = datasets.fashion_mnist.load_data() 
  3. ## normalize and reshape 
  4. x_train = x_train/255
  5. x_test = x_test/255
  6. x_train = x_train.reshape(-128281
  7. x_test = x_test.reshape(-128281
  8. # Lets add sample noise - Salt and Pepper 
  9. noise = augmenters.SaltAndPepper(0.1
  10. seq_object = augmenters.Sequential([noise]) 
  11. train_x_n = seq_object.augment_images(x_train * 255) / 255 
  12. val_x_n = seq_object.augment_images(x_test * 255) / 255 

接著,給自編碼器網(wǎng)絡(luò)創(chuàng)建結(jié)構(gòu)。這包括多層卷積神經(jīng)網(wǎng)絡(luò)、編碼器網(wǎng)絡(luò)的最大池化層和解碼器網(wǎng)絡(luò)上的升級(jí)層。

  1. # input layer 
  2. input_layer =Input(shape=(28281)) 
  3.   
  4. # encodingarchitecture 
  5. encoded_layer1= Conv2D(64, (33), activation='relu', padding='same')(input_layer) 
  6. encoded_layer1= MaxPool2D( (22), padding='same')(encoded_layer1) 
  7. encoded_layer2= Conv2D(32, (33), activation='relu', padding='same')(encoded_layer1) 
  8. encoded_layer2= MaxPool2D( (22), padding='same')(encoded_layer2) 
  9. encoded_layer3= Conv2D(16, (33), activation='relu', padding='same')(encoded_layer2) 
  10. latent_view = MaxPool2D( (22),padding='same')(encoded_layer3) 
  11.   
  12. # decodingarchitecture 
  13. decoded_layer1= Conv2D(16, (33), activation='relu', padding='same')(latent_view) 
  14. decoded_layer1= UpSampling2D((22))(decoded_layer1) 
  15. decoded_layer2= Conv2D(32, (33), activation='relu', padding='same')(decoded_layer1) 
  16. decoded_layer2= UpSampling2D((22))(decoded_layer2) 
  17. decoded_layer3= Conv2D(64, (33), activation='relu')(decoded_layer2) 
  18. decoded_layer3= UpSampling2D((22))(decoded_layer3) 
  19. output_layer = Conv2D(1, (33), padding='same',activation='sigmoid')(decoded_layer3) 
  20.   
  21. # compile themodel 
  22. model =Model(input_layer, output_layer) 
  23. model.compile(optimizer='adam',loss='mse'
  24.   
  25. # run themodel 
  26. early_stopping= EarlyStopping(monitor='val_loss', min_delta=0, patience=10, verbose=5,mode='auto'
  27. history =model.fit(train_x_n, x_train, epochs=20, batch_size=2048,validation_data=(val_x_n, x_test), callbacks=[early_stopping]) 

所輸入的圖像,添加噪聲的圖像,和輸出圖像。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

從時(shí)尚MNIST輸入的圖像。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

添加椒鹽噪聲的輸入圖像。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

從去噪網(wǎng)絡(luò)輸出的圖像。

從這里可以看到,我們成功從噪聲圖像去除相當(dāng)?shù)脑肼暎瑫r(shí)也失去了一定量的服裝細(xì)節(jié)的分辨率。這是使用穩(wěn)健網(wǎng)絡(luò)所需付出的代價(jià)之一。可以對(duì)該網(wǎng)絡(luò)進(jìn)行調(diào)優(yōu),使最終的輸出更能代表所輸入的圖像。

文本清理

去噪自編碼器的第二個(gè)例子包括清理掃描圖像的折痕和暗黑區(qū)域。這是最終獲得的輸入和輸出圖像。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

輸入的有噪聲文本數(shù)據(jù)圖像。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

經(jīng)清理的文本圖像。

為此進(jìn)行的數(shù)據(jù)預(yù)處理稍微復(fù)雜一些,因此就不在這里進(jìn)行介紹,預(yù)處理過程和相關(guān)數(shù)據(jù)可在GitHub庫里獲取。網(wǎng)絡(luò)結(jié)構(gòu)如下:

  1. input_layer= Input(shape=(2585401)) 
  2.   
  3. #encoder 
  4. encoder= Conv2D(64, (33), activation='relu', padding='same')(input_layer) 
  5. encoder= MaxPooling2D((22), padding='same')(encoder) 
  6.   
  7. #decoder 
  8. decoder= Conv2D(64, (33), activation='relu', padding='same')(encoder) 
  9. decoder= UpSampling2D((22))(decoder) 
  10. output_layer= Conv2D(1, (33), activation='sigmoid', padding='same')(decoder) 
  11.   
  12. ae =Model(input_layer, output_layer) 
  13.   
  14. ae.compile(loss='mse',optimizer=Adam(lr=0.001)) 
  15.   
  16. batch_size= 16 
  17. epochs= 200 
  18.   
  19. early_stopping= EarlyStopping(monitor='val_loss',min_delta=0,patience=5,verbose=1,mode='auto'
  20. history= ae.fit(x_train, y_train, batch_size=batch_size, epochs=epochs,validation_data=(x_val, y_val), callbacks=[early_stopping]) 

變分自編碼器

最后的壓軸戲,是嘗試從FashionMNIST數(shù)據(jù)集現(xiàn)有的服裝中生成新圖像。

其中的神經(jīng)結(jié)構(gòu)較為復(fù)雜,包含了一個(gè)稱‘Lambda’層的采樣層。

  1. batch_size = 16 
  2. latent_dim = 2 # Number of latent dimension parameters 
  3. # ENCODER ARCHITECTURE: Input -> Conv2D*4 -> Flatten -> Dense 
  4. input_img = Input(shape=(28281)) 
  5. x = Conv2D(323
  6.  padding='same',  
  7.  activation='relu')(input_img) 
  8. x = Conv2D(643
  9.  padding='same',  
  10.  activation='relu'
  11.  strides=(22))(x) 
  12. x = Conv2D(643
  13.  padding='same',  
  14.  activation='relu')(x) 
  15. x = Conv2D(643
  16.  padding='same',  
  17.  activation='relu')(x) 
  18. # need to know the shape of the network here for the decoder 
  19. shape_before_flattening = K.int_shape(x) 
  20. x = Flatten()(x) 
  21. x = Dense(32, activation='relu')(x) 
  22. # Two outputs, latent mean and (log)variance 
  23. z_mu = Dense(latent_dim)(x) 
  24. z_log_sigma = Dense(latent_dim)(x) 
  25. ## SAMPLING FUNCTION 
  26. def sampling(args): 
  27.  z_mu, z_log_sigma = args epsilon = K.random_normal(shape=(K.shape(z_mu)[0], latent_dim), 
  28.  mean=0., stddev=1.) 
  29.  return z_mu + K.exp(z_log_sigma) * epsilon 
  30. # sample vector from the latent distribution 
  31. z = Lambda(sampling)([z_mu, z_log_sigma]) 
  32. ## DECODER ARCHITECTURE 
  33. # decoder takes the latent distribution sample as input 
  34. decoder_input = Input(K.int_shape(z)[1:]) 
  35. # Expand to 784 total pixels 
  36. x = Dense(np.prod(shape_before_flattening[1:]), 
  37.  activation='relu')(decoder_input) 
  38. # reshape 
  39. x = Reshape(shape_before_flattening[1:])(x) 
  40. # use Conv2DTranspose to reverse the conv layers from the encoder 
  41. x = Conv2DTranspose(323
  42.  padding='same',  
  43.  activation='relu'
  44.  strides=(22))(x) 
  45. x = Conv2D(13
  46.  padding='same',  
  47.  activation='sigmoid')(x) 
  48. # decoder model statement 
  49. decoder = Model(decoder_input, x) 
  50. # apply the decoder to the sample from the latent distribution 
  51. z_decoded = decoder(z) 

這就是體系結(jié)構(gòu),但還是需要插入損失函數(shù)再合并KL散度。

  1. # construct a custom layer to calculate the loss 
  2. class CustomVariationalLayer(Layer): 
  3.  def vae_loss(self, x, z_decoded): 
  4.  x = K.flatten(x) 
  5.  z_decoded = K.flatten(z_decoded) 
  6.  # Reconstruction loss 
  7.  xent_loss = binary_crossentropy(x, z_decoded) 
  8.  # KL divergence 
  9.  kl_loss = -5e-4 * K.mean(1 + z_log_sigma - K.square(z_mu) - K.exp(z_log_sigma), axis=-1
  10.  return K.mean(xent_loss + kl_loss) 
  11.  # adds the custom loss to the class 
  12.  def call(self, inputs): 
  13.  x = inputs[0
  14.  z_decoded = inputs[1
  15.  loss = self.vae_loss(x, z_decoded) 
  16.  self.add_loss(loss, inputs=inputs) 
  17.  return x 
  18. # apply the custom loss to the input images and the decoded latent distribution sample 
  19. y = CustomVariationalLayer()([input_img, z_decoded]) 
  20. # VAE model statement 
  21. vae = Model(input_img, y) 
  22. vae.compile(optimizer='rmsprop', loss=None) 
  23. vae.fit(x=train_x, y=None, 
  24.  shuffle=True, 
  25.  epochs=20
  26.  batch_size=batch_size, 
  27.  validation_data=(val_x, None)) 

現(xiàn)在,可以查看重構(gòu)的樣本,看看網(wǎng)絡(luò)能夠?qū)W習(xí)到什么。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

從這里可以清楚看到鞋子、手袋和服裝之間的過渡。在此并沒有標(biāo)出所有使畫面更清晰的潛在空間。也可以觀察到Fashion MNIST數(shù)據(jù)集現(xiàn)有的10件服裝的潛在空間和顏色代碼。

代碼詳解:一文讀懂自動(dòng)編碼器的前世今生

可看出這些服飾分成了不同的集群。

責(zé)任編輯:張燕妮 來源: 頭條科技
相關(guān)推薦

2020-05-15 15:29:36

Stata數(shù)據(jù)分析

2022-03-13 18:27:09

Redis數(shù)據(jù)庫開源

2019-01-16 09:56:27

2018-05-31 09:46:04

車聯(lián)網(wǎng)智能交通ITS

2017-09-24 12:13:52

深度學(xué)習(xí)自動(dòng)編碼器機(jī)器學(xué)習(xí)

2017-06-09 08:49:49

2024-07-11 10:27:52

2023-02-18 18:33:08

計(jì)算機(jī)前世今生

2021-03-05 09:10:19

base64編碼

2022-02-15 08:07:17

測(cè)試軟件開發(fā)

2022-09-21 09:04:07

Python裝飾器

2025-01-26 15:02:47

2021-08-04 16:06:45

DataOps智領(lǐng)云

2023-12-22 19:59:15

2020-12-29 09:56:29

瀏覽器緩存HTTP

2024-01-29 00:28:01

2024-02-29 14:27:37

人工智能機(jī)器學(xué)習(xí)物聯(lián)網(wǎng)

2021-12-17 10:09:47

編碼器語言模型DeepMind

2018-08-08 16:08:45

深度學(xué)習(xí)機(jī)器學(xué)習(xí)NLP

2021-09-09 09:29:03

AI 數(shù)據(jù)模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91欧美精品成人综合在线观看| 这里只有精品丝袜| 国产高清精品在线观看| 国产美女性感在线观看懂色av| 免费成人在线视频观看| 欧美尺度大的性做爰视频| 最近中文字幕无免费| 精品欧美一区二区三区在线观看| 1000部国产精品成人观看| 国内一区二区三区在线视频| 中文字幕理论片| 99国内精品| 久久人人爽亚洲精品天堂| 欧美日韩一区二区三区四区五区六区| 国产精品久久久久av电视剧| 亚洲自拍另类综合| 亚洲欧洲久久| 青青操视频在线| 国产精品乡下勾搭老头1| 日韩av观看网址| 妺妺窝人体色www在线下载| 精品国产aⅴ| 亚洲精品在线三区| 肉色超薄丝袜脚交| 午夜av成人| 午夜精品久久久久久久99水蜜桃 | 日韩免费在线观看视频| 精国产品一区二区三区a片| 欧美日韩一区二区三区视频播放| 精品999在线播放| 免费黄频在线观看| 国产精品黄色片| 色悠悠亚洲一区二区| 91九色丨porny丨国产jk| 午夜精品一区| 国产嫩草影院久久久久| 久久久av水蜜桃| 三级小视频在线观看| 国产精品一区二区久久不卡| 国产美女91呻吟求| 伊人亚洲综合网| 日韩精品一二三| 日本一区二区在线播放| 中文字幕日韩一级| 精品99视频| 欧美激情一区二区久久久| 一区二区成人免费视频| 欧美电影一二区| 中国人与牲禽动交精品| 性欧美精品中出| 妖精视频一区二区三区免费观看 | 中文字幕人妻一区二区三区| 成人自拍视频| 日韩三区在线观看| 国产人妻精品午夜福利免费| 一区二区精彩视频| 精品国产制服丝袜高跟| 日韩精品――色哟哟| 一区二区三区四区视频免费观看 | 国产999在线| 丰满人妻老熟妇伦人精品| 亚洲一区二区动漫| 欧洲精品在线视频| 无码人妻av免费一区二区三区| 美女尤物久久精品| 国产精品久久电影观看| 中文av免费观看| 激情欧美一区二区三区在线观看| 精品女厕一区二区三区| 日韩av中文在线| 国产成人av片| 日韩av午夜| 亚洲免费av网址| 东京热无码av男人的天堂| 成人激情诱惑| 久久天天躁夜夜躁狠狠躁2022| 国产97免费视频| 伊人久久大香线蕉综合热线| 91成人性视频| 中文字幕第三页| 国产一区二区三区免费看| 成人自拍网站| 日韩偷拍自拍| 国产精品素人一区二区| 波多野结衣与黑人| 在线天堂中文资源最新版| 91国在线观看| 秋霞午夜鲁丝一区二区| 欧美精品中文| 日韩网站免费观看高清| 国产一级视频在线观看| 性久久久久久| 成人免费网站在线| 头脑特工队2免费完整版在线观看 头脑特工队2在线播放 | 欧美成人午夜剧场免费观看| 日本系列第一页| 蜜臀av性久久久久av蜜臀妖精| 亚洲自拍偷拍色图| 九色视频网站在线观看| 亚洲另类色综合网站| 久久久久久久中文| 综合久久av| 日韩精品在线观看网站| 日韩精品一区二区亚洲av性色| 亚洲精品专区| 成人精品在线视频| 欧美精品少妇| 亚洲一区二区视频在线观看| 三级在线免费看| 国产精品22p| 色狠狠av一区二区三区香蕉蜜桃| 黄色一级片免费看| 国产自产高清不卡| 色阁综合av| 狼人综合视频| 欧美一级日韩一级| ass极品国模人体欣赏| 亚洲第一精品影视| 成人两性免费视频| 成人高清免费在线播放| 五月婷婷激情综合| 一级淫片在线观看| 欧美理论在线播放| 2019av中文字幕| 精品久久久中文字幕人妻| 国产精品久线在线观看| 无码人妻丰满熟妇区毛片| 成人看片黄a免费看视频| www.亚洲一区| 自拍偷拍福利视频| 337p粉嫩大胆噜噜噜噜噜91av | 蜜桃导航-精品导航| 国产亚av手机在线观看| 91精品国产综合久久精品| 娇妻被老王脔到高潮失禁视频| 99视频在线精品国自产拍免费观看| 92看片淫黄大片看国产片| 97最新国自产拍视频在线完整在线看| 欧美视频在线观看免费网址| 国产激情第一页| 激情综合亚洲| 国产精品久久久久久免费观看| 1769免费视频在线观看| 欧美久久一二区| 天天爽天天爽天天爽| 麻豆精品久久精品色综合| 日韩欧美电影一区二区| 国产v综合v| 国产一区二区三区毛片| 亚洲精品无码久久久久| 国产精品视频你懂的| 黄色片在线免费| 成人a'v在线播放| 国产精品综合久久久| √新版天堂资源在线资源| 欧美日韩在线电影| 黄色录像一级片| 国产一区高清在线| 肉大捧一出免费观看网站在线播放 | 天堂av在线播放| 欧美午夜视频在线观看| 天天躁日日躁aaaxxⅹ| 日韩成人精品在线| 亚洲视频精品一区| 亚洲精品一区av| 欧美猛交ⅹxxx乱大交视频| 性欧美videos另类hd| 亚洲午夜久久久久久久久久久| 怡红院一区二区| 午夜一级在线看亚洲| 奇米精品在线| 亚洲伦理网站| 午夜精品理论片| 黄色在线小视频| 欧美一区二区免费| 日韩精品一区二区av| 久久精品视频在线看| 国产一级片自拍| 亚洲午夜91| 欧美人与物videos另类| 美女久久久久久| 欧美激情免费在线| 男生女生差差差的视频在线观看| 欧美性大战久久| 久久在线视频精品| 国产午夜精品美女毛片视频| 久久精品国产99久久99久久久| 精品9999| 中文字幕中文字幕99| 国产成人一二| 国产在线高清精品| 黄色在线免费观看网站| 最近免费中文字幕视频2019| 亚洲精品免费在线观看视频| 欧美性xxxxxxxxx| 亚洲 欧美 变态 另类 综合| 成人av在线资源网站| 一级片视频免费观看| 激情六月综合| 一区二区三视频| 丝袜久久网站| 亚洲影视中文字幕| 亚洲伦理影院| 国产69精品久久久久9999| 亚乱亚乱亚洲乱妇| 日韩hd视频在线观看| 国产黄色片免费| 在线国产电影不卡| 亚洲国产精品午夜在线观看| 国产精品久久二区二区| 亚洲精品乱码久久久久久不卡| 久久99精品久久久久久动态图 | 亚洲最大的黄色网址| 91视频观看免费| 国产a√精品区二区三区四区| 免费观看久久久4p| 北条麻妃在线视频观看| 欧美成人精品| 一个色的综合| 欧美亚洲国产一区| 欧美高清性xxxxhd| 粉嫩av一区二区| 97久久天天综合色天天综合色hd| 成人性片免费| 国产v综合v亚洲欧美久久| 好看的中文字幕在线播放| 久久天堂电影网| 伊人在线视频| 亚洲一级免费视频| 三级在线电影| 亚洲激情国产精品| 成人午夜精品福利免费| 日韩一区二区免费在线观看| 国产一区二区三区在线观看| 在线精品视频免费播放| 久久久久久久久黄色| 精品久久香蕉国产线看观看亚洲| 国产亚洲精品成人| 亚洲精品少妇30p| 91香蕉一区二区三区在线观看| 国产喷白浆一区二区三区| 精品人妻互换一区二区三区| www成人在线观看| av网站有哪些| 久久影音资源网| 中文字幕xxx| 91蜜桃婷婷狠狠久久综合9色| 制服丝袜第一页在线观看| 国产白丝精品91爽爽久久| 男人女人拔萝卜视频| 国产精品一卡二卡在线观看| 日本成人在线免费| 波多野结衣视频一区| 性农村xxxxx小树林| 成年人网站91| 一二三不卡视频| 久久久不卡网国产精品二区| 国产 欧美 在线| 国产精品美女久久久久久2018 | 欧美一级片黄色| 99久久综合色| 欧美性猛交xxxx乱| 国产精品区一区二区三区| 国产人与禽zoz0性伦| 亚洲欧美日韩一区二区三区在线观看| 成人自拍小视频| 亚洲妇女屁股眼交7| 伊人久久综合视频| 欧美亚洲国产一区二区三区| 在线观看免费黄色小视频| 91麻豆精品国产无毒不卡在线观看 | 久久久久久久久久久久久9999| 国产精品一在线观看| 亚洲人成77777| 欧美精品福利| 欧美日韩亚洲一| 麻豆成人综合网| 特黄特色免费视频| 91年精品国产| 欧美一级特黄高清视频| 亚洲最大色网站| 天堂网免费视频| 91精品国产综合久久久久久| 日韩一卡二卡在线| 色哟哟入口国产精品| 第四色日韩影片| 日本视频久久久| 精品一区二区三区免费看| 国模精品娜娜一二三区| 三区四区不卡| 亚洲中文字幕无码中文字| 韩国三级电影一区二区| 亚洲制服丝袜在线播放| 国产精品久久久久久久午夜片| 久久香蕉精品视频| 欧美三日本三级三级在线播放| 粉嫩av一区二区夜夜嗨| 亚洲丝袜在线视频| 美女尤物在线视频| 国产精品免费久久久久久| 视频在线观看免费影院欧美meiju| 久久综合福利| 国产精品多人| 天堂网在线免费观看| 91色porny蝌蚪| 五月天丁香激情| 欧美色爱综合网| 青青青免费视频在线2| 久久99热这里只有精品国产 | 国产精品一区毛片| 日本一二三区在线| 欧美极品另类videosde| 天天操天天干视频| 日韩欧美亚洲国产另类| 在线视频91p| 国产91精品在线播放| 欧美日韩麻豆| 17c丨国产丨精品视频| 另类小说欧美激情| 熟女少妇内射日韩亚洲| 亚洲国产视频网站| 国内精品久久久久久久久久| 中文字幕亚洲欧美日韩高清| 色偷偷色偷偷色偷偷在线视频| 波多野结衣久草一区| 亚洲精品中文字幕乱码| 男女污污的视频| 久久久精品国产免费观看同学| 日本网站在线播放| 欧美不卡123| caoporn97在线视频| 成人欧美一区二区三区黑人| 精品国产乱码久久久| 99视频精品免费| 久久久久久久免费视频了| 天天操天天操天天操天天| 精品福利一区二区三区免费视频| av在线免费观看网址| 亚洲free嫩bbb| 综合天天久久| 特种兵之深入敌后| 亚洲精品欧美专区| 国产极品999| 欧美激情一级欧美精品| av男人一区| 成人精品视频在线播放| 成人性视频网站| 日本一二三区不卡| 日韩av在线高清| 日韩不卡免费高清视频| 日本一区二区三区视频免费看| 葵司免费一区二区三区四区五区| 成年人免费观看视频网站| 91久久精品一区二区三区| 国产私拍精品| 成人午夜在线影院| 国产精品99免费看| 亚洲精品乱码久久久久久久| 欧美日韩另类视频| 国产三级视频在线看| 国产精品日韩电影| 亚洲一区二区| 日韩av无码一区二区三区不卡| 黑人狂躁日本妞一区二区三区| 精彩国产在线| 国产日韩欧美中文| 欧美黄色免费| 中文在线一区二区三区| 在线区一区二视频| 久cao在线| 国产精品国产三级国产专区53| 免费看黄裸体一级大秀欧美| 日韩影视一区二区三区| 欧美一区二区私人影院日本| 成人在线高清免费| 免费成人看片网址| 另类小说综合欧美亚洲| 久久综合成人网| 亚洲人午夜精品免费| vam成人资源在线观看| 免费拍拍拍网站| 国产欧美视频在线观看| av网站在线免费看| 日本成人激情视频| 久久久久美女| 久久偷拍免费视频| 欧美日韩高清一区二区| 久久av色综合| 日韩一区二区三区资源| 国产福利91精品一区| 五月天激情国产综合婷婷婷| 日韩在线观看免费高清| 国产精品45p| 免费成年人高清视频| 黄色91在线观看| 国产欧美久久久久久久久| 久久国产手机看片| 国产综合色视频| 草莓视频18免费观看| 欧美日本啪啪无遮挡网站|