使用nolearn\lasagne制作神经网络绘图(即Google的Inceptionism)

可能很多人已经看过Google研究团队的这篇文章:

http://googleresearch.blogspot.ru/2015/06/inceptionism-going-deeper-into-neural.html

文章描述了Google团队如何让神经网络像人工艺术家一样绘制图片 🙂

我想做一些类似的事情,只是为了看看它是如何工作的,并且可能在未来用它来更好地理解我的网络为何失败。问题是 – 如何使用nolearn\lasagne(或者pybrain – 它也可以,但我的首选是nolearn)来实现这一点?

更具体地说,Google的团队训练了一个具有某种架构的人工神经网络来分类图像(例如,识别照片上的哪种鱼)。好吧,假设我已经在nolearn中构建了一个具有某种架构的人工神经网络,并且已经训练到了一定程度。但是……接下来该做什么?我从他们的文章中没有完全理解。看起来他们不仅仅是可视化某些特定层的权重。我觉得(可能我错了)他们做了以下两件事之一:

1)将现有图像或纯粹的随机噪声输入到训练好的网络中,并可视化其中一个神经元层的激活情况。但 – 这似乎并不完全正确,因为如果他们使用了卷积神经网络,层的维度可能低于原始图像的维度

2)或者他们将随机噪声输入到训练好的ANN中,从中间层获取其中间输出,并将其反馈到网络中 – 以获得某种循环,并检查神经网络层认为随机噪声中可能存在什么。但同样,由于与#1中相同的维度问题,我可能错了

那么……对此有何想法?我们如何使用nolearn或pybrain来做与Google在原始文章中所做的事情类似的事情?


回答:

从他们在GitHub上的ipython笔记本中

制作“梦想”图像非常简单。本质上,这只是一个试图最大化特定DNN层激活的L2范数的梯度上升过程。以下是我们发现对获取好图像有用的几个简单技巧:

  • 通过随机抖动偏移图像
  • 归一化梯度的大小
  • 上升步骤在多个尺度(八度)上应用上升

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注