使用Python可視化卷積神經網絡方法匯總
3. 基于梯度的方法3.1 顯著性圖正如我們在坦克的例子中所看到的,我們如何才能知道我們的模型關注哪個部分來獲得預測?為此,我們可以使用顯著性圖。使用顯著性圖的概念是非常直接的——我們計算輸出類別相對于輸入圖像的梯度,這可以告訴我們輸出類別值相對于輸入圖像像素的微小變化是如何變化的。梯度中的所有正值都告訴我們,對該像素的微小更改將增加輸出值,因此,將這些與圖像形狀相同的梯度可視化,應該能提供一些直覺。直觀地,該方法突出了對輸出貢獻最大的顯著圖像區域。class_idx = 0indices = np.where(val_y[:, class_idx] == 1.)[0]
# 從這里選取一些隨機輸入。idx = indices[0]
# 讓sanity檢查選中的圖像。from matplotlib import pyplot as plt%matplotlib inlineplt.rcParams['figure.figsize'] = (18, 6)
plt.imshow(val_x[idx][..., 0])
from vis.visualization import visualize_saliencyfrom vis.utils import utilsfrom keras import activations
# 按名稱搜索圖層索引# 或者,我們可以將其指定為-1,因為它對應于最后一層。layer_idx = utils.find_layer_idx(model, 'preds')
# 用線性層替換softmaxmodel.layers[layer_idx].activation = activations.linearmodel = utils.apply_modifications(model)
grads = visualize_saliency(model, layer_idx, filter_indices=class_idx, seed_input=val_x[idx])# 可視化為熱圖。plt.imshow(grads, cmap='jet')
# 線性層。for class_idx in np.arange(10): indices = np.where(val_y[:, class_idx] == 1.)[0] idx = indices[0]
f, ax = plt.subplots(1, 4) ax[0].imshow(val_x[idx][..., 0])
for i, modifier in enumerate([None, 'guided', 'relu']): grads = visualize_saliency(model, layer_idx, filter_indices=class_idx, seed_input=val_x[idx], backprop_modifier=modifier) if modifier is None: modifier = 'vanilla' ax[i+1].set_title(modifier) ax[i+1].imshow(grads, cmap='jet')

3.2 基于梯度的類激活圖類激活圖是另一種在進行預測時可視化模型所看到內容的方法,使用倒數第二卷積層輸出,而不是使用相對于輸出的梯度,這樣做是為了利用存儲在倒數第二層的空間信息。from vis.visualization import visualize_cam
# 線性層。for class_idx in np.arange(10): indices = np.where(val_y[:, class_idx] == 1.)[0] idx = indices[0]
f, ax = plt.subplots(1, 4) ax[0].imshow(val_x[idx][..., 0])
for i, modifier in enumerate([None, 'guided', 'relu']): grads = visualize_cam(model, layer_idx, filter_indices=class_idx, seed_input=val_x[idx], backprop_modifier=modifier) if modifier is None: modifier = 'vanilla' ax[i+1].set_title(modifier) ax[i+1].imshow(grads, cmap='jet')

結尾在本文中,我們介紹了如何可視化CNN模型,以及為什么要可視化,我們結合一個例子來實現它。參考鏈接:https://www.analyticsvidhya.com/blog/2018/03/essentials-of-deep-learning-visualizing-convolutional-neural-networks/
☆ END ☆
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
- 1 AI狂歡遇上油價破百,全球股市還能漲多久? | 產聯看全球
- 2 OpenAI深夜王炸!ChatGPT Images 2.0實測:中文穩、細節炸,設計師慌了
- 3 6000億美元估值錨定:字節跳動的“去單一化”突圍與估值重構
- 4 Tesla AI5芯片最新進展總結
- 5 連夜測了一波DeepSeek-V4,我發現它可能只剩“審美”這個短板了
- 6 熱點丨AI“瑜亮之爭”:既生OpenClaw,何生Hermes?
- 7 AI界的殺豬盤:9秒刪庫跑路,全員被封號,還繼續扣錢!
- 8 2026,人形機器人只贏了面子
- 9 DeepSeek降價90%:價格屠夫不是身份,是戰略
- 10 AI Infra產業鏈卡在哪里了?


分享













