概览
DimeNet 是一个研究仓库,包含用于分子图的 DimeNet 和 DimeNet++ 神经网络模型参考实现。该仓库配套论文《分子图的方向性消息传递》和《用于非平衡分子的快速且不确定性感知的方向性消息传递》。它的工作流用途是模型训练和分子性质预测,而非分子数据库访问或托管预测服务。README 建议优先使用 DimeNet++,而不是原始模型。
这些模型在方向性消息传递计算中使用分子图信息,以及距离和角度。文档列出的 QM9 目标包括 alpha、R2、U0、U、H、G、Cv、Mu、HOMO、LUMO 和 ZPVE。来源摘录未说明完整的输入模式或预测文件格式。训练通过 train.ipynb 进行,而 predict.ipynb 使用训练好的模型生成测试集预测。pretrained 中提供了两组预训练模型,train_seml.py 支持使用 Sacred 和 SEML 进行集群训练。
该仓库使用 TensorFlow 2,并记录了与原始 TensorFlow 1 实现相比,在训练和初始化方面的差异。解读结果时需要注意列出的问题:qm9_eV.npz 中存在分子筛选的差一错误、距离和基函数层差异、嵌入层差异,以及影响较旧 TensorFlow AddOns 版本的检查点保存问题。README 还指出了 MD17 基准比较不匹配的问题。对于能量和力预测,作者转而推荐 GemNet;因此,此条目应被视为有文档说明的研究实现,而非经过独立验证的科学工作流。
主要功能
- 包含用于分子图方向性消息传递的 DimeNet 和 DimeNet++ 参考实现。
- 提供用于模型训练的 `train.ipynb`,以及使用训练模型进行测试集预测的 `predict.ipynb`。
- 在 `pretrained` 文件夹中提供两组预训练模型,供实验使用。
- 包含使用 Sacred 和 SEML 进行集群训练的 `train_seml.py`。
- 记录了 TensorFlow 2 实现中针对不同目标的输出层初始化方式。
- 列出了与结果解读或复现相关的已知数据集、几何、基函数层、嵌入层和检查点问题。
使用场景
- 评估用途:使用训练和预测笔记本评估 QM9 分子性质预测工作流,并将已记录的分子筛选错误纳入考量。
- 评估用途:在受控实验设置中比较 DimeNet 和 DimeNet++,但不要假定已发表的结果可直接推广到新数据集。
- 评估用途:在投入资源重新训练之前,检查所提供的预训练模型。
- 评估用途:评估 `train_seml.py` 是否适合作为使用 Sacred 和 SEML 开展集群分子模型实验的起点。
使用方式
- 阅读官方 README,以选择 DimeNet 或 DimeNet++。README 推荐 DimeNet++,并建议能量和力预测用户考虑 GemNet。
- 查看 setup.py 中列出的依赖项,包括 TensorFlow、TensorFlow AddOns、NumPy、SciPy 和 SymPy。请将其视为声明的需求,而非与当前环境兼容的证据。
- 检查仓库中的
train.ipynb、predict.ipynb和pretrained文件夹。在尝试训练或预测之前,确认预期的数据表示形式和目标选择。 - 查看 README 中的已知问题以及 QM9 筛选讨论。对于评估用途,请将数据集来源与处理记录、初始化选择及任何修正与上游结果分别记录。
- 如需集群训练,请检查
train_seml.py和链接的 SEML 项目。使用或再分发前,请查看代码许可。