CNN特征提取结果可视化——hooks简单应用
CNN特征提取结果可视化——hooks简单应用
在神经网络搭建时可能出现各式各样的错误,使用hook而非print或者简单的断点调试有助于你更清晰的意识到错误所在。
hook的使用场景多种多样,本文将使用hooks来简单可视化卷积神经网络的特征提取。用到的神经网络框架为Pytorch
Hooks简单介绍
每个hook都是预先定义好的可调用对象,在pytorch框架中,每个nn.Module对象都能够方便地注册(定义)一个hook。当一些trigger方法调用(如forward()和backward())后,注册了hook的nn.Module对象会将相关信息传递到hook里面去。
在PyTorch中,可以注册三种hook:
forward prehook (在forward之前执行)
forward hook (在forward之后执行)
backward hook (在backward之后执行)
具体理解每种hook的使用不是本文讨论的范围,我们将通过一个生动的卷积神经网络可视化例子来介绍hook的使用
CNN特征提取的简单可视化
我们将要进行的工作包括:
创建CNN特征提取器,本文使用PyTorch自带的resnet34
创建一个保存hook内容的对象
为每个卷积层创建hook
读取图像并进行特征提取
查看卷积层特征提取效果
本文将对下图进行特征提取并可视化