1.过程

1.1 输入准备和输出

输入:训练好的神经网络模型,例如Inception-V3模型;
   一张需要加工的图片,记做original_image,如下图所示;
DeepDream过程和原理简述

输出:经过DeepDream加工之后的图片,如下图所示,记做image。image初始值设置为original_image。
DeepDream过程和原理简述

1.2 选定输入的模型的某个(些)层,构造目标函数L

目标函数L是对选定的所有的层,每层求均值,对这些均值再求和。

1.3 计算目标函数L关于图片每个像素的梯度grad(L,image)

计算得到的梯度的维度和图片的维度是相同的。

1.4 根据梯度更新image

image=image+grad(L,image)*learning_rate,普通的SGD是‘减’梯度,这里是‘加’;所以可以理解这里的方向是增加目标函数L。

1.5 重复1.3~1.4直到达到给定的步数

例如100步

2. 原理理解

可以看到上述过程主要步骤是:计算目标函数L对于输入图片的梯度,然后用这个梯度来更新image,更新的方向是使目标函数L增大。

我理解的DeepDream就是根据某个(些)层的输出对于输入(输入的图片)的敏感度(导数的含义)来更新原图片,就是原图片加上模型中提取的某些特征,造成很多奇怪同时看上去有些规律的图片,就像做梦一样(人做梦也是奇怪又有些规律)。

3.参考资料

DeepDeam参考资料

相关文章:

  • 2021-09-30
  • 2021-08-07
  • 2021-06-14
  • 2021-07-17
  • 2021-08-04
  • 2021-09-23
  • 2021-06-02
猜你喜欢
  • 2022-01-23
  • 2021-09-01
  • 2021-11-19
  • 2021-05-15
  • 2021-09-07
  • 2021-04-25
相关资源
相似解决方案