Wolfram 语言

可视化神经网络的内部

为了理解训练过的图像分类网络的内部工作,可以尝试可视化网络中的神经元响应的图像特征。

加载预先训练好的网络。

第一个卷积层中神经元的图像特征由它们的卷积核给出。

这些神经元对低级特征进行编码,例如边缘和灰度线以及着色方向不同的颜色。

然而,这种简单的方法不适用于网络处理链下游的层中的神经元。因此,可以利用 Google 的 Deep Dream 算法生成随机输入图像中的特征。

首先,指定要可视化的网络层和特征。

为了理解神经元在对什进行编码,在给定层截断网络,并添加提取指定神经元的小方格活动的层。

通过用网络反向传播梯度不断更新随机输入图像来最大化该网络的输出,产生主要激发所讨论的神经元的图像。由此产生的图像显示出神经元响应的特征。

创建一个全方位呈现随机性的初始图像。

NetPortGradient["Input"] 命令在网络的输入端口提供反向传播梯度。以下代码将最大梯度系数归一化为 1/8 并将其转换为图像。

在用前面的梯度图像迭代更新图像之前,需要引入一个抖动函数,该函数会将图像小幅偏移。

将随机抖动结合到随后的循环中有助于展开反向传播的局部伪像,并利于给出更正则化的图像。

更新初始随机图像 256 次将返回以下图像。所讨论的神经元看起来在对小鸟或小鸡进行编码。

请随意在其他层中的特征上重复上述步骤。你将注意到浅的网络层中的神经元对简单特征进行编码,如纹理,而较深的网络层中的神经元则对更复杂的特征进行编码,例如动物的面部。

初始层 3b 的特征。

初始层 4d 的特征。

相关范例

de en es fr ja ko pt-br