如何使用 PyTorch 构建 LSTM 自动编码器?
Posted
技术标签:
【中文标题】如何使用 PyTorch 构建 LSTM 自动编码器?【英文标题】:How can I build an LSTM AutoEncoder with PyTorch? 【发布时间】:2020-05-08 19:44:09 【问题描述】:我的数据是DataFrame
:
dOpen dHigh dLow dClose dVolume day_of_week_0 day_of_week_1 ... month_6 month_7 month_8 month_9 month_10 month_11 month_12
639 -0.002498 -0.000278 -0.005576 -0.002228 -0.002229 0 0 ... 0 0 1 0 0 0 0
640 -0.004174 -0.005275 -0.005607 -0.005583 -0.005584 0 0 ... 0 0 1 0 0 0 0
641 -0.002235 0.003070 0.004511 0.008984 0.008984 1 0 ... 0 0 1 0 0 0 0
642 0.006161 -0.000278 -0.000281 -0.001948 -0.001948 0 1 ... 0 0 1 0 0 0 0
643 -0.002505 0.001113 0.005053 0.002788 0.002788 0 0 ... 0 0 1 0 0 0 0
644 0.004185 0.000556 -0.000559 -0.001668 -0.001668 0 0 ... 0 0 1 0 0 0 0
645 0.002779 0.003056 0.003913 0.001114 0.001114 0 0 ... 0 0 1 0 0 0 0
646 0.000277 0.004155 -0.002227 -0.002782 -0.002782 1 0 ... 0 0 1 0 0 0 0
647 -0.005540 -0.007448 -0.003348 0.001953 0.001953 0 1 ... 0 0 1 0 0 0 0
648 0.001393 -0.000278 0.001960 -0.003619 -0.003619 0 0 ... 0 0 1 0 0 0 0
我的输入将是 10 行(已经一次性编码)。我想创建一个 n 维自动编码表示。所以据我了解,我的输入和输出应该是一样的。
我已经看到了一些构建这个的例子,但我仍然停留在第一步。我的训练数据是否只是用于制作矩阵的大量样本?然后呢?
对于这个问题的一般性质,我深表歉意。有任何问题,尽管问,我会在 cmets 中澄清。
谢谢。
【问题讨论】:
你能举一些你开始的例子吗? 【参考方案1】:从这个问题中你想要达到的目标不是很清楚。根据您写的内容,您想创建一个具有相同输入和输出的自动编码器,当我看到您的数据集时,这对我来说不太有意义。在常见情况下,自动编码器的编码器部分创建一个模型,该模型基于大量输入特征产生一个小的输出向量,而解码器正在执行基于完整输出集的合理输入特征重构的逆运算和输入特征。使用自动编码器的结果是增强了(在某种意义上,比如去除了噪声等)输入。
您可以找到一些示例here,第三个用例为序列数据提供代码,学习随机数生成模型。这是另一个example,看起来更接近您的应用程序。构建顺序模型来编码具有信息丢失的大型数据集。如果这是您想要实现的目标,您会在那里找到代码。
如果目标是序列预测(如未来股票价格),this 和 that 示例似乎更合适,因为您可能只想预测数据序列中的少数几个值(例如 dHigh
和dLow
),您不需要预测day_of_week_n
或month_n
(即使自动编码器模型的这一部分可能会训练得更加可靠,因为模式非常清晰)。这种方法将允许您预测单个结果输出特征值(明天的 dHigh
和 dLow
)
如果您想预测一系列未来输出,您可以使用sequence of outputs,而不是模型中的单个输出。
一般来说,输入输出的结构is totally up to you
【讨论】:
链接指向 KERAS 实现,而问题是关于 PyTorch。也许值得纠正它。以上是关于如何使用 PyTorch 构建 LSTM 自动编码器?的主要内容,如果未能解决你的问题,请参考以下文章