python - 如何使用 PyTorch 构建 LSTM AutoEncoder?

标签 python pytorch lstm autoencoder

我的数据是 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 维自动编码表示。所以据我所知,我的输入和输出应该是一样的。

我已经看到了一些构建这个的例子,但我仍然停留在第一步。我的训练数据是否只是用于制作矩阵的大量样本?然后怎样呢?

对于问题的一般性质,我深表歉意。有任何问题,尽管问,我会在评论中澄清。

谢谢你。

最佳答案

从问题中您并不清楚您要实现的目标。根据你写的内容,你想创建一个具有相同输入和输出的自动编码器,当我看到你的数据集时,这对我来说不太有意义。在常见情况下,自动编码器的编码器部分创建一个模型,该模型基于大量输入特征产生一个小的输出向量,而解码器正在执行基于完整输出集的似真输入特征重构的逆操作和输入特征。使用自动编码器的结果是增强(在某种意义上,比如去除了噪声等)输入。

你可以找到几个例子 here第三个用例为序列数据提供代码,学习随机数生成模型。这是另一个 example ,看起来更接近您的应用程序。构建了一个序列模型来对具有信息丢失的大型数据集进行编码。如果这就是您想要实现的目标,您会在那里找到代码。

如果目标是序列预测(如 future 股票价格),thisthat示例似乎更合适,因为您可能只想预测数据序列中的少数值(例如 dHighdLow )并且您不需要预测 day_of_week_nmonth_n (尽管自编码器模型的那部分可能会训练得更可靠,因为模式非常清晰)。这种方法将允许您预测单个后续输出特征值(明天的 dHighdLow )

如果你想预测一系列 future 的输出,你可以使用 sequence of outputs ,而不是模型中的单个。

一般来说,输入和输出的结构is totally up to you

关于python - 如何使用 PyTorch 构建 LSTM AutoEncoder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59863263/

相关文章:

python - Pytorch:如何找到 2D 张量的每一行中第一个非零元素的索引?

python - 使用 openCV 从 ONNX (python/pytorch) 加载网络时遇到问题

python - 尝试安装最新的 Pytorch (1.13.1) 而不是安装 1.11.0

python - Tensorflow LSTM 网络为整批输出相同的值

python - 将多个 Keras TimeseriesGenerator 对象合并或附加到一个

python - 如何处理名称冲突的 python 包?

python - 使用 matplotlib 和 markevery 在特定点放置标记时出错

python - 通过网络发送python ctypes结构

python - 如何创建一个按钮来结束程序而不结束GUI?

r - 为什么RNN总是输出1