【问题标题】:Pixel RNN Pytorch ImplementationPixel RNN Pytorch 实现
【发布时间】:2018-12-24 03:30:00
【问题描述】:

我正在尝试在 pytorch 中实现 Pixel RNN,但我似乎找不到任何关于此的文档。 Pixel RNN 的主要部分是 Row LSTM 和 BiDiagonal LSTM,所以我正在寻找这些算法的一些代码以更好地理解它们在做什么。具体来说,我对这些算法分别计算一行和对角线感到困惑。任何帮助将不胜感激。

【问题讨论】:

  • 你在 Pytorch 中成功创建了一个 Pixel RNN 吗?如果有,你会考虑公开吗?

标签: python machine-learning lstm pytorch rnn


【解决方案1】:

总结

这是一个正在进行的部分实现:

https://github.com/carpedm20/pixel-rnn-tensorflow

这里是 google deepmind 对 Row LSTM 和 BiDiagonal LSTM 的描述:

https://towardsdatascience.com/summary-of-pixelrnn-by-google-deepmind-7-min-read-938d9871d6d9


行 LSTM

来自链接的 deepmind 博客:

一个像素的隐藏状态,下图中的红色,是基于它之前的三角形三个像素的“记忆”。因为它们在“行”中,所以我们可以并行计算,加快计算速度。我们牺牲了一些上下文信息(使用更多历史记录或内存)来进行这种并行计算并加快训练速度。

实际的实现依赖于其他几个优化并且相当复杂。来自original paper

计算如下进行。 LSTM 层有一个 输入到状态组件和循环状态到状态组件 一起确定 LSTM 核心内部的四个门。加强 行 LSTM 中的并行化首先是输入到状态组件 为整个二维输入图计算;对于这个 k × 1 卷积用于遵循 LSTM 的逐行方向 本身。卷积被屏蔽以仅包含有效上下文 (见第 3.4 节)并产生一个大小为 4h × n × n 的张量, 表示输入图中每个位置的四个门向量, 其中 h 是输出特征图的数量。计算一步 LSTM 层的状态到状态组件,其中一个是 先前的隐藏和单元状态 hi-1 和 ci-1,每个大小为 h × n × 1。 新的隐藏和单元状态 hi , ci 得到如下:

其中大小为 h × n × 1 的 xi 是输入映射的第 i 行,~ 表示卷积操作和 elementwise 乘法。权重 Kss 和 Kis 是核权重 状态到状态和输入到状态组件,其中后者是 如上所述预先计算。在输出的情况下,忘记和 输入门 oi 、 fi 和 ii ,激活 σ 是逻辑 sigmoid 函数,而对于内容门 gi ,σ 是 tanh 函数。 每一步都会立即计算整行的新状态 输入图

对角线 BLSTM

对角线 BLSTM 的开发是为了在不牺牲尽可能多的上下文信息的情况下利用并行化的加速。 DBLSTM 中的一个节点看向它的左侧和上方;由于这些节点也向左上方看,给定节点的条件概率在某种意义上取决于它的所有祖先。否则,架构非常相似。来自 deepmind 博客:

【讨论】:

  • 所以如果我理解的话,我们仍然在逐个像素地计算图像,只是我们一次使用一整行来计算一个像素?
  • 仍在用详细信息更新答案 :) 但理论上是的,他们的关键见解是可以加快内存步骤。 (而且您不必使用整行,只是您可以在行外不使用任何内容,以便您可以并行化)实际上有几个重要的优化,我将尝试总结
  • 非常感谢您的回答。我还有最后一个问题:前3个像素的内存是从哪里来的?每个像素都有一个 lstm 单元格,还是一个 row-lstm 包含在一个 lstm 单元格中?另外,我们是否对图像中的每个像素进行 row-lstm 处理?
  • 没问题;如果您觉得它有帮助,您可以投票并接受(尽管您也不必这样做)。有几种方法可以实现 LSTM,但在这种情况下,单个 LSTM 层包含每个像素的数据。传统上,要计算出 (i,j) 处的 lstm 层的输出,您需要 (i-1,j) & (i,j-1) 处的值,因此您需要迭代地计算每个节点。巧妙地实现,您可以“对图像中的每个像素执行 row-lstm”,同时缓存大量信息并且只执行几次昂贵的操作
  • 那么可以在一个 lstm 单元格中包含每个像素的 row-lstm 吗?
猜你喜欢
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
  • 2018-08-10
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多