還不光是有個架子,訓(xùn)練過程也都呈現(xiàn)得明明白白。

比如隨著epoch(迭代次數(shù))的變化,訓(xùn)練過程中各層出現(xiàn)的實時變化。

為了能更清楚地展示網(wǎng)絡(luò)細(xì)節(jié),用戶還可以在其中自由地折疊、擴(kuò)展每個層。

比如將特征圖在線性布局和網(wǎng)格布局之間轉(zhuǎn)換。

折疊卷積層的特征圖輸出。

對全連接層進(jìn)行邊綁定(edge bunding)等等。

這樣的可視化圖像,可以通過加載TensorFlow的檢查點(diǎn)來構(gòu)建。

也可以在Unity編輯器中設(shè)計。

用Unity搞出一個3D網(wǎng)絡(luò)過程如下

在正式上手Unity前,作者先在Houdini軟件中,搭建了一個可視化的3D網(wǎng)絡(luò)原型。

也就是說,先給Unity版3D網(wǎng)絡(luò)提供一個搭建思路,提前準(zhǔn)備好實現(xiàn)展示卷積計算的方法、特征圖的形狀、邊綁定的效果等問題。

它的節(jié)點(diǎn)編輯器長這樣:

然后,就可以在Unity上搭建3D神經(jīng)網(wǎng)絡(luò)了。

首先,需要預(yù)設(shè)好神經(jīng)網(wǎng)絡(luò)的“形狀”。

由于之前并沒有用過Unity,作者先學(xué)習(xí)了著色器和過程式幾何相關(guān)的知識。

這里面,作者發(fā)現(xiàn)了一些局限性,他采用的是Unity為著色器開發(fā)的語言Shaderlab,這個語言無法使用著色變化,只有對語義進(jìn)行預(yù)定義的變量,才能讓它在頂點(diǎn)、幾何和像素著色器之間傳遞。

而且,它無法任意分配頂點(diǎn)屬性,只有位置、顏色、UV等預(yù)定義屬性。(可能這也是3D網(wǎng)絡(luò)無法實時改變顏色的原因之一)

在研究了一些實例化(instancing)相關(guān)的概念后,作者計劃采用幾何著色器的方法生成神經(jīng)網(wǎng)絡(luò)的連線。其中起點(diǎn)和終點(diǎn)被傳遞到頂點(diǎn)著色器,并直接轉(zhuǎn)發(fā)到幾何著色器。

這些線,最多可以由120個頂點(diǎn)組成,因為Unity允許的幾何著色器能創(chuàng)建的變量的標(biāo)量浮點(diǎn)數(shù)為1024。

設(shè)計后的網(wǎng)絡(luò)形狀,大致長這樣:

然后,就是從模型的TensorFlow代碼中,生成對應(yīng)的3D神經(jīng)網(wǎng)絡(luò)圖像。

其中,Tensorflow-native.ckpt格式的文件,需要存儲重構(gòu)模型圖所需的數(shù)據(jù)、二進(jìn)制的權(quán)重讀取和激活值,以及特定層的名字。

以Cifar10-greyscale數(shù)據(jù)集為例,需要編寫一個檢查點(diǎn)(checkpoint)文件,以及設(shè)置隨即初始化的權(quán)重。

在那之后,需要加載這些檢查點(diǎn)文件、啟動TensorFlow會話,輸入訓(xùn)練示例,以便查詢每一層的激活函數(shù)。

然后編寫一個json文件,存儲每一層的形狀、名稱、權(quán)重和激活函數(shù),便于讀取。然后使用權(quán)重值,將顏色數(shù)據(jù)分配給各層的Unity Mesh。

最終搞出來的效果,還是不錯的:

相關(guān)研究如下

事實上,此前已經(jīng)有不少學(xué)者,進(jìn)行過神經(jīng)網(wǎng)絡(luò)可視化的研究。

例如,去年5月,一位中國博士就可視化了卷積神經(jīng)網(wǎng)絡(luò),將每一層的變化都展示得非常清楚,只需要點(diǎn)擊對應(yīng)的神經(jīng)元,就能看見它的“操作”。

這是用TensorFlow.js加載的一個10層預(yù)訓(xùn)練模型,相當(dāng)于在瀏覽器上就能跑CNN模型,也可以實時交互,顯示神經(jīng)元的變化。

不過,這還是個2D的項目。

目前,也已經(jīng)有人像上面那個神經(jīng)網(wǎng)絡(luò)模型一樣,做出了3D的可視化神經(jīng)網(wǎng)絡(luò):

這個項目,同樣用到了邊綁定、光線追蹤等技術(shù),與特征提取、微調(diào)和歸一化相結(jié)合,將神經(jīng)網(wǎng)絡(luò)可視化。

這項項目希望能借由這些技術(shù),來估計神經(jīng)網(wǎng)絡(luò)中不同部分的重要性。

為此,作者將神經(jīng)網(wǎng)絡(luò)的每一部分都用不同的顏色來表示,根據(jù)節(jié)點(diǎn)和節(jié)點(diǎn)在網(wǎng)絡(luò)中的重要性,來預(yù)測它們之間的關(guān)聯(lián)性。

大致的處理過程是這樣的:

文章轉(zhuǎn)自微信公眾號@算法進(jìn)階

上一篇:

神經(jīng)網(wǎng)絡(luò)與傅立葉變換有何關(guān)系?

下一篇:

深度學(xué)習(xí)視覺研究綜述
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費(fèi)

#AI深度推理大模型API

對比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費(fèi)