《Python深度学习》5.4卷积神经网络的可视化(代码).pdfVIP

  • 6
  • 0
  • 约1.27万字
  • 约 11页
  • 2024-01-10 发布于河南
  • 举报

《Python深度学习》5.4卷积神经网络的可视化(代码).pdf

《Python深度学习》5.4卷积神经⽹络的可视化(代码)

Visualizingwhatconvnetslearn

卷积神经⽹络的可视化

⼈们常说,深度学习模型是“⿊盒”,即模型学到的表⽰很难⽤⼈类可以理解的⽅式来提取和呈现。虽然对于某些类型的深度学习模型来

说,这种说法部分正确,但对卷积神经⽹络来说绝对不是这样。卷积神经⽹络学到的表⽰⾮常适合可视化,很⼤程度上是因为它们是视觉概

念的表⽰。⾃2013年以来,⼈们开发了多种技术来对这些表⽰进⾏可视化和解释。我们不会在书中全部介绍,但会介绍三种最容易理解

也最有⽤的⽅法。

可视化卷积神经⽹络的中间输出(中间激活):有助于理解卷积神经⽹络连续的层如何对输⼊进⾏变换,也有助于初步了解卷积神经⽹

络每个过滤器的含义。

可视化卷积神经⽹络的过滤器:有助于精确理解卷积神经⽹络中每个过滤器容易接受的视觉模式或视觉概念。

可视化图像中类激活的热⼒图:有助于理解图像的哪个部分被识别为属于某个类别,从⽽可以定位图像中的物体。

对于第⼀种⽅法(即激活的可视化),我们将使⽤5.2节在猫狗分类问题上从头开始训练的⼩型卷积神经⽹络。对于另外两种可视化⽅法,

我们将使⽤5.3节介绍的VGG16模型。

1.可视化中间激活

可视化中间激活,是指对于给定输⼊,展⽰⽹络中各个卷积层和池化层输出的特征图(层的输出通常被称为该层的激活,即激活函数的输

出)。这让我们可以看到输⼊如何被分解为⽹络学到的不同过滤器。我们希望在三个维度对特征图进⾏可视化:宽度、⾼度和深度(通

道)。每个通道都对应相对独⽴的特征,所以将这些特征图可视化的正确⽅法是将每个通道的内容分别绘制成⼆维图像。我们⾸先来加载

5.2节保存的模型。

fromkeras.modelsimportload_model

model=load_model(cats_and_dogs_small_2.h5)

model.summary()#Asareminder.(作为提醒)

①预处理单张图像

img_path=D:\Kaggle\dogs-vs-cats-small\test\cats\cat.1700.jpg

#Wepreprocesstheimageintoa4Dtensor(将图像预处理为⼀个4D张量)

fromtensorflow.keras.preprocessingimportimage

importnumpyasnp

img=image.load_img(img_path,target_size=(150,150))

img_tensor=image.img_to_array(img)

img_tensor=np.expand_dims(img_tensor,axis=0)

#Rememberthatthemodelwastrainedoninputs

#thatwerepreprocessedinthefollowingway:

#请记住,训练模型的输⼊数据都⽤这种⽅法预处理

img_tensor/=255.

#Itsshapeis(1,150,150,3)(#其形状为(1,150,150,3))

print(img_tensor.shape)

②显⽰测试图像

importmatplotlib.pyplotasplt

plt.imshow(img_tensor[0])

plt.show()

③⽤⼀个输⼊张量和⼀个输出张量列表将模型实例化

fromkerasimportmodels

#Extractstheoutputsofthetop8layers:(提取前8层的输出)

layer_outputs=[layer.outputforlayerinmodel.layers[:8]]

#Createsamodelthatwillreturntheseoutputs,giventhemodelinput:(创建⼀个模型,给定模型输⼊,可以返回这些输出)

activation_model=models.Model(inputs=model.input,outputs=layer_outputs)

④以预测模式运⾏模型

#Thiswill

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档