使用Python可視化卷積神經(jīng)網(wǎng)絡(luò)方法匯總
3. 基于梯度的方法3.1 顯著性圖正如我們?cè)谔箍说睦又兴吹降,我們(nèi)绾尾拍苤牢覀兊哪P完P(guān)注哪個(gè)部分來(lái)獲得預(yù)測(cè)?為此,我們可以使用顯著性圖。使用顯著性圖的概念是非常直接的——我們計(jì)算輸出類(lèi)別相對(duì)于輸入圖像的梯度,這可以告訴我們輸出類(lèi)別值相對(duì)于輸入圖像像素的微小變化是如何變化的。梯度中的所有正值都告訴我們,對(duì)該像素的微小更改將增加輸出值,因此,將這些與圖像形狀相同的梯度可視化,應(yīng)該能提供一些直覺(jué)。直觀地,該方法突出了對(duì)輸出貢獻(xiàn)最大的顯著圖像區(qū)域。class_idx = 0indices = np.where(val_y[:, class_idx] == 1.)[0]
# 從這里選取一些隨機(jī)輸入。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
# 按名稱(chēng)搜索圖層索引# 或者,我們可以將其指定為-1,因?yàn)樗鼘?duì)應(yīng)于最后一層。layer_idx = utils.find_layer_idx(model, 'preds')
# 用線性層替換softmaxmodel.layers[layer_idx].a(chǎn)ctivation = activations.linearmodel = utils.a(chǎn)pply_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.a(chǎn)range(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 基于梯度的類(lèi)激活圖類(lèi)激活圖是另一種在進(jìn)行預(yù)測(cè)時(shí)可視化模型所看到內(nèi)容的方法,使用倒數(shù)第二卷積層輸出,而不是使用相對(duì)于輸出的梯度,這樣做是為了利用存儲(chǔ)在倒數(shù)第二層的空間信息。from vis.visualization import visualize_cam
# 線性層。for class_idx in np.a(chǎn)range(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')
結(jié)尾在本文中,我們介紹了如何可視化CNN模型,以及為什么要可視化,我們結(jié)合一個(gè)例子來(lái)實(shí)現(xiàn)它。參考鏈接:https://www.a(chǎn)nalyticsvidhya.com/blog/2018/03/essentials-of-deep-learning-visualizing-convolutional-neural-networks/
☆ END ☆

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
最新活動(dòng)更多
-
8月5日立即報(bào)名>> 【在線會(huì)議】CAE優(yōu)化設(shè)計(jì):醫(yī)療器械設(shè)計(jì)的應(yīng)用案例與方案解析
-
8月14日立即報(bào)名>> 【在線研討會(huì)】解析安森美(onsemi)高精度與超低功耗CGM系統(tǒng)解決方案
-
精彩回顧立即查看>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書(shū)》
-
精彩回顧立即查看>> 7月30日- 8月1日 2025全數(shù)會(huì)工業(yè)芯片與傳感儀表展
-
精彩回顧立即查看>> 全數(shù)會(huì)2025(第六屆)機(jī)器人及智能工廠展
-
精彩回顧立即查看>> OFweek 2025 具身機(jī)器人動(dòng)力電池技術(shù)應(yīng)用大會(huì)
推薦專(zhuān)題
- 1 AI產(chǎn)業(yè)的新高度!英偉達(dá)成為全球首家市值破4萬(wàn)億美元的公司
- 2 傳魏建軍與賈躍亭合作,長(zhǎng)城汽車(chē)出海美國(guó)
- 3 一文讀懂:到底什么是 “具身智能” ?
- 4 黃仁勛:與雷軍長(zhǎng)期合作,共探AI智駕
- 5 具身智能泡沫爭(zhēng)議下,華映資本尋找「穿越周期者」
- 6 中國(guó)平安們欲靠AI守“陣地”
- 7 官宣:智元機(jī)器人借殼上市,A股人形機(jī)器人第一股!
- 8 華為讓渡“三界”銷(xiāo)售主導(dǎo)權(quán),智界高管:終于能全力奔跑了
- 9 借仿生手實(shí)現(xiàn)突圍,國(guó)產(chǎn)靈巧手破局“不可能三角”
- 10 DeepSeek R2加持,中國(guó)AI與芯片產(chǎn)業(yè)迎來(lái)新一輪協(xié)同進(jìn)化