愛伊米

高顏值神經網路視覺化工具:3D、彩色、可定製、還能視覺化引數重要性

子豪 發自 凹非寺

最近,又一款神經網路視覺化工具火了,給大家介紹下。

這款工具叫做「

nn_vis

」,它採用了新的3D視覺化技術,可以呈現這樣的效果:

高顏值神經網路視覺化工具:3D、彩色、可定製、還能視覺化引數重要性

其作者表示,之所以建立這個工具,是由於神經網路內部缺乏透明度,很難為不同任務選擇有效的架構。

nn_vis究竟有什麼與眾不同?一起來了解一下。

它能夠建立神經網路模型,還可以透過引數設定,得到不同的呈現形式;

高顏值神經網路視覺化工具:3D、彩色、可定製、還能視覺化引數重要性

高顏值神經網路視覺化工具:3D、彩色、可定製、還能視覺化引數重要性

並且,根據引數重要性的評估結果,對神經網路進行剪枝,從而簡化模型;

同時,還可以對神經網路繫結過程實現視覺化。

高顏值神經網路視覺化工具:3D、彩色、可定製、還能視覺化引數重要性

那麼,這些功能是怎樣實現的呢?

nn_vis利用神經網路最佳化領域的已有方法,採用批標準化、微調以及特徵提取,評估訓練後的神經網路不同部分的重要性。

再結合邊繫結、光線跟蹤、3D impostor和特殊的透明技術等,得到神經網路的3D模型,證明了評估結果的有效性。

具體來看看~

引數準備

首先透過 configs/processing。json ,進行神經網路處理的引數準備,就像這樣:

{

“edge_bandwidth_reduction”: 0。9,

“edge_importance_type”: 0,

“layer_distance”: 0。5,

“layer_width”: 1。0,

“node_bandwidth_reduction”: 0。95,

“prune_percentage”: 0。0,

“sampling_rate”: 15。0,

“smoothing”: true,

“smoothing_iterations”: 8

}

也可以在圖形使用者介面進行設定:

高顏值神經網路視覺化工具:3D、彩色、可定製、還能視覺化引數重要性

建立神經網路模型

使用視覺化工具start_tool。py,並選擇神經網路Load Processed Network。

除了現有的網路,還可以生成隨機網路,以及處理各種大小的網路。

與最常用的引數相比,視覺化可以使訓練引數更為結構化。

經過不同的訓練,透過旋轉、切換相機位置、截圖,可以得到類似這樣的效果:

邊越靠近,神經網路這些部分的泛化程度就越大,即更容易適應新的資料樣本。

左側的神經網路沒有經過隨機分配的值的訓練:節點和邊距離中心分佈的更遠;

中間的則經過一些基本訓練,達到90%以上的準確性。

右側的神經網路以相同方式訓練,並且採用L1正則化防止過擬合,得到了具有相似準確性的最窄的模型。

評估各節點的重要性

根據節點和邊的重要性進行著色,不同的顏色表示神經網路的每一部分,用來預測它們的關聯性。

高顏值神經網路視覺化工具:3D、彩色、可定製、還能視覺化引數重要性

透過左圖可以看出,修剪不重要的引數,不會像重要引數那樣影響模型的預測準確性。

右圖則顯示出,根據類別的重要性修剪神經網路時,重要類別能夠保留準確性。與整體準確性相比,重要類別的準確性始終更高。

透過對神經網路進行剪枝,即剪掉不重要的冗餘引數,降低了模型的複雜度和過擬合風險,提升了泛化程度,得到更高效、訓練成本更低的神經網路。

由此證明了重要性評估的有效性。

繫結過程視覺化

透過不斷迭代實現神經網路的繫結,大致過程是這樣的:

高顏值神經網路視覺化工具:3D、彩色、可定製、還能視覺化引數重要性

視覺化的神經網路繫結過程:

需要注意的是,處理每層的神經網路需要一定時間,計算並不是實時的。

不同的視覺化效果

在圖形使用者介面或者透過configs/rendering。json,修改著色器引數,包括:

尺寸、物件的基本不透明度、即重要性對不透明度的影響比率、相機的距離對不透明度的影響比率、物體上不同點的密度對不透明度的影響比率、根據物件的重要性定義渲染物件的閾值。

即可得到不同的視覺化效果:

對這款工具感興趣的朋友,可以透過文末連結獲取~

GitHub專案地址:

https://github。com/julrog/nn_vis