[ PROMPT_NODE_27486 ]
core_concepts
[ SKILL_DOCUMENTATION ]
# 核心概念与技术细节
## 概述
本参考文档涵盖了 TorchDrug 的基础架构、设计原则和技术实现细节。
## 架构理念
### 模块化设计
TorchDrug 将关注点分离为不同的模块:
1. **表示模型** (models.py):将图编码为嵌入向量
2. **任务定义** (tasks.py):定义学习目标和评估方式
3. **数据处理** (data.py, datasets.py):图结构和数据集
4. **核心组件** (core.py):基类和工具
**优势:**
- 在不同任务间复用表示
- 灵活组合组件
- 便于实验和原型设计
- 关注点清晰
### 可配置系统
所有组件均继承自 `core.Configurable`:
- 序列化为配置字典
- 从配置中重建
- 保存和加载完整工作流
- 可重复的实验
## 核心组件
### core.Configurable
所有 TorchDrug 组件的基类。
**关键方法:**
- `config_dict()`:序列化为字典
- `load_config_dict(config)`:从字典加载
- `save(file)`:保存到文件
- `load(file)`:从文件加载
**示例:**
python
from torchdrug import core, models
model = models.GIN(input_dim=10, hidden_dims=[256, 256])
# 保存配置
config = model.config_dict()
# {'class': 'GIN', 'input_dim': 10, 'hidden_dims': [256, 256], ...}
# 重建模型
model2 = core.Configurable.load_config_dict(config)
### core.Registry
用于注册模型、任务和数据集的装饰器。
**用法:**
python
from torchdrug import core as core_td
@core_td.register("models.CustomModel")
class CustomModel(nn.Module, core_td.Configurable):
def __init__(self, input_dim, hidden_dim):
super().__init__()
self.linear = nn.Linear(input_dim, hidden_dim)
def forward(self, graph, input, all_loss, metric):
# 模型实现
pass
**优势:**
- 模型可自动序列化
- 基于字符串的模型指定
- 易于查找和实例化模型
## 数据结构
### Graph
表示分子或蛋白质图的核心数据结构。
**属性:**
- `num_node`: 节点数量
- `num_edge`: 边数量
- `node_feature`: 节点特征张量 [num_node, feature_dim]
- `edge_feature`: 边特征张量 [num_edge, feature_dim]
- `edge_list`: 边连接 [num_edge, 2 或 3]
- `num_relation`: 边类型数量(用于多关系图)
**方法:**
- `