发布说明#
v1.3.0#
功能和维护更新。
亮点#
python 3.13支持tide模型TFT的bug修复
增强功能#
[增强] 潮汐模型。由 @Sohaib-Ahmed21 在 https://github.com/sktime/pytorch-forecasting/pull/1734 提交
[增强] 重构
__init__模块,不再包含类 - 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1739 中提交的预备性提交[ENH] 重构
__init__模块,使其不再包含类,由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1738 提交[ENH] 扩展包作者归属要求在许可证中由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1737 中提出
[ENH] 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1742 中对 tide 模型进行 linting
[ENH] 移动潮汐模型 - 第1部分 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1743
[ENH] 移动潮汐模型 - 第2部分 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1744
[ENH] 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1746 中对
TimeSeriesDataSet进行了清理重构
修复#
[BUG] 当没有外生变量传递给TFT时的Bug修复,由@XinyuWuu在https://github.com/sktime/pytorch-forecasting/pull/1667中提交
[BUG] 修复在Mac M1 MPS设备上训练TFT模型时的问题。张量的第0个元素不需要梯度且没有grad_fn,由@fnhirwa在https://github.com/sktime/pytorch-forecasting/pull/1725中提交
文档#
[文档] 修复了由 @xiaokongkong 在 https://github.com/sktime/pytorch-forecasting/pull/1719 中提交的拼写错误。
[文档] 由 @madprogramer 在 https://github.com/sktime/pytorch-forecasting/pull/1720 更新了关于
TimeSeriesDataSet.predict_mode的文档。[文档] 由 @julian-fong 提交的通用 PR 以改进文档,链接为 https://github.com/sktime/pytorch-forecasting/pull/1705
[文档] 在由 @fnhirwa 提供的
Temporal Fusion Transformer教程中,优化器ranger的正确参数,详见 https://github.com/sktime/pytorch-forecasting/pull/1724[文档] 由 @Luke-Chesley 在 https://github.com/sktime/pytorch-forecasting/pull/1516 中修复了拼写错误“monotone_constaints”。
[文档] 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1763 中对文档进行了小修复
[文档] 由 @PranavBhatP 在 https://github.com/sktime/pytorch-forecasting/pull/1762 中改进并添加了
tide模型到文档中
维护#
[维护] 更新代码检查:将行长度限制为88,添加
isort由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1740[MNT] 更新 nbeats/sub_modules.py 以通过 @d-schmitt 在 https://github.com/sktime/pytorch-forecasting/pull/1580 中移除张量创建的开销
[MNT] 临时修复了lint错误,以符合最近linting规则的更改,请参阅@fnhirwa在https://github.com/sktime/pytorch-forecasting/pull/1748中的#1749
[维护] 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1691 中支持 Python 3.13
所有贡献者#
@d-schmitt, @fkiraly, @fnhirwa, @julian-fong, @Luke-Chesley, @madprogramer, @PranavBhatP, @Sohaib-Ahmed21, @xiaokongkong, @XinyuWuu
v1.2.0#
维护更新,小功能添加和错误修复。
支持
numpy 2.Xpython 3.8的生命周期结束修复了文档构建
错误修复
依赖项变更#
pytorch-forecasting现在兼容numpy 2.X(核心依赖)optuna(调优软依赖)的边界已更新为>=3.1.0,<5.0.0
修复#
[BUG] 修复
AttributeError: 'ExperimentWriter' object has no attribute 'add_figure'由 @ewth 在 https://github.com/sktime/pytorch-forecasting/pull/1694
文档#
[文档] 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1660 中修复了变更日志中的拼写错误
[文档] 更新URL到
sktime组织,由@fkiraly在https://github.com/sktime/pytorch-forecasting/pull/1674中提交
维护#
[维护] 处理较低版本的pytorch的
mps backend,并修复由@fnhirwa在https://github.com/sktime/pytorch-forecasting/pull/1648中提出的macOS-latest运行器上的mps失败问题。[MNT] 更新了文档构建CI中的操作,由@fkiraly在https://github.com/sktime/pytorch-forecasting/pull/1673中提交
[MNT] 修复了
readthedocs.yml由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1676 中提交[MNT] 更新了CI和文档位置中对
main的引用,由@fkiraly在https://github.com/sktime/pytorch-forecasting/pull/1677中提交。[维护] 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1688 中提供的
show_versions工具[维护] 放宽
numpy的版本限制至numpy<3.0.0,由 @XinyuWuu 在 https://github.com/sktime/pytorch-forecasting/pull/1624 提交[维护] 修复由 @ewth 在 https://github.com/sktime/pytorch-forecasting/pull/1696 上提交的
pre-commit在main上的失败问题[维护] 将 linting 迁移到 ruff 由 @airookie17 在 https://github.com/sktime/pytorch-forecasting/pull/1692 1693
[维护]
ruff代码检查 - 允许使用 assert (S101) 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1701[维护]
ruff- 修复与列表相关的linting失败C416和C419,由@fkiraly在https://github.com/sktime/pytorch-forecasting/pull/1702中提交[维护] 由 @benHeid 在 https://github.com/sktime/pytorch-forecasting/pull/1704 中删除 poetry.lock
[维护] 修复
black没有extras依赖的问题,由 @fnhirwa 在 https://github.com/sktime/pytorch-forecasting/pull/1697 提交[维护] 由 @eugenio-mercuriali 在 https://github.com/sktime/pytorch-forecasting/pull/1699 中移除默认值中的可变对象
[维护] 由 @yarnabrina 在 https://github.com/sktime/pytorch-forecasting/pull/1712 中移除了所有PR的CI文档构建
[维护] Python 3.8 的终止支持由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1661 中提出
[维护] 移除
poetry.lock由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1651[维护] 更新
pre-commit要求从<4.0.0,>=3.2.0到>=3.2.0,<5.0.0由 @dependabot 在 https://github.com/sktime/pytorch-forecasting/pull/[维护] 更新 optuna 需求从
<4.0.0,>=3.1.0到>=3.1.0,<5.0.0由 @dependabot 在 https://github.com/sktime/pytorch-forecasting/pull/1715[维护] 由 @fkiraly 在 https://github.com/sktime/pytorch-forecasting/pull/1710 提交的 CODEOWNERS 文件
所有贡献者#
@airookie17, @benHeid, @eugenio-mercuriali, @ewth, @fkiraly, @fnhirwa, @XinyuWuu, @yarnabrina
v1.1.1#
修复了pyproject.toml中意外的包名称更改。
包名称现在已更正为 pytorch-forecasting。
v1.1.0#
维护更新扩大了兼容性范围并整合了依赖项:
支持 Python 3.11 和 3.12,增加了 CI 测试
支持MacOS,增加了CI测试
核心依赖已最小化为
numpy、torch、lightning、scipy、pandas和scikit-learn。软依赖项在软依赖项集中可用:
all_extras用于所有软依赖项,tuning用于基于optuna的优化。
依赖项变更#
以下内容不再是核心依赖项,并已更改为可选依赖项:
optuna,statsmodels,pytorch-optimize,matplotlib。依赖这些功能的环境需要更新以显式安装这些依赖项。optuna的边界已更新为optuna >=3.1.0,<4.0.0optuna-integrate现在是一个额外的软依赖,适用于optuna >=3.3.0的情况
弃用和移除#
从1.2.0版本开始,默认的优化器将从
"ranger"更改为"adam",以避免默认设置中的非torch依赖。pytorch-optimize优化器仍然可以使用。用户应明确设置优化器以继续使用"ranger"。从1.1.0版本开始,如果软依赖
matplotlib不存在,日志记录器将不会记录图形,但在这种情况下不会引发异常。要记录图形,请确保已安装matplotlib。
v1.0.0 更新至 pytorch 2.0 (2023年10月4日)#
重大变更#
升级到pytorch 2.0和lightning 2.0。这带来了一些变化,例如训练器的配置。请参阅lightning升级指南。对于PyTorch Forecasting,这尤其意味着如果您正在开发自己的模型,类方法
epoch_end已重命名为on_epoch_end,并且将model.summarize()替换为ModelSummary(model, max_depth=-1),Tuner(trainer)现在是它自己的类,因此trainer.tuner需要替换。(#1280)更改了
predict()接口返回命名元组 - 请参阅教程。
变更#
predict 方法现在使用 lightning predict 功能,并允许将结果写入磁盘 (#1280)。
已修复#
修复了当分位数为0.0和1.0时的鲁棒缩放器,即最小值和最大值(#1142)
v0.10.3 Poetry 更新 (2022年7月9日)#
已修复#
从依赖项中移除了pandoc,因为poetry安装存在问题(#1126)
为torchmetric添加了度量属性,从而提高了多GPU性能 (#1126)
新增#
“robust”编码器方法可以通过设置“center”、“lower”和“upper”分位数进行自定义(#1126)
v0.10.2 多变量网络 (2022年5月23日)#
新增#
DeepVar 网络 (#923)
为N-HiTS启用分位数损失 (#926)
MQF2损失(多元分位数损失)(#949)
非因果注意力机制用于TFT (#949)
Tweedie损失 (#949)
隐式分位数网络分布损失 (#995)
已修复#
修复学习比例计划 (#912)
修复解释时的TFT列表/元组问题 (#924)
如果不需要转换,允许EncoderNormalizer的编码器长度降至零 (#949)
修复聚合和CompositeMetric的重置问题 (#949)
已更改#
放弃对Python 3.6的支持,增加对3.10的支持 (#479)
重构了数据加载器采样 - 将采样器移动到 pytorch_forecasting.data.samplers 模块 (#479)
将编码器的转换格式从元组更改为字典 (#949)
贡献者#
jdb78
v0.10.1 错误修复 (2022年3月24日)#
已修复#
修复在正确的设备上创建张量的问题 (#908)
在使用MultiLoss计算梯度时进行修复 (#908)
贡献者#
jdb78
v0.10.0 添加N-HiTS网络(N-BEATS的继任者)(23/03/2022)#
新增#
新增了
N-HiTS网络,该网络持续击败了N-BEATS(#890)允许使用torchmetrics作为损失指标 (#776)
启用使用
max_length参数(#782)来限制数据历史记录以拟合EncoderNormalizer()更灵活的
MultiEmbedding(),具有方便的output_size和input_size属性 (#829)修复注意力机制的连接问题 (#902)
已修复#
修复通过github进行pip安装的问题 (#798)
贡献者#
jdb78
克里斯蒂
lukemerrick
Seon82
v0.9.2 维护版本 (2021年11月30日)#
新增#
增加了对运行
lightning.trainer.test的支持 (#759)
已修复#
修复了对
x_cont的注意力不集中突变 (#732)。与pytorch-lightning 1.5的兼容性 (#758)
贡献者#
eavae
丹尼尔·加夫尼
jdb78
v0.9.1 维护版本 (2021年9月26日)#
新增#
使用目标名称代替目标编号来记录指标 (#588)
优化器可以通过传递字符串、类或函数来初始化 (#602)
在基线模型中添加对多输出的支持 (#603)
在
TemporalFusionTransformer.optimize_hyperparameters中添加了Optuna修剪器作为可选参数 (#619)停止对Python 3.6的支持并开始支持Python 3.9 (#639)
已修复#
使用多个目标初始化TemporalFusionTransformer,但仅对一个目标进行损失计算 (#550)
添加了MLP预测的缺失转换 (#602)
修复了日志记录的超参数 (#688)
确保检测到MultiNormalizer的拟合状态(#681)
修复了TimeDistributedEmbeddingBag中的无限循环问题 (#672)
贡献者#
jdb78
TKlerx
厨师小马
eavae
L0Z1K
v0.9.0 简化API (2021年4月6日)#
重大变更#
从
TimeSeriesDataSet中移除了dropout_categoricals参数。 使用categorical_encoders=dict(代替 (#518)=NaNLabelEncoder(add_nan=True) 将
TimeSeriesDataSet的参数allow_missings重命名为allow_missing_timesteps(#518)透明处理转换。前向方法现在应该调用两个新方法(#518):
transform_output用于显式地将网络输出重新缩放到去归一化空间to_network_output用于创建一个类似字典的命名元组。这允许使用 PyTorch 的 JIT 跟踪模块。只有prediction仍然是必需的,这是主要的网络输出。
示例:
def forward(self, x): normalized_prediction = self.module(x) prediction = self.transform_output(prediction=normalized_prediction, target_scale=x["target_scale"]) return self.to_network_output(prediction=prediction)
已修复#
修复了在GPU上使用分布损失时的张量分位数预测问题 (#491)
修复了RecurrentNetwork.from_dataset方法的超参数更新问题 (#497)
新增#
改进了TimeSeriesDataSet输入参数的验证 (#518)
v0.8.5 通用分布损失(es) (2021年4月27日)#
新增#
允许多个损失和归一化器的列表 (#405)
如果归一化的比例小于
< 1e-7,则发出警告 (#429)允许在所有设置中使用分布损失 (#434)
已修复#
修复在预测时数据位于不同设备上的问题 (#402)
修复不可迭代的输出 (#404)
修复将数据移动到CPU以处理多个目标的问题 (#434)
贡献者#
jdb78
复杂性
v0.8.4 简单模型 (2021年7月3日)#
新增#
向时间序列数据集添加过滤功能 (#329)
在解码器上添加简单的模型,如LSTM、GRU和MLP (#380)
允许使用任何torch优化器,例如SGD (#380)
已修复#
将预测移动到CPU以避免内存不足 (#329)
正确确定
output_size用于使用TemporalFusionTransformer进行多目标预测 (#328)Tqdm autonotebook 修复以在 Jupyter 外部工作 (#338)
修复TensorboardLogger的yaml序列化问题 (#379)
贡献者#
jdb78
杰克·福西
美丽
v0.8.3 错误修复版本 (2021年1月31日)#
新增#
使调优训练器 kwargs 可覆盖 (#300)
允许向NaNEncoder添加类别 (#303)
已修复#
如果修改了数据,底层数据会被复制。原始数据不会被就地修改(#263)
允许在传递的图表上绘制NBEATS的解释 (#280)
修复绘图和日志记录解释的内存泄漏问题 (#311)
多目标情况下
predict()方法输出的正确形状 (#268)移除cloudpickle以允许从检查点加载在CPU设备上训练的GPU模型 (#314)
贡献者#
jdb78
kigawas
摘要
v0.8.2 输出变压器修复 (2021年12月1日)#
添加了默认关闭的缺失输出转换(#260)
v0.8.1 添加对滞后变量的支持 (2021年10月1日)#
新增#
在文档中添加“发布说明”部分 (#237)
启用任何模型的滞后变量使用 (#252)
已更改#
需要 PyTorch>=1.7 (#245)
已修复#
修复了当解码器长度在单个批次中变化时多目标预测的问题 (#249)
为之前错误排除的min_prediction_idx启用更长的子序列(#250)
贡献者#
jdb78
v0.8.0 添加多目标支持 (2021年3月1日)#
新增#
在TimeSeriesDataSet中添加对多个目标的支持(#199)并修改了教程。
时间融合变换器和DeepAR支持多目标 (#199)
检查TimeSeriesDataSet中的非有限值,并更好地验证scaler参数 (#220)
LSTM和GRU实现,可以处理零长度序列(#235)
用于实现自回归模型的助手 (#236)
已更改#
TimeSeriesDataSet的
y数据加载器是一个元组(目标,权重) - 可能会破坏模型或指标实现 大多数实现不会受到影响,因为BaseModel和MultiHorizonMetric中的钩子已被修改。(#199)
已修复#
修复了pytorch 1.7的自相关问题 (#220)
通过将python
set()替换为dict.fromkeys()(主要是TimeSeriesDataSet)来确保可重复性 (#221)确保如果实际值为0或1时,BetaDistributionLoss不会导致无限损失(#233)
修复了GroupNormalizer按组缩放的问题 (#223)
修复了在使用
min_prediction_idx时的TimeSeriesDataSet问题 (#226)
贡献者#
jdb78
贾斯汀·诺伊曼
重新初始化
rustyconover
v0.7.1 如何实现新架构的教程 (2020年7月12日)#
新增#
关于如何实现新架构的教程,涵盖基础和高级用例 (#188)
额外和改进的文档 - 特别是实现细节 (#188)
更改(对新模型实现有破坏性)#
将多个私有方法移至公共方法(特别是日志记录)(#188)
将
get_mask方法从BaseModel移动到utils模块 (#188)不使用标签来传达模型是训练还是验证,而是使用
self.training属性 (#188)使用
sample((n,))的 pytorch 分布而不是已弃用的sample_n(n)方法 (#188)
v0.7.0 使用编码器转换输入和输出的新API (2020年3月12日)#
新增#
用于概率模型(如DeepAR)的Beta分布损失(#160)
已更改#
重大更新:简化了在应用编码器前后如何应用转换(如logit或log)。默认包含一些转换,但可以传递一个包含正向和反向转换函数的元组以实现任意转换。这需要在目标归一化器中使用
transformation关键字,而不是例如log_scale(#185)
已修复#
如果
len(static_reals) > 0导致泄漏,则目标位置不正确 (#184)修复预测完全未见过的序列 (#172)
贡献者#
jdb78
杰克·福尔西
v0.6.1 错误修复和DeepAR改进 (2020年11月24日)#
新增#
使用GRU单元与DeepAR (#153)
已修复#
针对可变序列长度的GPU修复 (#169)
修复删除系列时警告的语法错误 (#167)
修复在验证或测试数据集中使用未知组ID时的问题 (#172)
在来自分叉的PR上运行非失败的CI(#166, #156)
文档#
改进了模型选择指南,并解释了TimeSeriesDataSet的工作原理 (#148)
阐明如何使用conda (#168)
贡献者#
jdb78
杰克·福塞伊
v0.6.0 添加 DeepAR (2020年10月11日)#
新增#
亚马逊的DeepAR (#115)
PyTorch Forecasting中的第一个自回归模型
分布损失:正态分布、负二项分布和对数正态分布
目前缺失:处理滞后变量和教程(计划在0.6.1版本中实现)
改进了关于TimeSeriesDataSet的文档以及如何实现新网络的说明 (#145)
已更改#
编码器的内部结构以及它们如何存储中心和缩放比例 (#115)
已修复#
更新到PyTorch 1.7和PyTorch Lightning 1.0.5,这些版本在CUDA处理和优化器(PyTorch Forecasting Ranger版本)方面带来了重大变化(#143, #137, #115)
贡献者#
jdb78
杰克·福尔西
v0.5.3 错误修复 (2020年10月31日)#
修复#
修复了超参数详细程度仅控制部分输出的问题 (#118)
修复了当从
TimeSeriesDataSet中.get_parameters()偶尔失败的错误 (#117)移除时间融合变压器中通过LSTM的冗余双通道 (#125)
防止安装pytorch-lightning 1.0.4,因为它会破坏代码 (#127)
防止就地修改模型默认值 (#112)
v0.5.2 修复了解释问题并增强了对超参数详细程度的控制 (18/10/2020)#
新增#
使用optuna进行超参数调优的教程
控制超参数调优的详细程度
修复#
当不同批次具有不同的最大解码器长度时,解释错误
修复一些拼写错误(不更改用户API)
v0.5.1 PyTorch Lightning 1.0 兼容性 (2020年10月14日)#
此版本只有一个目的:允许使用PyTorch Lightning 1.0 - 所有测试均已通过。
v0.5.0 PyTorch Lightning 0.10 兼容性和分类 (2020年12月10日)#
新增#
对
TimeSeriesDataSet输入的额外检查 - 现在会标记由于高min_encoder_length而丢失的序列,并确保参数为整数启用分类 - 只需将
TimeSeriesDataSet中的目标更改为非浮点变量,使用CrossEntropy指标进行优化,并输出您想要预测的任意数量的类别
已更改#
确保与PyTorch Lightning 0.10兼容
使用
LearningRateMonitor而不是LearningRateLogger在训练器中使用
EarlyStopping回调,而不是early_stopping参数更新度量系统
update()和compute()方法在教程和示例中使用
Tuner(trainer).lr_find()而不是trainer.lr_find()
将poetry更新到1.1.0
v0.4.1 各种修复模型和数据 (2020年1月10日)#
修复#
模型#
在TFT解码器中移除了对当前数据点的注意力,以更好地泛化各种序列长度
允许恢复optuna超参数调优研究
数据#
修复了在TimeSeriesDataSet中添加为特征时
encoder_length命名和计算不一致的问题
贡献者#
jdb78
v0.4.0 指标、性能和子序列检测 (28/09/2020)#
新增#
模型#
N-BEATS网络的反向预测损失,用于更好的正则化
将logging_metrics作为模型的显式参数
指标#
MASE(平均绝对缩放误差)指标用于训练和报告
指标可以组合,例如
0.3* metric1 + 0.7 * metric2在所有样本上计算的平均预测的聚合指标,以减少平均偏差
数据#
提高了解析缺失数据点的速度。对于100万个数据点,大约需要2秒。如果安装了
numba,100万个数据点只需0.2秒。批量时间同步样本:确保解码器中每批样本具有相同的时间索引
重大变更#
改进了TimeSeriesDataSet中的子序列检测,确保在每个时间点上存在一个开始和结束的子序列。
修复
min_encoder_length = 0被忽略并处理为min_encoder_length = max_encoder_length
贡献者#
jdb78
dehoyosb
v0.3.1 更多测试和更好的文档 (2020年9月13日)#
更多测试驱动覆盖率至约90%
时间融合变压器的性能调整
使用排序重新格式化
改进文档 - 特别是扩展关于超参数调优的内容
已修复#
修复PoissonLoss分位数计算
修复N-Beats可视化
v0.3.0 更多测试和解释功能 (2020年2月9日)#
新增#
计算变量的部分依赖
改进的文档 - 特别是增加了FAQ部分和改进的教程
示例和教程的数据现在可以下载了。不再需要克隆仓库。
从
pytorch_ranger包中添加了Ranger优化器并修复了其警告(作为conda包发布准备工作的一部分)如果可用,使用GPU进行测试,作为CI中GPU测试准备的一部分
变更#
重大更新:修复了TimeSeriesDataSet中“add_decoder_length”拼写错误为“add_encoder_length”的问题
Bug修复#
通过切片变量修复预测与实际值的绘图
v0.2.4 修复预测日志记录中的边缘情况 (26/08/2020)#
已修复#
修复了在decoder_length == 1情况下预测未正确记录的bug。
新增#
在文档页面添加网站图标
v0.2.3 使pip可以从主分支安装 (23/08/2020)#
更新构建系统要求,以便在使用pip install git+https://github.com/jdb78/pytorch-forecasting安装时能够正确解析。
v0.2.2 改进测试 (23/08/2020)#
为MacOS添加测试
自动发布
覆盖率报告
v0.2.1 补丁发布 (2020年8月23日)#
此版本提高了代码的鲁棒性。
修复代码中的错误,特别是
确保代码在GPU上运行
为模型、数据集和标准化器添加测试
使用GitHub Actions进行测试(GPU上的测试仍然缺失)
通过改进文档字符串和添加两个教程来扩展文档。
改进 TimeSeriesDataSet 的默认参数以避免意外
v0.2.0 小版本发布 (2020年8月16日)#
新增#
数据和模型的基本测试(主要是集成测试)
自动目标归一化
改进了时间融合变压器的可视化和日志记录
时间融合变压器的模型错误修复和性能改进
修改#
指标被简化为计算损失。目标转换由新的目标转换器完成。