Keras中的Conv过滤器可视化:为什么一些过滤器在丢失==0时卡住,我如何防止这种情况?

Keras中的Conv过滤器可视化:为什么一些过滤器在丢失==0时卡住,我如何防止这种情况?,keras,filter,conv-neural-network,visualization,Keras,Filter,Conv Neural Network,Visualization,我使用Keras团队的这个脚本来可视化VGG16模型的conv过滤器: 对于大多数过滤器,这是有效的。但是,如果我尝试为“block5_conv1”层中的过滤器11生成图像,则该算法不会给我任何输出,因为“某些过滤器被卡住为0”(第156行ff): 再次运行完全相同的代码几次,最终生成一个图像(我猜是因为随机生成的起始图像发生了变化): 但是,对于许多其他过滤器,例如block5_conv3、过滤器1,我没有运气: visualize_layer(vgg, block5_conv3, out

我使用Keras团队的这个脚本来可视化VGG16模型的conv过滤器:

对于大多数过滤器,这是有效的。但是,如果我尝试为“block5_conv1”层中的过滤器11生成图像,则该算法不会给我任何输出,因为“某些过滤器被卡住为0”(第156行ff):

再次运行完全相同的代码几次,最终生成一个图像(我猜是因为随机生成的起始图像发生了变化):

但是,对于许多其他过滤器,例如block5_conv3、过滤器1,我没有运气:

visualize_layer(vgg, block5_conv3, output_dim=(112, 112), filter_range=(1, 2))
我还改变了输出亮度、步长、历代、放大步长、放大因子,但无法生成图像


所以我的问题是:有没有一种方法可以可靠地生成每个过滤器的可视化效果(基于提供的脚本)?

我想说这是神经网络的一个常见问题-它与数据量过小,错误的权重初始化或缺乏适当的正则化,但所有这些点都不应该是VGG16的问题,VGG16是在imagenet数据上训练的(庞大的数据集,正确的权重初始化,适当的正则化)对我来说,这听起来更像是一个研究问题,而不是一个编程问题。我的第一次尝试是在没有“relu”的情况下重新创建模型,因为它是零区域。奇怪的是,其他的激活会产生更多的零过滤器……好奇:我从来都不明白可视化过滤器的梯度和损失的意义。。。。不是抱怨,只是一个诚实的问题:这个代码应该显示什么?
visualize_layer(vgg, "block5_conv1", output_dim=(112, 112), filter_range=(11, 12))
visualize_layer(vgg, block5_conv3, output_dim=(112, 112), filter_range=(1, 2))