常见问题解答#
常见问题及解答。其他寻求帮助的地方:
创建数据集#
如何为新样本创建数据集?
使用训练数据集的
TimeSeriesDataSet
方法来创建可以运行推理的数据集。编码器和解码器/预测长度应该多长?
选择一个合理的长度,但编码器长度不要超过500,解码器长度不要超过200。考虑到更长的长度会增加模型训练所需的时间。
解码器和编码器长度的比例取决于所使用的算法。 查看文档以获取线索。
创建数据集需要很长时间。为什么会这样?
如果你在数据集中设置了
allow_missing_timesteps=True
,创建索引可能会花费更多时间,因为必须识别时间序列中的所有缺失值。算法可能可以加速,但目前,不允许缺失值并自己填充可能会更快。缺失值如何处理?
时间点之间的缺失值可以通过前向填充或常数填充策略来填补
由NaN表示的缺失值是一个问题,应该预先填充,例如使用中位数和另一个缺失指示分类变量。
未来的缺失值(超出范围)不会被填充,也不会被预测。您需要提供未来的值。如果这些值属于未知的未来值,它们将被忽略。
训练模型#
我的训练似乎卡住了 - 尽管我的CPU/GPU正在以100%的速度工作,但似乎没有任何进展。 如何解决这个问题?
可能你的模型太大了(使用
model.size()
检查参数数量),或者数据集编码器和解码器的长度不切实际地大。请参阅编码器和解码器/预测长度应该多长?为什么学习率查找器没有完成?
首先,确保训练器没有设置关键字
fast_dev_run=True
和limit_train_batches=...
。其次,在您的训练数据集中使用目标归一化器。 第三,将lr_find
方法的early_stop_threshold
参数 增加到一个较大的数值。为什么我在运行学习率查找器时会收到很多matplotlib警告?
这是因为你一直在创建用于记录的图表,但没有记录器。 在你的模型中设置
log_interval=-1
以避免这种行为。如何选择超参数?
请查阅模型文档以了解哪些参数是重要的以及哪些范围是合理的。使用学习率查找器选择学习率。要调整超参数,optuna包是一个很好的起点。