You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

复现ChemicalX教程示例时遇AttributeError: Molecule无dummy_atom属性

问题与解决方案

问题描述

复现ChemicalX官方教程示例时触发错误:

AttributeError: type object 'Molecule' has no attribute 'dummy_atom'

已确认torchdrug的Molecule类确实不存在dummy_atom属性,但无法自行解决。相关代码如下:

from chemicalx.data import DrugCombDB, BatchGenerator
import torch
from chemicalx.models import DeepSynergy

loader = DrugCombDB()

context_set = loader.get_context_features()
drug_set = loader.get_drug_features()
triples = loader.get_labeled_triples()

train, test = triples.train_test_split(train_size=0.5)

generator = BatchGenerator(batch_size=1024,
                           context_features=True,
                           drug_features=True,
                           drug_molecules=False,
                           context_feature_set=context_set,
                           drug_feature_set=drug_set,
                           labeled_triples=train)

model = DeepSynergy(context_channels=112,
                    drug_channels=256)

optimizer = torch.optim.Adam(model.parameters())
model.train()
loss = torch.nn.BCELoss()

for batch in generator:
    optimizer.zero_grad()
    prediction = model(batch.context_features,
                       batch.drug_features_left,
                       batch.drug_features_right)
    loss_value = loss(prediction, batch.labels)
    loss_value.backward()
    optimizer.step()

原因分析

该错误源于ChemicalX与torchdrug版本不兼容:教程编写时依赖的torchdrug版本包含Molecule.dummy_atom属性,但后续torchdrug版本移除了该属性,当前使用的ChemicalX代码仍在调用这个已被移除的属性。

解决步骤

方法1:安装兼容版本的torchdrug(推荐)

执行以下命令安装与ChemicalX兼容的torchdrug旧版本:

pip install torchdrug==0.1.2

安装完成后重新运行代码即可解决该错误。

方法2:修改ChemicalX源码(进阶)

若不想降级torchdrug,可找到ChemicalX中调用Molecule.dummy_atom的代码位置,替换为torchdrug中替代的实现逻辑(例如手动构造dummy原子的特征张量),但此方法需要对库源码有一定了解,不推荐新手使用。

内容的提问来源于stack exchange,提问作者harsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 09:20:33