作者:Mehul Gupta
來(lái)源:DeepHub IMBA
圖像與表格數(shù)據(jù)集有很大不同(顯然)。如果你還記得,在之前我們討論過(guò)的任何解釋方法中,我們都是根據(jù)特征重要性,度量或可視化來(lái)解釋模型的。比如特征“A”在預(yù)測(cè)中比特征“B”有更大的影響力。但在圖像中沒(méi)有任何可以命名的特定特征,那么怎么進(jìn)行解釋呢?
一般情況下我們都是用突出顯示圖像中模型預(yù)測(cè)的重要區(qū)域的方法觀察可解釋性,這就要求了解如何調(diào)整LIME方法來(lái)合并圖像,我們先簡(jiǎn)單了解一下LIME是怎么工作的。

LIME在處理表格數(shù)據(jù)時(shí)為訓(xùn)練數(shù)據(jù)集生成摘要統(tǒng)計(jì):
使用匯總統(tǒng)計(jì)生成一個(gè)新的人造數(shù)據(jù)集
從原始數(shù)據(jù)集中隨機(jī)提取樣本
根據(jù)與隨機(jī)樣本的接近程度為生成人造數(shù)據(jù)集中的樣本分配權(quán)重
用這些加權(quán)樣本訓(xùn)練一個(gè)白盒模型
解釋白盒模型



%matplotlib inline
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from keras.layers import Input, Dense, Embedding, Flatten
from keras.layers import SpatialDropout1D
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.models import Sequential
from randimage import get_random_image, show_array
import random
import pandas as pd
import numpy as np
import lime
from lime import lime_image
from skimage.segmentation import mark_boundaries
#preparing above dataset artificially
training_dataset = []
training_label = []
for x in range(200):
img_size = (64,64)
img = get_random_image(img_size)
a,b = random.randrange(0,img_size[0]/2),random.randrange(0,img_size[0]/2)
c,d = random.randrange(img_size[0]/2,img_size[0]),random.randrange(img_size[0]/2,img_size[0])
value = random.sample([True,False],1)[0]
if value==False:
img[a:c,b:d,0] = 100
img[a:c,b:d,1] = 100
img[a:c,b:d,2] = 100
training_dataset.append(img)
training_label.append(value)
#training baseline CNN model
training_label = [1-x for x in training_label]
X_train, X_val, Y_train, Y_val = train_test_split(np.array(training_dataset).reshape(-1,64,64,3),np.array(training_label).reshape(-1,1), test_size=0.1, random_state=42)
epochs = 10
batch_size = 32
model = Sequential()
model.add(Conv2D(32, kernel_size=3, padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=2))
model.add(Flatten())
# Output layer
model.add(Dense(32,activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, Y_train, validation_data=(X_val, Y_val), epochs=epochs, batch_size=batch_size, verbose=1)
x=10
explainer = lime_image.LimeImageExplainer(random_state=42)
explanation = explainer.explain_instance(
X_val[x],
model.predict,top_labels=2)
)
image, mask = explanation.get_image_and_mask(0, positives_only=True,
hide_rest=True)




這樣我們就可以理解模型導(dǎo)致錯(cuò)誤分類的實(shí)際問(wèn)題是什么,這就是為什么可解釋和可解釋的人工智能如此重要。
END

(添加請(qǐng)備注公司名和職稱)
Imagination 基于 O3DE 引擎的光線追蹤 Demo 詳解
Imagination Technologies是一家總部位于英國(guó)的公司,致力于研發(fā)芯片和軟件知識(shí)產(chǎn)權(quán)(IP),基于Imagination IP的產(chǎn)品已在全球數(shù)十億人的電話、汽車(chē)、家庭和工作場(chǎng)所中使用。獲取更多物聯(lián)網(wǎng)、智能穿戴、通信、汽車(chē)電子、圖形圖像開(kāi)發(fā)等前沿技術(shù)信息,歡迎關(guān)注 Imagination Tech!
原文標(biāo)題:使用LIME解釋CNN
文章出處:【微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
imagination
+關(guān)注
關(guān)注
1文章
601瀏覽量
62226
原文標(biāo)題:使用LIME解釋CNN
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
【高云GW5AT-LV60 開(kāi)發(fā)套件試用體驗(yàn)】基于開(kāi)發(fā)板進(jìn)行深度學(xué)習(xí)實(shí)踐,并盡量實(shí)現(xiàn)皮膚病理圖片的識(shí)別,第四階段
【高云GW5AT-LV60 開(kāi)發(fā)套件試用體驗(yàn)】基于開(kāi)發(fā)板進(jìn)行深度學(xué)習(xí)實(shí)踐,并盡量實(shí)現(xiàn)皮膚病理圖片的識(shí)別,第三階段
【高云GW5AT-LV60 開(kāi)發(fā)套件試用體驗(yàn)】基于開(kāi)發(fā)板進(jìn)行深度學(xué)習(xí)實(shí)踐,并盡量實(shí)現(xiàn)皮膚病理圖片的識(shí)別
算力領(lǐng)域常用名詞解釋

一個(gè)過(guò)零檢測(cè)電路,但有部分電路沒(méi)看明白,有大神可以詳細(xì)解釋一下嗎
無(wú)法轉(zhuǎn)換TF OD API掩碼RPGA模型怎么辦?
大模型領(lǐng)域常用名詞解釋(近100個(gè))

小白學(xué)解釋性AI:從機(jī)器學(xué)習(xí)到大模型

cmdgc5016生成的配置寄存器值居然沒(méi)有變化,有人能解釋下嗎?
請(qǐng)解釋什么是雙絞線
FPAG技術(shù)問(wèn)題合集
虛擬主機(jī)名詞解釋
EAK解釋了如何為船舶推進(jìn)器應(yīng)用選擇合適的0電感水冷功率電阻器

評(píng)論